求助期货日内交易回测

来源:1-1 量化交易开发课程导学

慕仙2055982

2023-02-24

老师:想编一个简单的期货日内交易回测程序,即先获取开盘后30分钟的最高(H)、最 低价(L);在09:31—14:30时间段内,若价格>H买入、价格<L卖出;14:45平仓。
编写思路:1.函数def initialize(context)初始化,包括
g.security, set_benchmark(security),set_order_cost(cost, type, ref=None),set_slippage(object,type=None, ref=None)等等,在初始化中还设定定时运行函数 run_daily(market_open, time=‘every_bar’),每个交易日盘中运行自定义的market_open(context)。
2.自定义函数def market_open(context),目的是获取当天1分钟级别的行情和开盘后30分钟的最高(H)、最低价(L);判断交易信号;进行交易;评估交易结果。
问题:1.如何得到开盘后30分钟的最高(H)、最低价(L)?
2.编写思路对吗?

写回答

1回答

meteor2022

2023-02-25

1.如何得到开盘后30分钟的最高(H)、最低价(L)?

你需要使用get_ticks获取实时行情

get_ticks不返回最高价与最低价,需要你设置high与low两个变量,自行存储当天的最高价与最低价

get_ticks示例

其中行情数据返回的为时间20180702150003指2018-07-02-15:00:03

d = get_ticks(['000300.XSHG', '000001.XSHE'],start_dt=None, end_dt="2018-07-03", count=3)
print(d)
{'000300.XSHG': array([(20180702150000.0, 3407.98, 3510.84, 3383.73, 8392371200.0, 107100880896.0),
       (20180702150003.0, 3407.98, 3510.84, 3383.73, 8435144800.0, 107601543168.0),
       (20180702150051.0, 3407.96, 3510.84, 3383.73, 8435144800.0, 107601543168.0)],
      dtype=(numpy.record, [('time', '<f8'), ('current', '<f8'), ('high', '<f8'), ('low', '<f8'), ('volume', '<f8'), ('money', '<f8')])), '000001.XSHE': array([(20180702145657.0, 8.62, 9.05, 8.56, 128485000.0, 1132138244.0),
       (20180702145700.0, 8.62, 9.05, 8.56, 128514800.0, 1132395012.0),
       (20180702150003.0, 8.61, 9.05, 8.56, 131552000.0, 1158545922.0)],
      dtype=(numpy.record, [('time', '<f8'), ('current', '<f8'), ('high', '<f8'), ('low', '<f8'), ('volume', '<f8'), ('money', '<f8')]))}1)]))}

2.编写思路

set_slippage是设置滑点,默认的滑点是 PriceRelatedSlippage(0.00246),滑点范围需要经验判断

大致思路没问题,代码还需要多编写多调试

0
2
meteor2022
回复
慕仙2055982
start_dt='2023-02-23 09:30:00', end_dt="2023-02-23 10:00:00" 这两个可以是变量啊 设当前时间为current_time start_dt = current_time - 15 min end_dt = current_time + 15 min 具体代码可参考python中的datetime类进行操作
2023-03-01
共2条回复

Python 量化交易工程师养成实战-金融高薪领域

带你走进前景可观的金融量化开发

678 学习 · 105 问题

查看课程