开拓者期货期权程序化系统交易论坛

标题: 新手编程完成,但是回测全都是0,请求老师解答 [打印本页]

作者: villa7777777    时间: 2016-10-24 16:41:33     标题: 新手编程完成,但是回测全都是0,请求老师解答

Params
    Numeric MALength1(300);                                  //过滤器短期均线值
    Numeric MALength2(600);                                  //过滤器长期均线值
    Numeric MALength3(60);                                    //系统信号均线值
Numeric ATRLength(10);                                //ATR的长度值
         Numeric ProtectStopATRMulti(1);           //保护性止损的ATR乘数
         Numeric TrailStopATRMulti(2.5);              //跟踪止损的ATR乘数
         Numeric Lots(1);                                      //手数
    Numeric ProfitStopATRMulti(3);         //止盈ATR乘数
Vars
         NumericSeries MA1(0);                               //过滤器短期均线
NumericSeries MA2(0);                               //过滤器长期均线
NumericSeries MA3(0);                               //系统信号均线
         NumericSeries ATR(0);                                //ATR
NumericSeries N;                                   //N
NumericSeries MyEntryPrice;                   //开仓价格
NumericSeries MyExitPrice;                      //平仓价格
 
Begin
 
         // 集合竞价和小节休息过滤
         If(!CallAuctionFilter()) Return;        
 
MA1 = AverageFC(C,MALength1);
MA2 = AverageFC(C,MALength2);
MA3 = AverageFC(C,MALength3);
        
ATR = AvgTrueRange(ATRLength);
 
If(MarketPosition ==0 )
//当300,600均线多头排列,上一根K线上穿60均线时,以当前K线开盘价做多1手
         {
                   If(Close[1] > MA1 and MA1 > MA2 and Close[2]< MA3 and Close[1] > MA3)
                   {
                            Buy(Lots,Open);
                            /
                            N = ATR[1];
            MyEntryPrice=Open;
                   }
         }
        
If(MarketPosition == 1 and BarsSinceEntry > 0)
//持有多单时,止盈空间3ATR,止损空间1ATR
         {
        
                   if(High>= MyEntryPrice+ ProfitStopATRMulti* N)
                   {
                            MyExitPrice= MyEntryPrice+ ProfitStopATRMulti* N;
            If(Open> MyExitPrice)  MyExitPrice=Open;
            Sell(Lots, MyExitPrice);
                   }
                   //基于ATR的止盈
                 Else if(Low<= MyEntryPrice - ProtectStopATRMulti*N)

              {
            MyExitPrice= MyEntryPrice - ProtectStopATRMulti*N;
            If(Open< MyExitPrice)  MyExitPrice=Open;
Sell(Lots, MyExitPrice);
                   }
         }
 
    End 
请问老师,编译完成,在K线图上可以显示开仓平仓位置,为什么回测结果都是0,谢谢老师了!
作者: china_lizhi    时间: 2016-10-25 10:35:35

If(Close[1] > MA1[1] and MA1[1] > MA2[1] and Close[2]< MA3[1] and Close[1] > MA3[1])

[1]很多地方得注意加这个




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2