I'm already aware of how to impliment a stop loss in Quanconnect. But i'd like a better way to impliment a trailing stop loss. 

One way I did it, which I don't prefer is having a function that counts the number of days a security is in my holdings and then using that number to decide how many days to look back in history I want to check to compare if the price has dropped x % less than the maximum price in history. 

 

For example:

 

The fucntion below keeps track of number of days in portfolio.

def position_check(self):
        for stock in self.symbols:
            shares_held = float(self.Portfolio[stock].Quantity)
            if shares_held:
                self.days_in_portfolio[stock]+=1
            else:
                self.days_in_portfolio[stock]=0

 

The funtion below checks to see if the current price is x % less than the price since I bought the security:

 

def stop_loss(self,stock):
        hist = self.History([stock],self.days_in_portfolio[stock],Resolution.Daily)
        curr_price = float(self.Portfolio[stock].Price)
        if 'close' not in hist:
            return 0
        prev_max =hist['close'].max()

trail_stop= ((curr_price - prev_max) /prev_max) <= -self.stop_loss_value

return trail_stop

 

Thanks for any help in advance. :)

Author