今天我们来聊聊 周日颜色指示器 的改进版本。这款指示器将每个星期天都用不同的颜色标记,让你一目了然:



使用 DRAW_COLOR_HISTOGRAM 样式时,需要设置 两个缓冲区(一个是值缓冲区 HistogramBuffer,另一个是颜色缓冲区 HistogramColors):
//+------------------------------------------------------------------+//| 周日颜色.mq5 |//| 版权 © 2018, Vladimir Karputov |//| http://wmua.ru/slesar/ |//+------------------------------------------------------------------+#property copyright"版权 © 2018, Vladimir Karputov"#property link "http://wmua.ru/slesar/"#property version "1.000"#property indicator_separate_window#property description"以颜色直方图形式显示的周日"#property indicator_separate_window#property indicator_buffers2#property indicator_plots 1//--- 绘制直方图 #property indicator_label1 "日期颜色"#property indicator_type1 DRAW_COLOR_HISTOGRAM//--- 定义8种颜色用于着色#property indicator_color1 clrCyan,clrRed,clrYellowGreen,clrBlue,clrYellow,clrNavy,clrGold,clrMediumSeaGreen#property indicator_style1 STYLE_SOLID#property indicator_width1 2//--- 指标缓冲区 double HistogramBuffer[];double HistogramColors[]; //+------------------------------------------------------------------+//| 自定义指标初始化函数 |//+------------------------------------------------------------------+
颜色设置在以下代码行:
//--- 定义8种颜色用于着色#property indicator_color1 clrCyan,clrRed,clrYellowGreen,clrBlue,clrYellow,clrNavy,clrGold,clrMediumSeaGreen
在这里,clrCyan 的索引为 "0",clrRed 的索引为 "1",依此类推。
直方图颜色的管理是通过为每个 HistogramColors 缓冲区的索引分配一个独立的 颜色索引 来实现的:
switch(STime.day_of_week) { case 0: HistogramBuffer[i]=0; HistogramColors[i]=0; break; case 1: HistogramBuffer[i]=1; HistogramColors[i]=1; break; case 2: HistogramBuffer[i]=2; HistogramColors[i]=2; break; case 3: HistogramBuffer[i]=3; HistogramColors[i]=3; break; case 4: HistogramBuffer[i]=4; HistogramColors[i]=4; break; case 5: HistogramBuffer[i]=5; HistogramColors[i]=5; break; case 6: HistogramBuffer[i]=6; HistogramColors[i]=6; break; }

评论 0