|
指标代码如下:想测试红色部分的参数,思路是把两个指标分别设置不同的参数加载在同一周期图上,然后跑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[25000]; double lda_16[25000]; double lda_20[25000]; double lda_24[25000]; for (int l_shift_4 = Nbars; l_shift_4 >= 0; l_shift_4--) { g_ibuf_104[l_shift_4] = 0; g_ibuf_108[l_shift_4] = 0; g_ibuf_112[l_shift_4] = 0; g_ibuf_116[l_shift_4] = 0; g_ibuf_120[l_shift_4] = EMPTY_VALUE; g_ibuf_124[l_shift_4] = EMPTY_VALUE; } for (l_shift_4 = Nbars - Length - 1; l_shift_4 >= 0; l_shift_4--) { lda_12[l_shift_4] = iBands(NULL, 0, Length, Deviation, 0, PRICE_CLOSE, MODE_UPPER, l_shift_4); lda_16[l_shift_4] = iBands(NULL, 0, Length, Deviation, 0, PRICE_CLOSE, MODE_LOWER, l_shift_4); if (Close[l_shift_4] > lda_12[l_shift_4 + 1]) li_8 = 1; if (Close[l_shift_4] < lda_16[l_shift_4 + 1]) li_8 = -1; if (li_8 > 0 && lda_16[l_shift_4] < lda_16[l_shift_4 + 1]) lda_16[l_shift_4] = lda_16[l_shift_4 + 1]; if (li_8 < 0 && lda_12[l_shift_4] > lda_12[l_shift_4 + 1]) lda_12[l_shift_4] = lda_12[l_shift_4 + 1]; lda_20[l_shift_4] = lda_12[l_shift_4] + (MoneyRisk - 1.0) / 2.0 * (lda_12[l_shift_4] - lda_16[l_shift_4]); lda_24[l_shift_4] = lda_16[l_shift_4] - (MoneyRisk - 1.0) / 2.0 * (lda_12[l_shift_4] - lda_16[l_shift_4]); if (li_8 > 0 && lda_24[l_shift_4] < lda_24[l_shift_4 + 1]) lda_24[l_shift_4] = lda_24[l_shift_4 + 1]; if (li_8 < 0 && lda_20[l_shift_4] > lda_20[l_shift_4 + 1]) lda_20[l_shift_4] = lda_20[l_shift_4 + 1]; if (li_8 > 0) { if (Signal > 0 && g_ibuf_104[l_shift_4 + 1] == -1.0) { g_ibuf_112[l_shift_4] = lda_24[l_shift_4]; g_ibuf_104[l_shift_4] = lda_24[l_shift_4]; if (Line > 0) g_ibuf_120[l_shift_4] = lda_24[l_shift_4]; 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[l_shift_4] = lda_24[l_shift_4]; if (Line > 0) g_ibuf_120[l_shift_4] = lda_24[l_shift_4]; g_ibuf_112[l_shift_4] = -1; } if (Signal == 2) g_ibuf_104[l_shift_4] = 0; g_ibuf_116[l_shift_4] = -1; g_ibuf_108[l_shift_4] = -1.0; g_ibuf_124[l_shift_4] = EMPTY_VALUE; } if (li_8 < 0) { if (Signal > 0 && g_ibuf_108[l_shift_4 + 1] == -1.0) { g_ibuf_116[l_shift_4] = lda_20[l_shift_4]; g_ibuf_108[l_shift_4] = lda_20[l_shift_4]; if (Line > 0) g_ibuf_124[l_shift_4] = lda_20[l_shift_4]; 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[l_shift_4] = lda_20[l_shift_4]; if (Line > 0) g_ibuf_124[l_shift_4] = lda_20[l_shift_4]; g_ibuf_116[l_shift_4] = -1; } if (Signal == 2) g_ibuf_108[l_shift_4] = 0; g_ibuf_112[l_shift_4] = -1; g_ibuf_104[l_shift_4] = -1.0; g_ibuf_120[l_shift_4] = EMPTY_VALUE; } } return (0); } |
EA入门学院