|
@@ -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)
|
|
|
}
|