from tqsdk import TqApi,TqAuth,tafunc,TqKq,TargetPosTask from tqsdk.ta import MA import time #初始化 #TqKq() 模拟交易的登录站点 #TqAuth 快期的账号 tq_kq = TqKq() api = TqApi(account=tq_kq, auth=TqAuth("forevertc","XXXXXX")) # 获取豆粕2305 10秒的K线 klines = api.get_kline_serial("DCE.i2305", 10) # 获取豆粕2305实时行情数据 quote = api.get_quote("DCE.M2305") print (quote.last_price, quote.volume) while True: api.wait_update() print (quote.datetime, quote.last_price) #初始化下单接口 target_pos = TargetPosTask(api,"DCE.M2305") #大循环 while True : print (quote.close) #print(klines.close) MA5 = tafunc .ma(klines.close, 5) MA10 = tafunc.ma(klines.close, 10) print(MA5[-20:]) print(MA10[-20:]) time.sleep(1000) #等待API有新的触发 比如行情触发、K线触发、交易触发 api.wait_update() #K线数据上的时间变化->有了新的K线 if api.is_changing(klines.iloc[-1], "datetime"): #[:-1] 意思是取第一个数到倒数第二个数 MA5 = tafunc.ma(klines.close[:-1], 5) MA10 = tafunc.ma(klines.close[:-1], 10) if list(tafunc.crossup(MA5,MA10))[-1]: print('上穿做多',list(MA5[-1],list(MA10)[-1])) target_pos.set_target_volume(1) if list(tafunc.crsoodown(MA5,MA10))[-1]: print('下穿做空',list(MA5)[-1],list(MA10)[-1]) target_pos.set_target_volume(-1)
想写一个豆粕2305的双均线模拟交易程序进行模拟盘,但运行不成功,请各位走过路过的大神帮忙看一看,修改一下,感谢感谢
juyangyang93 已回答的问题 2023年2月21日
1. 不成功的出错信息没有贴
2. 账号密码直接发出来了
3. 大段的逻辑代码放在 while true 的下方,怎么运行?