| 
					
				 | 
			
			
				@@ -26,6 +26,10 @@ func (strategy qqq) Interval() uint8 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (strategy qqq) EnableStopLoss() bool { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func (strategy qqq) PositionSymbols() map[sentio.Side]string { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return map[sentio.Side]string{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		sentio.BASE:  "QQQ", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -61,6 +65,10 @@ func (strategy qqq) Handle(turn *sentio.Turn, market sentio.Market, rs sentio.Ri 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return util.CloseAllOrders(market, strategy) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if quotes, err = market.Quotes(); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// retrieve running orders 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if orders, err = market.Orders(sentio.OrderListCriteria{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Status:  util.ToPtr("open"), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -69,7 +77,7 @@ func (strategy qqq) Handle(turn *sentio.Turn, market sentio.Market, rs sentio.Ri 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	// update stoplosses or close running orders 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// update StopLosses or close running orders 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var hasClosedOrders = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	for i := range orders { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -102,7 +110,16 @@ func (strategy qqq) Handle(turn *sentio.Turn, market sentio.Market, rs sentio.Ri 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if err = market.UpdateOrder(orders[i].GetId(), rs); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		opts := sentio.OrderUpdateOptions{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			TakeProfit: util.ToPtr(rs.TakeProfit(orders[i].GetSymbol(), quotes[orders[i].GetSymbol()].BidPrice)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			StopLoss:   util.ToPtr(rs.StopLoss(orders[i].GetSymbol(), quotes[orders[i].GetSymbol()].BidPrice)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if !strategy.EnableStopLoss() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			opts.StopLoss = nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if err = market.UpdateOrder(orders[i].GetId(), opts); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -117,17 +134,15 @@ func (strategy qqq) Handle(turn *sentio.Turn, market sentio.Market, rs sentio.Ri 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if quotes, err = market.Quotes(); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var opts sentio.OrderOptions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var opts sentio.OrderCreateOptions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if opts, err = util.NewOrder(market, strategy, turn.Action, quotes, rs); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// Disable StopLoss 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	opts.StopLoss = nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !strategy.EnableStopLoss() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		opts.StopLoss = nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return market.CreateOrder(opts) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |