2025-06-29 12:03:43 +08:00
|
|
|
|
from datetime import date
|
2025-07-10 15:07:31 +08:00
|
|
|
|
import pandas as pd
|
|
|
|
|
|
from tqsdk import TqApi, TqAuth, TqBacktest, TargetPosTask, TqKq, TqSim
|
2025-06-22 23:03:50 +08:00
|
|
|
|
|
2025-06-29 12:03:43 +08:00
|
|
|
|
'''
|
|
|
|
|
|
如果当前价格大于5分钟K线的MA15则开多仓
|
|
|
|
|
|
如果小于则平仓
|
|
|
|
|
|
回测从 2018-05-01 到 2018-10-01
|
|
|
|
|
|
'''
|
|
|
|
|
|
# 在创建 api 实例时传入 TqBacktest 就会进入回测模式
|
2025-07-10 15:07:31 +08:00
|
|
|
|
api = TqApi(auth=TqAuth("emanresu", "dfgvfgdfgg"))
|
2025-06-29 12:03:43 +08:00
|
|
|
|
# 获得 m1901 5分钟K线的引用
|
2025-07-10 15:07:31 +08:00
|
|
|
|
klines = api.get_kline_serial("KQ.m@CZCE.MA", 60 * 60)
|
2025-06-29 12:03:43 +08:00
|
|
|
|
# 创建 m1901 的目标持仓 task,该 task 负责调整 m1901 的仓位到指定的目标仓位
|
2025-07-10 15:07:31 +08:00
|
|
|
|
target_pos = TargetPosTask(api, "KQ.m@CZCE.MA")
|
|
|
|
|
|
|
|
|
|
|
|
BEIJING_TZ = "Asia/Shanghai"
|
|
|
|
|
|
print('-----------------')
|
|
|
|
|
|
print(pd.to_datetime(klines.iloc[-1].datetime, unit="ns", utc=True).tz_convert(BEIJING_TZ))
|
|
|
|
|
|
print(pd.to_datetime(klines.iloc[-2].datetime, unit="ns", utc=True).tz_convert(BEIJING_TZ))
|
|
|
|
|
|
|
|
|
|
|
|
print(klines.iloc[-1])
|
|
|
|
|
|
print(klines.iloc[-2])
|
2025-06-22 23:03:50 +08:00
|
|
|
|
|
2025-06-29 12:03:43 +08:00
|
|
|
|
while True:
|
|
|
|
|
|
api.wait_update()
|
2025-07-10 15:07:31 +08:00
|
|
|
|
|
|
|
|
|
|
if api.is_changing(klines.iloc[-1], 'datetime'):
|
|
|
|
|
|
|
|
|
|
|
|
print(f'---------{pd.to_datetime(klines.iloc[-1].datetime, unit="ns", utc=True).tz_convert(BEIJING_TZ)}--------')
|
|
|
|
|
|
print(klines.iloc[-1])
|
|
|
|
|
|
print(klines.iloc[-2])
|
|
|
|
|
|
# target_pos.set_target_volume(5)
|