深度解析期权现货合约交易所系统开发说明分析

2022-08-07 16:16:11 浏览数 (1)

  策略代码:

  #coding=utf-8

  from __future__ import print_function,absolute_import

  from gm.api import*

  import string

  import pandas as pd

  def get_main_future(context):

  '''

  此函数用于获取全市场当前时间的主力合约

  '''

  #查询全市场期货合约

  ins_data=get_instruments(sec_types=4,df=True)

  #筛选掉已经退市的合约

  live_future=ins_data[ins_data['delisted_date']>context.now.strftime('%Y-%m-%d')]

  #返回当前日期的前一个交易日时间

  last_day=get_previous_trading_date(exchange='SHFE',date=context.now.strftime('%Y-%m-%d'))

  #获取全市场期货合约前一个交易日的信息

  future=get_history_instruments(symbols=live_future['symbol'].tolist(),start_date=last_day,end_date=last_day,df=True)

  #对期货合约代码做处理,处理成为‘交易所 名称’的格式

  future['name']=future.apply(lambda x:x['symbol'].rstrip(string.digits),axis=1)

  #将当前成交量最大的规则筛选出主力合约

  future['max_position']=future.groupby('name')['position'].transform('max')

  #取出主力合约代码

  main_future=future[(future['position']==future['max_position'])&(future['position']>0)]['symbol'].tolist()

  #返回主力合约代码

  return main_future

  #策略中必须有init方法

  def init(context):

  #高开或者低开的幅度要求

  context.multiple=0.01

  #定义上轨

  context.up=pd.DataFrame()

  #定义下轨

  context.dowm=pd.DataFrame()

  #限制每一支标的的开仓次数最大为5

  策略逻辑:

  1、判断当天高开或低开时,即当开盘价≥昨天收盘价*1.01或开盘价≤昨天收盘价*0.99。如果为高开,则进入第二步。低开则进入第三步。

  2、定义上轨=第一根K线的最高价;如果突破上轨则进入第四步。

  3、定义下轨=第一根K线的最低价;如果突破下轨则进入第五步。

  4、价格突破上轨,则买入开仓。

  5、价格跌穿下轨,则卖出开仓。

  6、第二天开盘平所有持仓。

0 人点赞