[源码]7分钟版_沪深300股指_日内震荡

Discussion in 'CTP' started by 蓝色天空, May 4, 2014.

  1. 说明
    用途:学习
    应用商品:IF888
    使用周期:7分钟K线,
    测试区间:2010.4-2014.04.30
    手续费:1手手续费100
    滑点设置:程序设置为+-1个最小价位

    设置以上参数后进行测试即可。
    不多说,一切均在源码中!
     
  2. //------------------------------------------------------------------------
    // 简称: 日内趋势策略
    // 名称: RN
    // 版本: VER.2.1
    // 类别: 公式应用
    // 类型: 用户应用
    // 修改: 2014xxxx
    //
    //------------------------------------------------------------------------
    //------------------------------------------------------------------------
    Params
    Numeric Nnn1(5);
    Numeric Nnn2(20);
    Vars
    Numeric Lots(1.00);
    Numeric offset(1);
    Numeric i_offset;

    NumericSeries a1;
    NumericSeries a2;
    NumericSeries a3;
    NumericSeries a4;

    NumericSeries a13;
    NumericSeries a14;
    NumericSeries a15;

    NumericSeries a17;
    NumericSeries a18;
    NumericSeries a19;
    NumericSeries a20;
    NumericSeries a21;
    NumericSeries a22;
    NumericSeries a23;
    NumericSeries a24;
    NumericSeries a25;

    Numeric xx_1010;
    Numeric xx_1030;
    //------------------------------------------------------------------------
    //------------------------------------------------------------------------
    Begin

    i_offset=offset*minmove*PriceScale;

    a3=AverageFC(Close[1],17);
    a4=StandardDev(Close[1],17,2);

    a1=(a3 + (a4 * 1.88));
    a2=(a3 - (a4 * 1.88));
    //------------------------------------------------------------------------
    a18=Summation(Max(Max((High - Low),Abs((High - Close[1]))),Abs((Low - Close[1]))),23);

    a19=(High - High[1]);
    a20=(Low[1] - Low);

    a21=Summation(IIF((a19 > 0) and (a19 > a20),a19,0),23);
    a22=Summation(IIF((a20 > 0) and (a20 > a19),a20,0),23);

    a23=((a21 * 100) / a18);
    a24=((a22 * 100) / a18);
    a25=Average(((Abs((a24 - a23)) / (a24 + a23)) * 100),12);

    //------------------------------------------------------------------------
    //------------------------------------------------------------------------
    If(Time>0.0920 and Time<0.1515)
    {

    if (Time>0.0920 AND Time<0.1510)
    {

    if ((MarketPosition == 0) and (a4 >= 1.9) and (Time <= 0.1456))
    {
    if ((High[1] > a1) and (Open > (a1 - 3)) and (Open <= High[1]))
    {
    SellShort(Lots,(Open-i_offset));
    }

    if ((Low[1] < a2) and (Open < (a2 + 3.8)) and (a25[1] < 42))
    {
    Buy(Lots,(Open+i_offset));
    }

    }

    if ((MarketPosition == 1) and (BarsSinceEntry == 0))
    {
    a14=High;a15=Low;
    }
    if ((MarketPosition == 1) and (BarsSinceEntry >= 1))
    {
    a14=Max(a14,High);
    }
    if ((MarketPosition == -1) and (BarsSinceEntry == 0))
    {
    a15=Low;
    }
    if ((MarketPosition == -1) and (BarsSinceEntry >= 1))
    {
    a15=Min(a15,Low);
    }


    if ((BarsSinceEntry >= 1) and (MarketPosition == 1))
    {
    a13=(a14[1] - EntryPrice);
    if ((BarsSinceEntry >= 5) and ((Close[5] - Open[5]) < 0) and ((Close[4] - Open[4]) < 0) and ((Close[3] - Open[3]) < 0) and (a13 >= 18))
    {
    Sell(Lots,(Open-i_offset));
    }
    if ((BarsSinceEntry > 4) and (a13 >= 29) and (Low <= (EntryPrice + 19)))
    {
    Sell(Lots,((EntryPrice + 19) - i_offset));
    }
    }

    if ((BarsSinceEntry >= 1) and (MarketPosition == -1))
    {
    a13=(EntryPrice - a15[1] );
    if ((BarsSinceEntry >= 4) and ((Close[5] - Open[5]) > 0) and ((Close[4] - Open[4]) > 0) and ((Close[3] - Open[3]) > 0) and (a13 >= 26))
    {
    BuyToCover(Lots,(Open+i_offset));
    }
    if ((BarsSinceEntry > 5) and (a13 >= 30) and (High >= (EntryPrice - 16)))
    {
    BuyToCover(Lots,((EntryPrice - 16)+i_offset));
    }

    }

    }
    //------------------------------------------------------------------------
    //------------------------------------------------------------------------

    xx_1010=AvgEntryPrice;

    if ((BarsSinceEntry >= 1) and (MarketPosition > 0) and (Low <= (AvgEntryPrice - 05)) and ((PositionProfit+(Lots * 1500)) < 0))
    {
    xx_1030=(xx_1010 - 05);
    Sell(Lots,(Min(Open,xx_1030) - i_offset));

    if (((a2[1] - a2) <= 5.6) and (Time <= 0.1456))
    {
    SellShort(Lots,(Min(Open,xx_1030) - i_offset));
    }
    }

    //------------------------------------------------------------------------
    if ((BarsSinceEntry >= 1) and (MarketPosition < 0) and (High >= (AvgEntryPrice + 05)) and ((PositionProfit+(Lots * 1500)) < 0))
    {
    xx_1030=(xx_1010 + 05);
    BuyToCover(Lots,(Max(Open,xx_1030) + i_offset));

    if (((a1 - a1[1] ) <= 5.6) and (Time <= 0.1456))
    {
    Buy(Lots,(Max(Open,xx_1030) + i_offset));
    }
    }

    //------------------------------------------------------------------------
    //------------------------------------------------------------------------

    If(Time>=0.1510 and Time<0.1513 and MarketPosition>0)
    {
    Sell(Lots,(Open-i_offset));
    }

    If(Time>=0.1510 and Time<0.1513 and MarketPosition<0)
    {
    BuyToCover(Lots,(Open+i_offset));
    }

    }

    //------------------------------------------------------------------------

    End

    //------------------------------------------------------------------------
    // 编译版本 GS2010.12.08
    // 版权所有 TradeBlazer Software 2003-2010
    // 更改声明 TradeBlazer Software保留对TradeBlazer平
    // 台每一版本的TradeBlazer公式修改和重写的权利
    //------------------------------------------------------------------------
     
  3. 这个公式有未来函数吗? 高手点评一下
     
  4. 学习用可以,该策略包含了开仓,止盈,止损,以及反手开仓,比较完整。

    提示一下:
    该策略只有一个地方有问题:)
    TB的内建的每个函数或指标,说明比较少,最好摸透了再用。不然...
     
  5. 发现现在HY好冷清哦,都在闷声赚钱吗
     
  6. 蓝色天空,搞tb 很久了吗? 这个指标要调参数的话,是什么地方? 给个提示?

    这个指标没研究出来,什么地方在使用的时候要注意
     
  7. 这个是五一没事做,看到一位网友贴了几页的一长串屠龙刀代码,
    看着头晕,于是给他化简了一下贴在TB论坛了,思路还是不错
    7分钟效果还行,一半信号是真的
    但部分信号是假的(采用PositionProfit函数导致,以此提醒朋友们,)
    其实很多朋友一眼就看出,并指出来了

    if ((BarsSinceEntry >= 1) and (MarketPosition < 0) and (High >= (AvgEntryPrice + 05)) and ((PositionProfit+(Lots * 1500)) < 0))

    提示,如果采用网友公布的参数,测试结果真的给ZLW卖的模型是一模一样的
    因为我测试了,并跟ZLW的公布的历史数据对比了一下,买卖点完全一样的:)
    这个模型目前好像有几十个人购买了,不知他们实盘效果如何:D:D:D
     
  8. 那这个PositionProfit该怎么改才能去掉假信号啊?