[关闭]
@Channelchan 2018-11-28T17:51:04.000000Z 字数 1237 阅读 63397

止盈止损-时间止损

1、 止损后停止交易时间(stopLossControl)

2、 最长持有时间设置(holdHour)

止损后停止交易时间

1、 设置停止交易时间

2、 记录平仓时间

3、触发止损条件后,设置停止为1

4、 计算平仓时间与当下时间的差,设置停止归0

  1. # 设置参数
  2. stopControlTime = 3
  3. # 设置变量
  4. self.closeTime = {s: 0 for s in self.symbolList}
  5. self.stopLossControl = {s: 0 for s in self.symbolList}
  6. # 判断时间止损条件
  7. if self.closeTime[symbol]:
  8. if (bar.datetime - self.closeTime[symbol]) >= timedelta(hours=self.stopControlTime):
  9. self.stopLossControl[symbol] = 0
  10. # 记录平仓时间
  11. def onTrade(self, trade):
  12. symbol = trade.vtSymbol
  13. if trade.offset == OFFSET_CLOSE:
  14. self.closeTime[symbol] = trade.tradeTime

最长持有时间设置(holdHour)

  1. 设置最大持有时间
  2. 记录开仓时间
  3. 当有开仓是检查持有时间
  4. 持有时间超过后平仓出场
  5. 初始化开仓时间,设置为None
  1. # 设置参数
  2. holdHour = 10
  3. # 设置变量
  4. self.openTime = {s: None for s in self.symbolList}
  5. # 计算持有时间
  6. if self.openTime[symbol]:
  7. if ((bar.datetime-self.openTime[symbol])>=timedelta(hours=self.holdHour)):
  8. if self.posDict[symbol + "_LONG"] > 0:
  9. self.sell(symbol, bar.close * 0.98, self.posDict[symbol + '_LONG'])
  10. self.writeCtaLog('afterOpenOrder_Sell')
  11. self.stopLossControl[symbol] = 1
  12. self.openTime[symbol] = None
  13. elif self.posDict[symbol + "_SHORT"] > 0:
  14. self.cover(symbol, bar.close * 1.015, self.posDict[symbol + "_SHORT"])
  15. self.writeCtaLog('afterOpenOrder_Cover')
  16. self.stopLossControl[symbol] = -1
  17. self.openTime[symbol] = None
  18. # 记录开仓时间
  19. def onTrade(self, trade):
  20. symbol = trade.vtSymbol
  21. if trade.offset == OFFSET_OPEN:
  22. self.openTime[symbol] = trade.tradeTime
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注