ipwzlbw772 发表于 2011-11-17 09:42:47

想用EA测试一个指标,跪求高人指点

指标代码如下:想测试红色部分的参数,思路是把两个指标分别设置不同的参数加载在同一周期图上,然后跑EA选出合适的参数组合,就是每两个参数一组,比如 Length = 26和 Length = 20,然后测试这两个参数同时发出信号的胜率。希望能得到高人指点,小弟稍微能看懂一点代码,但是写起来困难,希望有人能给个提示或者有类似测试参数的代码能提供参考,先谢过了,指标在附近

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 White
#property indicator_color4 Gold
#property indicator_color5 Blue
#property indicator_color6 Red

extern int Length = 26;
extern int Deviation = 1;
extern double MoneyRisk = 1.0;
extern int Signal = 1;
extern int Line = 1;
extern int Nbars = 1000;
double g_ibuf_104[];
double g_ibuf_108[];
double g_ibuf_112[];
double g_ibuf_116[];
double g_ibuf_120[];
double g_ibuf_124[];
extern bool SoundON = TRUE;
bool gi_132 = FALSE;
bool gi_136 = FALSE;

int init() {
   SetIndexBuffer(0, g_ibuf_104);
   SetIndexBuffer(1, g_ibuf_108);
   SetIndexBuffer(2, g_ibuf_112);
   SetIndexBuffer(3, g_ibuf_116);
   SetIndexBuffer(4, g_ibuf_120);
   SetIndexBuffer(5, g_ibuf_124);
   SetIndexStyle(0, DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexStyle(2, DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexStyle(3, DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexStyle(4, DRAW_LINE);
   SetIndexStyle(5, DRAW_LINE);
   SetIndexArrow(0, 159);
   SetIndexArrow(1, 159);
   SetIndexArrow(2, 108);
   SetIndexArrow(3, 108);
   IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS));
   string ls_0 = \"BBands Stop(\" + Length + \",\" + Deviation + \")\";
   IndicatorShortName(ls_0);
   SetIndexLabel(0, \"UpTrend Stop\");
   SetIndexLabel(1, \"DownTrend Stop\");
   SetIndexLabel(2, \"UpTrend Signal\");
   SetIndexLabel(3, \"DownTrend Signal\");
   SetIndexLabel(4, \"UpTrend Line\");
   SetIndexLabel(5, \"DownTrend Line\");
   SetIndexDrawBegin(0, Length);
   SetIndexDrawBegin(1, Length);
   SetIndexDrawBegin(2, Length);
   SetIndexDrawBegin(3, Length);
   SetIndexDrawBegin(4, Length);
   SetIndexDrawBegin(5, Length);
   return (0);
}

int start() {
   int li_8;
   double lda_12;
   double lda_16;
   double lda_20;
   double lda_24;
   for (int l_shift_4 = Nbars; l_shift_4 >= 0; l_shift_4--) {
      g_ibuf_104 = 0;
      g_ibuf_108 = 0;
      g_ibuf_112 = 0;
      g_ibuf_116 = 0;
      g_ibuf_120 = EMPTY_VALUE;
      g_ibuf_124 = EMPTY_VALUE;
   }
   for (l_shift_4 = Nbars - Length - 1; l_shift_4 >= 0; l_shift_4--) {
      lda_12 = iBands(NULL, 0, Length, Deviation, 0, PRICE_CLOSE, MODE_UPPER, l_shift_4);
      lda_16 = iBands(NULL, 0, Length, Deviation, 0, PRICE_CLOSE, MODE_LOWER, l_shift_4);
      if (Close > lda_12) li_8 = 1;
      if (Close < lda_16) li_8 = -1;
      if (li_8 > 0 && lda_16 < lda_16) lda_16 = lda_16;
      if (li_8 < 0 && lda_12 > lda_12) lda_12 = lda_12;
      lda_20 = lda_12 + (MoneyRisk - 1.0) / 2.0 * (lda_12 - lda_16);
      lda_24 = lda_16 - (MoneyRisk - 1.0) / 2.0 * (lda_12 - lda_16);
      if (li_8 > 0 && lda_24 < lda_24) lda_24 = lda_24;
      if (li_8 < 0 && lda_20 > lda_20) lda_20 = lda_20;
      if (li_8 > 0) {
         if (Signal > 0 && g_ibuf_104 == -1.0) {
            g_ibuf_112 = lda_24;
            g_ibuf_104 = lda_24;
            if (Line > 0) g_ibuf_120 = lda_24;
            if (SoundON == TRUE && l_shift_4 == 0 && !gi_132) {
               Alert(\"BUY = DOT PUTIH, SS2009_B(BIRU), SS2009_C(BIRU) \", Symbol(), \"-\", Period());
               gi_132 = TRUE;
               gi_136 = FALSE;
            }
         } else {
            g_ibuf_104 = lda_24;
            if (Line > 0) g_ibuf_120 = lda_24;
            g_ibuf_112 = -1;
         }
         if (Signal == 2) g_ibuf_104 = 0;
         g_ibuf_116 = -1;
         g_ibuf_108 = -1.0;
         g_ibuf_124 = EMPTY_VALUE;
      }
      if (li_8 < 0) {
         if (Signal > 0 && g_ibuf_108 == -1.0) {
            g_ibuf_116 = lda_20;
            g_ibuf_108 = lda_20;
            if (Line > 0) g_ibuf_124 = lda_20;
            if (SoundON == TRUE && l_shift_4 == 0 && !gi_136) {
               Alert(\"SELL = DOT KUNING, SS2009_B(MERAH), SS2009_C(MERAH) \", Symbol(), \"-\", Period());
               gi_136 = TRUE;
               gi_132 = FALSE;
            }
         } else {
            g_ibuf_108 = lda_20;
            if (Line > 0) g_ibuf_124 = lda_20;
            g_ibuf_116 = -1;
         }
         if (Signal == 2) g_ibuf_108 = 0;
         g_ibuf_112 = -1;
         g_ibuf_104 = -1.0;
         g_ibuf_120 = EMPTY_VALUE;
      }
   }
   return (0);
}

龙行天下 发表于 2012-11-21 23:00:05

现在还真的要重视EA了

mt5mt5 发表于 2012-11-21 23:00:05

感謝樓主

副会他爹 发表于 2012-11-21 23:00:05

呵呵,找个机会...

印度阿三 发表于 2012-11-21 23:00:05

真笨,如果有那么好赚的话,就不用做广告给你们了!这些都是骗人的!就像股票软件一样。。。。

郁闷小甜甜 发表于 2012-11-21 23:00:05

不错的东西持续关注

fxsin代理 发表于 2014-10-28 17:15:20

研究研究

小狗臭臭 发表于 2014-11-5 19:03:19

路过。。看下先。

henry888 发表于 2014-11-8 01:39:50

谢谢分享!!!!!

xivaobqz 发表于 2014-11-10 14:52:23

感谢分享
页: [1] 2
查看完整版本: 想用EA测试一个指标,跪求高人指点