升跌明了指标,更好把握趋势转折点。
升跌明了指标,更好把握趋势转折点。本帖最后由 华兰先生 于 2025-4-12 19:49 编辑
原代码存在莫名闪退。咱给修改了一下。
#property indicator_chart_window
#property indicator_buffers 5// 修正缓冲区声明为5个(原值为2)
#property indicator_color1 Red
#property indicator_color2 Lime
double g_ibuf_76[];
double g_ibuf_80[];
double g_ibuf_84[];
double g_ibuf_88[];
double g_ibuf_92[];
extern int Pe = 5;
int init() {
IndicatorBuffers(5);
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
SetIndexBuffer(0, g_ibuf_76);
SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2);
SetIndexBuffer(1, g_ibuf_80);
SetIndexBuffer(2, g_ibuf_84);// 非图形缓冲区需声明为5个
SetIndexBuffer(3, g_ibuf_88);
SetIndexBuffer(4, g_ibuf_92);
return (0);
}
int start() {
int li_4 = 0;
int li_8 = IndicatorCounted();
if (li_8 < 0) return (-1);
if (li_8 > 0) li_8--;
int li_0 = Bars - li_8;
// 增加数组边界保护
int array_size = MathMin(Bars, ArraySize(g_ibuf_84));
for (li_4 = 0; li_4 < li_0 && li_4 < array_size; li_4++) {
g_ibuf_84 = iMA(NULL, 0, Pe, 0, MODE_EMA, PRICE_CLOSE, li_4);
}
array_size = MathMin(Bars, ArraySize(g_ibuf_88));
for (li_4 = 0; li_4 < li_0 && li_4 < array_size; li_4++) {
g_ibuf_88 = iMAOnArray(g_ibuf_84, array_size, Pe, 0, MODE_EMA, li_4);
}
array_size = MathMin(Bars, ArraySize(g_ibuf_92));
for (li_4 = 0; li_4 < li_0 && li_4 < array_size; li_4++) {
g_ibuf_92 = iMAOnArray(g_ibuf_88, array_size, Pe, 0, MODE_EMA, li_4);
}
// 防止越界访问:限制li_4+1的范围
for (li_4 = 0; li_4 < li_0 - 1; li_4++) {// 修改循环终止条件
g_ibuf_76 = 6.0 * MathMax(g_ibuf_92, g_ibuf_92) - 5.0 * g_ibuf_92;
g_ibuf_80 = 2.0 * g_ibuf_92 - g_ibuf_76;
}
return (0);
} 华兰先生 发表于 2025-4-12 19:05
原代码存在莫名闪退。咱给修改了一下。
#property indicator_chart_window
厉害了我的大哥 是指标还是EA?
页:
[1]