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?