指标代码如下:想测试红色部分的参数,思路是把两个指标分别设置不同的参数加载在同一周期图上,然后跑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测试一个指标,跪求高人指点
回复:0 浏览:768
- 楼主admin 圈主
- 2019-05-05 05:53