颜色
MQL 程序可以识别和更改颜色,以显示所有图表元素。对应的特性是 ENUM_CHART_PROPERTY_INTEGER 枚举的一部分。
标识符 |
说明 |
---|---|
CHART_COLOR_BACKGROUND |
图表背景色 |
CHART_COLOR_FOREGROUND |
坐标轴、刻度和 OHLC 线的颜色 |
CHART_COLOR_GRID |
网格颜色 |
CHART_COLOR_VOLUME |
成交量与建仓水平的颜色 |
CHART_COLOR_CHART_UP |
上涨柱线、影线和实体边框的颜色 |
CHART_COLOR_CHART_DOWN |
下跌柱线、影线和实体边框的颜色 |
CHART_COLOR_CHART_LINE |
图表线条和日式蜡烛图轮廓的颜色 |
CHART_COLOR_CANDLE_BULL |
上涨蜡烛图实体颜色 |
CHART_COLOR_CANDLE_BEAR |
下跌蜡烛图实体颜色 |
CHART_COLOR_BID |
买价线颜色 |
CHART_COLOR_ASK |
卖价线颜色 |
CHART_COLOR_LAST |
最后交易价格线(Last)的颜色 |
CHART_COLOR_STOP_LEVEL |
止损和止盈订单水平的颜色(止损位和止盈位颜色) |
作为使用这些特性的示例,我们将创建一个脚本ChartColorInverse.mq5。它会将图形的所有颜色转换为反色,即对颜色的二进制表示采用以下格式进行处理: RGB XOR ('^',XOR)。因此,在同一图表上重新启动该脚本后,其设置将恢复。
#define RGB_INVERSE(C) ((color)C ^ 0xFFFFFF)
|
以下图片将应用脚本前后的图表图像进行了合并。
通过 MQL 程序反转图表颜色
现在让我们完成对IndSubChart.mq5的编辑。我们需要读取主图表的颜色,并将其应用到的指标图表中。有一个函数可以执行这些操作:SetPlotColors,其调用已在 OnChartEvent 处理程序中被注释(请参阅 图表显示模式章节的最后一个示例)。
void SetPlotColors(const int index, const ENUM_CHART_MODE m)
|
在这个新函数中,我们将根据图表的绘制模式,获取上涨和下跌蜡烛图的轮廓及实体颜色,或者线条颜色,并将这些颜色应用到图表中。当然,不要忘记在初始化期间调用此函数。
int OnInit()
|
指标已就绪。尝试在窗口中运行它,并在图表特性对话框中更改颜色。图表会根据新设置自动调整。