经典日内策略——空中花园(附源码)

Posted 量化密码库

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典日内策略——空中花园(附源码)相关的知识,希望对你有一定的参考价值。

空中花园属于期货日内突破策略,是一个相对“粗暴”的策略。

一般来说,如果开盘突破就入场,出错率较高。而这一策略增加了额外的条件,也就是开盘时要大幅高开或者低开,形成一个空窗,然后再根据是否突破上下轨来进行开仓判断。对于高开或者低开的幅度要求较高,一般是超过1%。

本策略基于传统空中花园策略进行改进。传统策略下是开盘时满足高开或低开时开仓,收盘平仓。按照网上搜罗的资料,都是需要定义上下轨做下单判断,但笔者此时遇到一个逻辑问题,就是该如何定义“第一根k线”这一说法。

笔者的策略是基于60s的bar数据,那么“第一根k线”就是指开盘后的第一分钟的数据。基于“第一根k线”的数据,即可引出本策略的交易条件——对于每一分钟都判断分钟线的收盘价是否突破上轨或者跌穿下轨(高开仅需判断是否突破上轨,低开仅需判断是否跌穿下轨)。

一、策略逻辑:

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

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

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

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

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

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

二、数据准备:

获得市场上从2020年10月份所有上市的商品期货不同品种的主力合约1分钟行情数据,并过滤掉当天没有交易的期货合约(在仿真模式下,这并不需要)。同时,若在仿真模式下,需要修改获取当天开盘价的方式,这一点在本策略的注释下有说明。

三、策略评价:

该策略在震荡市场且市场景气的情况下,能得到一个较好的结果。以下为该策略在2020年10月份的回测结果:

 该回测结果由掘金量化终端生成


策略的初始资金为35,000,000元,回测结束后的总资金为45,440,687.93元,累计收益率为29.83%,年化收益率为362.94%,最大回撤仅为0.51%,夏普比率达4.91 。

如需要对该策略进一步改进的话,可以对高开的期货合约加入看空的规则,对低开的期货合约加入看涨的规则,最终策略因人而异。

四、策略源码

# 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方法

以上仅展示部分代码,完整代码请点击下方地址获取。 

经典日内策略——空中花园(附源码) - 掘金量化社区 - 量化交易者的交流社区

声明:本内容首发至掘金量化公众号掘金量化社区,仅供学习、交流、演示之用,不构成任何投资建议!如需转载原创文章请联系掘金小Q(myquant2018)。

下载地址:掘金量化-集数据、投研、实盘交易的一站式专业量化平台 

以上是关于经典日内策略——空中花园(附源码)的主要内容,如果未能解决你的问题,请参考以下文章

量化交易01CTA策略 菲阿里四价+空中花园策略

股票日内量化策略开发源码分享

经典100%纯手工实现视频图片水印处理,附源码

经典100%纯手工实现视频图片水印处理,附源码

经典100%纯手工实现视频图片水印处理,附源码

Python制作经典游戏案例-水果忍者(附源码等文件)