932 浏览
0

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 的下方,怎么运行?