@Channelchan
2018-11-28T17:51:04.000000Z
字数 1237
阅读 63397
1、 止损后停止交易时间(stopLossControl)
2、 最长持有时间设置(holdHour)
1、 设置停止交易时间
2、 记录平仓时间
3、触发止损条件后,设置停止为1
4、 计算平仓时间与当下时间的差,设置停止归0
# 设置参数
stopControlTime = 3
# 设置变量
self.closeTime = {s: 0 for s in self.symbolList}
self.stopLossControl = {s: 0 for s in self.symbolList}
# 判断时间止损条件
if self.closeTime[symbol]:
if (bar.datetime - self.closeTime[symbol]) >= timedelta(hours=self.stopControlTime):
self.stopLossControl[symbol] = 0
# 记录平仓时间
def onTrade(self, trade):
symbol = trade.vtSymbol
if trade.offset == OFFSET_CLOSE:
self.closeTime[symbol] = trade.tradeTime
# 设置参数
holdHour = 10
# 设置变量
self.openTime = {s: None for s in self.symbolList}
# 计算持有时间
if self.openTime[symbol]:
if ((bar.datetime-self.openTime[symbol])>=timedelta(hours=self.holdHour)):
if self.posDict[symbol + "_LONG"] > 0:
self.sell(symbol, bar.close * 0.98, self.posDict[symbol + '_LONG'])
self.writeCtaLog('afterOpenOrder_Sell')
self.stopLossControl[symbol] = 1
self.openTime[symbol] = None
elif self.posDict[symbol + "_SHORT"] > 0:
self.cover(symbol, bar.close * 1.015, self.posDict[symbol + "_SHORT"])
self.writeCtaLog('afterOpenOrder_Cover')
self.stopLossControl[symbol] = -1
self.openTime[symbol] = None
# 记录开仓时间
def onTrade(self, trade):
symbol = trade.vtSymbol
if trade.offset == OFFSET_OPEN:
self.openTime[symbol] = trade.tradeTime