from datetime import date from tqsdk import TqApi, TqAuth, TqBacktest, TargetPosTask, BacktestFinished, TqSim import talib as ta import pandas as pd import datetime # 创建模拟账户 acc = TqSim() # 进行回测的初始化 api = TqApi(account=acc, backtest=TqBacktest(start_dt=date(2022, 3, 1), end_dt=date(2022, 5, 21)), auth=TqAuth("***", "***"), web_gui=":9876") klines = api.get_kline_serial("DCE.p2206", 5*60, data_length=100) # 创建 m1901 的目标持仓 task,该 task 负责调整 m1901 的仓位到指定的目标仓位 target_pos = TargetPosTask(api, "DCE.p2206") while True: # if api.is_changing(klines): ma_short = ta.MA(klines['close'], timeperiod=5) klines['ma_short'] = ma_short # klines['ma_short.board'] = "MA_short" ma_long = ta.MA(klines['close'], timeperiod=20) klines['ma_long'] = ma_long # klines['ma_long.board'] = "MA_long" klines['ma_long.color'] = "green" a = klines.set_index("datetime") a.index = pd.to_datetime(a.index/1000000000, unit='s') if ma_short.iloc[-1] > ma_long.iloc[-1]: if acc.get_position("DCE.p2206").pos_long != 500: # 设置目标持仓为多头5手 target_pos.set_target_volume(500) elif ma_short.iloc[-1] < ma_long.iloc[-1]: # 设置目标持仓为空仓 if acc.get_position("DCE.p2206").pos_short != 5: target_pos.set_target_volume(-500) api.wait_update()
李思恒 已回答的问题 2022年5月26日
我试了下我们自己的ma函数是没问题的,talib的不清楚,应该也是可以的,你可以先用我们的ma试试代码给你贴一下
qizheng 发表新评论 2022年6月14日
找到问题了,不要用python10
我也遇到这个问题,不用python10是什么意思,怎么解决啊
我试了你的代码,还是不行,我是mac系统,是不是只有mac有这个问题,涉及到权限什么的。