weixin_45503087 2019-08-07 23:31 采纳率: 0%
浏览 1129
已结题

策略回测时,如何写一个函数判断某一个时刻在每天的交易时段内(比如9点半至3点),不涉及年月日的前提下?

from tqsdk import TqApi, TqSim, TargetPosTask, BacktestFinished, TqBacktest
from tqsdk.tafunc import ma
from datetime import date, datetime

api = TqApi(TqSim(init_balance=1000000.0), backtest=TqBacktest(start_dt=date(2019, 2, 1), end_dt=datetime(2019,6,1)))
symbol_front = "CFFEX.T1903"
symbol_main = "CFFEX.T1906"
symbol_after = "CFFEX.T1909"
kline_day_front = api.get_kline_serial(symbol_front,24*60*60)
kline_day_main = api.get_kline_serial(symbol_main,24*60*60)
kline_day_after = api.get_kline_serial(symbol_after,24*60*60)
klines_1min = api.get_kline_serial(symbol_main, 60,)
ma120 = tafunc.ma(klines_1min["close"],120)
target_pos = TargetPosTask(api,symbol_main)

while True:
api.wait_update()
if api.is_changing(klines_1min):
#确定主力合约时间段
if kline_day_front.close_oi <= kline_day_main.close_oi and kline_day_main.close_oi <=kline_day_after.close_oi:
if time条件: #日内交易设置
ave_volume_5 = sum(klines_1min.volume.iloc[-6:-2]) #前5个k线成交量
if klines_1min.volume.iloc[-1] >= ave_volume_5: #放量是priority
if klines_1min.close.iloc[-1] >ma120.iloc[-1]: #开仓条件
target_pos.set_target_volume(10) #开多
elif klines_1min.close.iloc[-1] <ma120.iloc[-1]:
target_pos.set_target_volume(-10) #开空

        else:
            target_pos.set_target_volume(0)
  • 写回答

2条回答 默认 最新

  • dabocaiqq 2019-08-08 14:48
    关注
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!