说明 用途:学习 应用商品:IF888 使用周期:7分钟K线, 测试区间:2010.4-2014.04.30 手续费:1手手续费100 滑点设置:程序设置为+-1个最小价位 设置以上参数后进行测试即可。 不多说,一切均在源码中!
//------------------------------------------------------------------------ // 简称: 日内趋势策略 // 名称: 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公式修改和重写的权利 //------------------------------------------------------------------------
这个是五一没事做,看到一位网友贴了几页的一长串屠龙刀代码, 看着头晕,于是给他化简了一下贴在TB论坛了,思路还是不错 7分钟效果还行,一半信号是真的 但部分信号是假的(采用PositionProfit函数导致,以此提醒朋友们,) 其实很多朋友一眼就看出,并指出来了 if ((BarsSinceEntry >= 1) and (MarketPosition < 0) and (High >= (AvgEntryPrice + 05)) and ((PositionProfit+(Lots * 1500)) < 0)) 提示,如果采用网友公布的参数,测试结果真的给ZLW卖的模型是一模一样的 因为我测试了,并跟ZLW的公布的历史数据对比了一下,买卖点完全一样的 这个模型目前好像有几十个人购买了,不知他们实盘效果如何