找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
首页论坛EAHub 外汇论坛
查看: 7|回复: 0

写了一个均线通道指标,使用5、13、144、169、288、338的周期,但不能显示到主图上,有朋友可以帮忙指点一下么?

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-25 18:20:00 | 显示全部楼层 |阅读模式
//+------------------------------------------------------------------+

//|                                              MultiMA.mq4         |

//|                        Custom Multi Moving Average Indicator      |

//+------------------------------------------------------------------+

#property strict

#property indicator_chart_window  // 将指标显示在主图窗口中


// 定义均线周期

input int MA1_Period = 5;      // 第一条均线周期(5)

input int MA2_Period = 13;     // 第二条均线周期(13)

input int MA3_Period = 144;    // 第三条均线周期(144)

input int MA4_Period = 169;    // 第四条均线周期(169)

input int MA5_Period = 288;    // 第五条均线周期(288)

input int MA6_Period = 338;    // 第六条均线周期(338)


// 定义均线类型

input int MA_Method = MODE_SMA; // 均线类型:MODE_SMA(简单移动平均), MODE_EMA(指数移动平均), MODE_SMMA(平滑移动平均), MODE_LWMA(线性加权移动平均)


// 定义均线价格类型

input int MA_Price = PRICE_CLOSE; // 价格类型:PRICE_CLOSE(收盘价), PRICE_OPEN(开盘价), PRICE_HIGH(最高价), PRICE_LOW(最低价)等


// 定义均线颜色

color MA1_Color = clrRed;      // 第一条均线颜色(红色)

color MA2_Color = clrRed;      // 第二条均线颜色(红色)

color MA3_Color = clrYellow;   // 第三条均线颜色(黄色)

color MA4_Color = clrYellow;   // 第四条均线颜色(黄色)

color MA5_Color = clrGreen;    // 第五条均线颜色(绿色)

color MA6_Color = clrGreen;    // 第六条均线颜色(绿色)


// 定义缓冲区

double MA1_Buffer[];  // 第一条均线的数据缓冲区

double MA2_Buffer[];  // 第二条均线的数据缓冲区

double MA3_Buffer[];  // 第三条均线的数据缓冲区

double MA4_Buffer[];  // 第四条均线的数据缓冲区

double MA5_Buffer[];  // 第五条均线的数据缓冲区

double MA6_Buffer[];  // 第六条均线的数据缓冲区


//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//| 自定义指标初始化函数                                             |

//+------------------------------------------------------------------+

int OnInit()

  {

   // 设置指标窗口

   IndicatorBuffers(6);  // 设置6个缓冲区

   IndicatorShortName("MultiMA");  // 设置指标名称

   

   // 设置均线1

   SetIndexBuffer(0, MA1_Buffer);  // 将缓冲区0与MA1_Buffer关联

   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2, MA1_Color);  // 设置均线1的样式:实线,线宽为2,颜色为红色

   SetIndexLabel(0, "MA " + IntegerToString(MA1_Period));  // 设置均线1的标签

   

   // 设置均线2

   SetIndexBuffer(1, MA2_Buffer);  // 将缓冲区1与MA2_Buffer关联

   SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2, MA2_Color);  // 设置均线2的样式:实线,线宽为2,颜色为红色

   SetIndexLabel(1, "MA " + IntegerToString(MA2_Period));  // 设置均线2的标签

   

   // 设置均线3

   SetIndexBuffer(2, MA3_Buffer);  // 将缓冲区2与MA3_Buffer关联

   SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, 2, MA3_Color);  // 设置均线3的样式:实线,线宽为2,颜色为黄色

   SetIndexLabel(2, "MA " + IntegerToString(MA3_Period));  // 设置均线3的标签

   

   // 设置均线4

   SetIndexBuffer(3, MA4_Buffer);  // 将缓冲区3与MA4_Buffer关联

   SetIndexStyle(3, DRAW_LINE, STYLE_SOLID, 2, MA4_Color);  // 设置均线4的样式:实线,线宽为2,颜色为黄色

   SetIndexLabel(3, "MA " + IntegerToString(MA4_Period));  // 设置均线4的标签

   

   // 设置均线5

   SetIndexBuffer(4, MA5_Buffer);  // 将缓冲区4与MA5_Buffer关联

   SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 2, MA5_Color);  // 设置均线5的样式:实线,线宽为2,颜色为绿色

   SetIndexLabel(4, "MA " + IntegerToString(MA5_Period));  // 设置均线5的标签

   

   // 设置均线6

   SetIndexBuffer(5, MA6_Buffer);  // 将缓冲区5与MA6_Buffer关联

   SetIndexStyle(5, DRAW_LINE, STYLE_SOLID, 2, MA6_Color);  // 设置均线6的样式:实线,线宽为2,颜色为绿色

   SetIndexLabel(5, "MA " + IntegerToString(MA6_Period));  // 设置均线6的标签

   

   return(INIT_SUCCEEDED);  // 初始化成功

  }


//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//| 自定义指标计算函数                                               |

//+------------------------------------------------------------------+

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

   // 计算均线

   for(int i = 0; i < rates_total; i++)

     {

      MA1_Buffer = iMA(NULL, 0, MA1_Period, 0, MA_Method, MA_Price, i);  // 计算第一条均线

      MA2_Buffer = iMA(NULL, 0, MA2_Period, 0, MA_Method, MA_Price, i);  // 计算第二条均线

      MA3_Buffer = iMA(NULL, 0, MA3_Period, 0, MA_Method, MA_Price, i);  // 计算第三条均线

      MA4_Buffer = iMA(NULL, 0, MA4_Period, 0, MA_Method, MA_Price, i);  // 计算第四条均线

      MA5_Buffer = iMA(NULL, 0, MA5_Period, 0, MA_Method, MA_Price, i);  // 计算第五条均线

      MA6_Buffer = iMA(NULL, 0, MA6_Period, 0, MA_Method, MA_Price, i);  // 计算第六条均线

     }

   

   // 调试输出

   Print("MA1 Value: ", MA1_Buffer[0]);  // 输出第一条均线的值

   Print("MA2 Value: ", MA2_Buffer[0]);  // 输出第二条均线的值

   Print("MA3 Value: ", MA3_Buffer[0]);  // 输出第三条均线的值

   Print("MA4 Value: ", MA4_Buffer[0]);  // 输出第四条均线的值

   Print("MA5 Value: ", MA5_Buffer[0]);  // 输出第五条均线的值

   Print("MA6 Value: ", MA6_Buffer[0]);  // 输出第六条均线的值

   

   return(rates_total);  // 返回计算的总K线数

  }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EAHub外汇论坛

GMT+8, 2026-10-11 18:01 , Processed in 0.059770 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表