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



使用 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_buffers 2 #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; }