I Am trying to implement the following order logic:

  • Once a stop buy price above the current price is reached, buy 100 of a particular security
  • Once the stop buy order has been triggered
    • trigger a stop loss order
    • trigger a profit target order 1
    • trigger a profit target order 2

The following pseudocode represents what I have come up with, so far:

def Initialize(self): self.symbol = 'SPY' self.stopBuyPrice = None self.stopLossPrice = None self.profitTarget1 = None self.profitTarget = None def OnData(self, data): self.stopBuyPrice = data[self.symbol].CLose + 3 self.stopLossPrice = self.stopBuyPrice - 10 self.profitTarget1 = self.stopBuyPrice + 10 self.profitTarget2 = self.stopBuyPrice + 20 #Buy 100 once stopBuyPrice is reached self.ticket = # ? def OnOrderEvent(self, orderEvent): if self.ticket.OrderId == orderEvent.OrderId and orderEvent.OrderStatus.Filled: #Enter stop loss order self.StopMarketOrder(self.symbol,100,self.stopLossPrice) #Enter limit order 1 self.LimitOrder(self.symbol,50,self.profitTarget1) #Enter limit order 2 self.LimitOrder(self.symbol,50,self.profitTarget2)

 

Is this the correct way to do this and how can I realize a stop buy order, i.e. an order that should be triggered once the security price reaches a fixed value above the current price?

Author