上期回顾:今日小试牛刀,明日大刀阔斧-----Backtrader胜率92%策略:自定义Keltner Channel参数,轻松翻倍 下期计划: 香浓是实盘的根基之一 手操实盘 我们从海龟交易法的角度来理解KC 《海龟》一书建议,如果你们不知道止损该放哪,那么统一放2ATR的地方。 所以KC通道的核心就是: 以均线为价格的真实体现,以海龟交易法的ATR认知为开闭仓条件 我们的交易策略 同KC合并: 以MACD前高为价格为压力点。 以2ATR为交易开关。 开始思虑合并: 1,做正确的事比正确的做事重要 2,我们设定一个阈值(ATR) 3,当突破此阈值时,买入 1,我们将一个MACD周期作为一个裸K 2,确定阈值, 3,选取参考线 按照计划sma21日线是最标准的,作为备用选项 按照作者的opt结果看以开盘价最有实战价值。 代码结果:
开关仓条件: def next(self): dt, dn = self.datetime.date(), self.data0._name # print(dt, dn)
# 当出现shh时开始产生信号 if self.mh[0] > 0: # 价格上穿shh self.buy_signal_chh = (self.dataclose[0] > self.shh[0]) & ( self.dataclose[-1] < self.shh[0]) # 错甲 self.buy_signal_hl = self.sll[0] > self.shh[-1] if not self.position: if self.current_holding_days != dt: if self.buy_signal_hl == 1: # print('1', dt) if self.buy_signal_chh == 1: # print('2', dt) self.buy(size=(self.broker.getcash() / self.data.close)*0.97) # 买入 self.current_holding_days = dt self.holding_days = 0 else: if self.current_holding_days != dt: if self.get_holding_days != dt: if self.data.open[0] < self.data.open[-1]: self.close() # 卖出 # self.current_holding_days = dt 今日卖出后空仓, # self.current_holding_days = 0 今日卖出后开仓 self.current_holding_days = dt self.holding_days = 0 self.get_holding_days = dt elif self.buy_signal_chh == 1: self.close() # 卖出 self.current_holding_days = dt self.holding_days = 0 self.get_holding_days = dt 当今日的阈值范围底部,高于昨日阈值范围顶部时,我们认为此时动量充沛,开仓,第二如果继续冲破阈值,我们认为可以赢取中间差价: 第二日,低于昨日开盘价开盘,我们认为无动量,果断止损。 结果分析: 暴涨的准确控位: 错误一 属于欲扬先抑可将设置:
来规避这种错误。 错误二: 前一日有炸板行为的应该摒除。 代码略。 错误三: 长期横盘后假性突破误判。 1,试探性突破可以作为二次突破的基石,当价格突破假性突破点时为真突破,做中线操作。 2,可引入动量指标滤波。 在此将backtrader示例指标加入。 class Momentum(bt.ind.PeriodN): lines = ('trend',) params = dict(period=50)
def next(self): returns = np.log(self.data.get(size=self.p.period)) x = np.arange(len(returns)) slope, _, rvalue, _, _ = sp.stats.linregress(x, returns) annualized = (1 + slope) ** 252 self.lines.trend[0] = annualized * (rvalue ** 2)
动动小手,一起实盘飞 回复 TK 领取源码: 您的小手指是我最大的动力 |
|
来自: 立志德美 > 《龙女心经.女博士》