这是聚宽上面的股指期货跨期套利源码。能否有大神转化成真格这边的策咯(我想实盘)
克隆自聚宽文章:https://www.joinquant.com/post/19837
标题:股指期货跨合约套利
作者:归去来兮
导入函数库
from jqdata import *
import datetime as dt
import numpy as np
初始化函数,设定基准等等
def initialize(context):
# 设定沪深300作为基准
set_benchmark('000300.XSHG')
# 开启动态复权模式(真实价格)
set_option('use_real_price', True)
# 过滤掉order系列API产生的比error级别低的log
log.set_level('order', 'error')
### 期货相关设定 ###
# 设定账户为金融账户
set_subportfolios([SubPortfolioConfig(cash=context.portfolio.starting_cash, type='index_futures')])
# 开盘前运行
run_daily( before_market_open, time='before_open', reference_security='IF1812.CCFX')
# 开盘时运行
run_daily( market_open, time='every_bar')
'''
每天开盘前
'''
#每天开盘前要做的事情
def before_market_open(context):
#设置股票交易手续费
set_slip_fee(context)
#根据不同的时间段设置滑点与手续费
def set_slip_fee(context):
# 设置期货交易的滑点
set_slippage(StepRelatedSlippage(0))
# 根据不同的时间段设置手续费
today=context.current_dt
# 设置期货合约保证金和手续费
#2017-2-17调整平今仓位万分之9.2,2017-9-18起,调整为万分之6.9,2018-12-3起,万分之4.6,2019-4-22起,万分之3.45.买入时万分之0.23,卖出时万分之0.23,
if today<dt.datetime(2017,9,18):
set_order_cost(OrderCost(open_commission=0.000023, close_commission=0.000023,close_today_commission=0.00092), type='index_futures')
g.futures_margin_rate=0.2
elif today<dt.datetime(2018,12,3):
set_order_cost(OrderCost(open_commission=0.000023, close_commission=0.000023,close_today_commission=0.00069), type='index_futures')
g.futures_margin_rate=0.15
elif today<dt.datetime(2019,4,22):
set_order_cost(OrderCost(open_commission=0.000023, close_commission=0.000023,close_today_commission=0.00046), type='index_futures')
g.futures_margin_rate=0.1
else:
set_order_cost(OrderCost(open_commission=0.000023, close_commission=0.000023,close_today_commission=0.000345), type='index_futures')
g.futures_margin_rate=0.1
set_option('futures_margin_rate', g.futures_margin_rate)
开盘时运行函数
def market_open(context):
# 合约价格
IF1906 = attribute_history('IF1906.CCFX', 300, unit='1m',
fields=['close'],df=True)['close']#
IF1909=attribute_history('IF1909.CCFX', 300, unit='1m',
fields=['close'],df=True)['close']#
gap=IF1906-IF1909
IF1906_now=IF1906[-1]
IF1909_now=IF1909[-1]
gap_now=IF1906_now-IF1909_now
#价差百分位并开平仓
if context.portfolio.positions_value==0:
if gap_now>gap.quantile(0.9):
order_target('IF1906.CCFX', 1, side='short',close_today = False)
order_target('IF1909.CCFX', 1, side='long',close_today = False)
elif gap_now<gap.quantile(0.1):
order_target('IF1906.CCFX', 0, side='short',close_today = False)
order_target('IF1909.CCFX', 0, side='long',close_today = False)
我试了一下,真格改起来很方便,而且回测会更科学,因为考虑了品种当时的成交量
可以参考 https://github.com/qmhedging/poboquant/blob/master/%E8%82%A1%E6%8C%87%E5%A5%97%E5%88%A915%E7%A7%92%E7%BA%A7%E5%88%ABIndex%20Futures%20Spread%20Trading%2015s
进行改写
有带价代写的吗?
我完全小白一个。