在测试集上,
# begindate='2019-03-24 9:00:00'#测试集
# enddate='2022-03-14 22:45:00'
然后用自己写回测平台进行回测验证:
时间用训练集和测试集一起
begindate='2016-01-05 21:00:00'#train+testenddate='2022-03-14 22:45:00'
open=self.data[:,1].astype('float64') high = self.data[:, 2].astype('float64') low = self.data[:, 3].astype('float64') close = self.data[:, 4].astype('float64') volume=self.data[:,5].astype('float64') willr=ta.WILLR(close,low,close,self.pram_dict['pram1']) stddev=ta.STDDEV(willr,self.pram_dict['pram2']) self.data=np.c_[self.data,stddev] # df=pd.DataFrame(self.data) # df.iloc[:,-1].plot() def backtest(self, i): alpha = self.data[:, 6][i - 100:i] percentage_down = 0.2 * (alpha.max() - alpha.min()) + alpha.min() percentage_up = 0.8 * (alpha.max() - alpha.min()) + alpha.min() if self.data[i][6] > percentage_up and self.MarketPosition != 1: # 开多 self.buy(i) if self.data[i][6] < percentage_down and self.MarketPosition != -1: self.sellshort(i)
看看是否有参数高原
最后基于天勤的开源期货交易系统--TQPY
去实现模拟交易或者实盘交易
def get_alpha(self,klines): volume=klines.volume.values low=klines.low.values close=klines.close.values open=klines.open.values high=klines.high.values self.willr=ta.WILLR(close,low,close, 39) self.stddev=ta.STDDEV(self.self.willr,57) def stra(self): self.get_alpha(self.klines) self.klines['correl'] = self.stddev self.klines['correl.board'] = "B2" # 设置附图: 可以设置任意字符串,同一字符串表示同一副图 self.klines["correl.color"] = "green" self.alpha = self.stddev[-(100+1):-1] self.percentage_down = 0.2 * (self.alpha.max() - self.alpha.min()) + self.alpha.min() self.percentage_up = 0.8 * (self.alpha.max() - self.alpha.min()) + self.alpha.min() while True: self.api.wait_update() if self.api.is_changing(self.klines.iloc[-1], "datetime"): # 判断开仓条件 if self.MarketPosition != 1: # 如果最新价大于上轨,K线上穿上轨,开多仓 if self.stddev[-1]>self.percentage_up: print(self.stra_name + " 开多仓") self.buy() if self.MarketPosition !=-1: # 如果最新价大于上轨,K线上穿上轨,开多仓 if self.stddev[-1]<self.percentage_down : print(self.stra_name + " 开空仓") self.sellshort() self.api.close()