【股票量化精华帖_策略42篇】国内商品期货交易框架

发布于: 雪球转发:0回复:0喜欢:0

2021/11/20更新

修复了sleep_until_next_day()函数周五晚收盘sleep至周六9:00的bug,改为sleep至次周一

2021/10/29更新

place_order函数增加了对涨跌停的处理,若涨(跌)停不下买(卖)单,但是目标仓位正常记录。等待下一个time_interval判断是否开板并执行相关下单操作。

更改了若干其他bug

最近国内商品期货行情如火如荼。本人进入币圈前一直做国内商品。3月份了解到币圈光期现套利和资金费率就有高达30%以上年化,算了算自己这几年在国内商品承担着风险,亏亏赚赚也就这么个收益,于是大举转战币圈。结果5月后套利就没啥价差了,转了点钱做币圈择时。此时国内原材料迎来一波史诗级行情,币圈行情却一直不温不火,心里有点fomo。认识一个网友今年豪赌几十万做到上千万。

报名邢大课程后一直抄各大佬的框架提升代码水平,渐渐能自己写了。改了几个框架后顺手写了这个期货框架。个人认为国内商品还是值得做的,虽然不如币圈,不过有行情、不用担心kyc、出入金方便。大家如果有兴趣我再写个ic跨期套利的脚本。

目前该框架调试情况正常,本人实盘bolling运行中。

如果发现问题还请留言,各位大佬多批评,不胜感激。

框架逻辑参考:

网页链接

网页链接

本框架用到了国内快期公司提供的一套名为天勤的api接口,官方文档:网页链接

输入以下口令安装天勤库。

pip install tqsdk -U -i 网页链接 --trusted-host=pypi.tuna.tsinghua.edu.cn

使用方法

一、在symbol_config.csv中配置策略

1.在symbol列写入要交易的品种,具体格式可以参照文华财经wh6软件中行情页面右上角的格式,如沪深300的2111合约写作CFFEX.IF2111。注意交易所与合约之间加英文的“.”作为分割。注意区分大小写。

其他合约示例:

SHFE.cu1901 - 上期所 cu1901 期货合约

DCE.m1901 - 大商所 m1901 期货合约

CZCE.SR901 - 郑商所 SR901 期货合约 # 注意郑商所日期只有后三位

CFFEX.IF1901 - 中金所 IF1901 期货合约

INE.sc2109 - 上期能源 sc2109 期货合约

2.在time_interval列注明时间周期,目前支持5m至1d内所有5分钟为约数的时间周期,如10m、15m、30m、1h、2h、1d……,你甚至

可以定制个性化k线如65分钟K线、35分钟K线

等。格式如图所示为数字加字母,分钟写做m,小时写作h,日写作d。

另注:日线级别的开盘价设置为以9:00(商品期货)或9:30(金融期货)为开盘价,与文华等期货软件设置有所不同,因为有的时候夜盘不交易,这样如果你以1d为周期进行开仓,21点计算信号就会出现漏算的情况,但一旦是交易日早盘一定开盘。为了方便统一设为早盘开盘。

3.第三列strategy_name写入signal.py中编写好的策略,这些策略用来将获取的k线计算出信号。signal.py中有默认策略real_signal_simple_bolling(简单布林策略)可以直接使用。程序中的信号全部以开盘价计算,防止信号闪烁、次日跳空开盘、收盘时出现信号而不能下单等情况。

4.第四列para填写计算指标的参数。

5.第五列every()open_one填写仓位配置,按照自己的杠杆偏好写入。假如100w资金,做螺纹钢,你希望该期货合约的最大仓位是20手,假如螺纹钢的策略有4个(不同周期不同参数),每个策略你希望平均分配仓位,那么每个策略开仓手数即为5手,则第五列每个策略应填写的数值为200,000。(1,000,000 / 5 = 每(200,000)开一手。)

6.第六列last_num为当前策略目前所持有的手数,新策略填写0。若该策略出现信号并下单,该行会自动填写当前持仓数量,正数为多仓,负数为空仓。若当前杠杆率过高,可手工改写调低此行手数,下个周期程序会自动调整至目标仓位,切记一定不要手动平仓却不改此列,不然程序还会开回来。

7.now_pos为当前的信号,若策略开多,now_pos记为1,若开空为-1。Signal.py计算的信号中若有加减仓信号,则会出现2、-2、0.5等情况。注意“每()开一手”列计算出的手数基准均为1,若出现加仓2,则会在1的基础上加倍。以1,000,000开20手为例,若信号1则开20手,出现信号2则开40手。

8.Last_open_price为当前策略上次开仓的价格。该价格起到两个作用,1是用来记录,2是可以在signal.py计算信号的时候引入,用于计算出以开仓价格为标准的止损止盈信号。

二、在Config.py中配置账户信息

1.default配置

debug程序调试模式为1,实盘则为0

real_trade实盘配置为1,模拟盘为0

Name随便填,自己起

2.future_company配置

将大写首字母+公司名、账户、密码分别填入。

目前支持的期货公司:网页链接

3.tq_api配置

注册天勤账户网址:

网页链接

将注册好的账户密码依次填入tq_id 和tq_password