超长k线数据案例一:超长k线数据测试

    前言

    问题一:超长的K线数据有什么用?
    以上期所的螺纹钢合约为例,螺纹钢2009年挂牌交易至今,已经有超过10年的历史数据。前8年的历史数据囊括了2009年的急涨急跌行情、2011年的震荡行情、2015年的V字形翻转行情,这些数据为模型的回测提供了充足的数据样本和各种极端行情变化。
    我们可以使用前8年的数据进行模型的优化,然后使用最近两年的数据对模型进行最终的验证。这样即可以判断模型是否过度优化,也能检验模型是否能够适应当前的行情变化。

    问题二:k线数据的准确性至关重要
    超长k线数据案例一:超长k线数据测试

      这些看似不符合正常行情变化的“异常K线”是错误数据吗?经过文华多方面求证,确认这些数据都是准确无误的,是极端行情的真实反应。
    类似的极端行情还有很多,2012年橡胶合约交易单位扩大至每手10吨,导致大量橡胶日内模型持续亏损;2013年上期所正式上线贵金属夜盘交易,导致大量贵金属策略失效;2015年股指期货大幅提高保证金,导致多家投资机构资金大幅回撤。。。   只有准确无误的历史数据才能确保策略回测的真实有效,才能全面检验各种极端行情对策略收益的影响,从而防止“黑天鹅”事件的发生。

    问题三:文华为你提供的超长的、准确的k线数据
    保证数据的准确性,仅依靠计算机自动处理是远远不够的,数据在网络传输、软件处理过程中是无法避免出错的,必须由有多年数据处理经验的专业人士来进行人工校验。
    文华财经创立于1996年,是国内四家期货交易所官方授权行情转发商,具有20多年行情转发和数据处理经验。
    为了保证数据准确,我们配备了一支专业的数据处理团队,从交易所的数据源到文华数据中心,再到文华客户端,在各个环节进精准的校对和修正。

    优势

    • 国内所有期货品种挂牌交易以来全部历史k线数据。
    • 国内四家期货交易所官方授权行情转发商。
    • 多层次校验,确保数据准确。

    使用足够多的历史数据进行测试,才能反映出一个模型的真实情况,少量的历史数据往往带有欺骗性,容易使交易者对策略进行错误的评估。

    模型:金肯特纳策略

     

    测试合约周期:铁矿15分钟

     

    模型代码:

    测试1:

    Params
       Numeric AvgLength(40);	//三价均线参数
       Numeric AtrLength(40);	//真实波幅参数
       Numeric Lots(DefaultVol);	//交易手数
    Vars
       NumericSeries MovAvgVal(0);	//三价均线
       NumericSeries UpBand(0);	//通道上轨
    NumericSeries DnBand(0);	//通道下轨
       NumericSeries LiquidPoint(0);	//出场条件
    Begin
       // 三价均线
       MovAvgVal =Ma((High + Low + Close) / 3, AvgLength);
       // 通道上轨
       UpBand = MovAvgVal + AvgTrueRange(AtrLength);
       //通道下轨
       DnBand = MovAvgVal - AvgTrueRange(AtrLength);
       // 出场条件
       LiquidPoint = MovAvgVal;
       // 画线
       PlotNumeric("movAvgVal", MovAvgVal);
       PlotNumeric("upBand", UpBand);
       PlotNumeric("DnBand", DnBand);
       // 三价均线向上,并且价格上破通道上轨,开多单
       If ( MarketPosition != 1 And MovAvgVal[1] > MovAvgVal[2] And High >= UpBand[1] ) BK(Lots, Max ( Open, UpBand[1] ) );
       // 三价均线向下,并且价格下破通道下轨,开空单
       If ( MarketPosition != -1 And MovAvgVal[1] < MovAvgVal[2] And Low <= DnBand[1] ) SK ( Lots, Min ( Open, DnBand[1] ) );
       // 持有多单时,价格下破三价均线,平多单
       If ( MarketPosition == 1 And BarsSinceEntry >= 1 And Low <= LiquidPoint[1] ) SP ( DefaultVol, Min ( Open, LiquidPoint[1] ) );
       // 持有空单时,价格上破三价均线,平空单
       If ( MarketPosition == -1 And BarsSinceEntry >= 1 And High >= LiquidPoint[1] ) BP ( DefaultVol, Max ( Open, LiquidPoint[1] ) );
    End

     

    从16年1月1日开始测试至今,初始资金1万元,固定手数为1手

    从回测报告来看,这是一个年化收益率达180%以上,最大回撤控制在40%以内,看起来还不错的策略

     

    超长k线数据案例一:超长k线数据测试

     

    测试2:

     

    将测试时间修改为从上市日起至今,则发现同样的策略竟然在15年就已经严重亏损,早就爆仓出局了。

     

    超长k线数据案例一:超长k线数据测试

     

    对比分析:

     

    回顾一下铁矿的历史数据不难发现,在14年底,铁矿有长达三个月的震荡行情,使得价格在三价均线上下反复徘徊,产生大量的连续亏损信号。事实上,在这种相对极端的行情下,很多趋势类策略都很难产生较好的收益,而我们的金肯特纳策略也恰恰无法适配从而导致爆仓。

     

    由此可见,一个看似还不错的策略,如果没有长时间历史数据测试的支撑,在极端行情下可能会面临着很大的风险。为了避免这种情况的发生,拉长历史数据、进行样本外回测,不失为一种规避风险的方法,而这一切的基础,便是要拥有足够长时间的历史数据。