初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1130

 
The_Sheikh:

像这样


只是我的情况。

下面是手册中DRAW_COLOR_HISTOGRAM2的例子中的一段。

这里 plot_colors = 8, cols[] - 不同颜色的数组。但是终端不接受任何颜色,除了第一种。

你会给第一张图分配一个直方图吗?而颜色缓冲区 则在第二轮之后。它应该在第一条之后进行。

 
Artyom Trishkin:

你会给第一张图分配一个直方图吗?而颜色缓冲区 则在第二轮之后。它应该在第一条之后进行。

哪个是第一个?哪一个第二?哪一个先?我们在谈论什么?

给我一个例子,这样我就不用拐弯抹角了。

 
The_Sheikh:
第一个是什么?哪一个第二个? 哪一个先?我们在谈论什么?

举个例子,不要绕弯子。

拟定你的目标。描述你想从指标中得到什么。

 
Vladimir Karputov:

说明你的目标。描述你想从指标中得到什么。

你在取笑它吗?

https://www.mql5.com/ru/forum/6343/page1129#comment_13439765

 
The_Sheikh:

你在跟我开玩笑吗?

https://www.mql5.com/ru/forum/6343/page1129#comment_13439765

这可不行。你给出的是短语的片段。在这种情况下,普遍的答案是:文件


当你不再赌气和被冒犯时,制定我所要求的。

关于交易、自动交易系统和测试交易策略的论坛

初学者的问题 MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.10.06 06:49

界定你的问题。描述你想从指标中得到什么。

所以现在根本不清楚你在做什么,最重要的是不清楚为什么。不清楚最终目标是什么--因此没有人能够猜测。
 
The_Sheikh:

像这样


正是我的情况。

下面是手册中DRAW_COLOR_HISTOGRAM2的例子中的一段。

这里plot_colors = 8,cols[]是含有不同颜色的数组。但是,除了第一种颜色之外,终端并没有感知到任何颜色。

这恰恰相反。这在文档中的这行代码中填入了一个 要分配的颜色数组

ColorHistogram_2Colors[i]=day; 
 
Vladimir Karputov:

这是不好的。你给出的是短语的片段。在这种情况下,普遍的答案是:文件

当你停止赌气和被冒犯时,制定我要求你做的事情。

也就是说,不清楚你在做什么,最重要的是,不清楚你为什么要这样做。不清楚最终目标是什么--因此没有人能够猜测。

我问了一个问题,指出了问题,举了一个例子,这个例子甚至可以被编译。如果这对你不起作用,那么你就不知道你在说什么,因此不知道答案。在这种情况下,普遍的答案是学习阅读。

当你不再自作聪明,学会阅读和制定自己的问题时,这个话题就会变得清晰起来。

最终目标:用每种给定的颜色画出直方图。


阿列克谢-维克多罗夫

这正是它所不具备的。它在文档中的这行代码中填写了一个 要分配的颜色数组

这是正确的,它是以一系列的颜色填充的。正如我之前写的,下面的方式(从例子中)颜色被正确地填入和指定。

#property indicator_color2 GreenC,RedC

...

Arr23[i]=0.0; //绿色

Arr23[i]=1.0; //Rred


而用这种方法。

PlotIndexSetInteger(1,PLOT_LINE_COLOR,0,GreenC;)
PlotIndexSetInteger(1,PLOT_LINE_COLOR,1,RedC)。
...

Arr23[i]=0.0; //绿色

Arr23[i]=1.0; // 我们得到的不是红色而是黑色(即没有指定颜色)。

 
The_Sheikh:
先去哪一个?哪一个第二?哪一个先? 我们在谈论什么?

给我一个例子,这样我就不用拐弯抹角了。

#property indicator_chart_window
//#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots 2

#define  GreenC 0x00FF00
#define  RedC 0x0000FF
#property indicator_type1 DRAW_NONE
#property indicator_type2 DRAW_COLOR_HISTOGRAM2
//#property indicator_color2 GreenC,RedC

double
Arr11[],
Arr21[],
Arr22[],
Arr23[];

void OnInit()
{
SetIndexBuffer(0,Arr11,INDICATOR_CALCULATIONS);
SetIndexBuffer(1,Arr21,INDICATOR_DATA);
SetIndexBuffer(2,Arr22,INDICATOR_DATA);
SetIndexBuffer(3,Arr23,INDICATOR_COLOR_INDEX);
IndicatorSetInteger(INDICATOR_DIGITS,Digits());
PlotIndexSetInteger(1,PLOT_LINE_WIDTH,4);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,0,GreenC);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,1,RedC);
//PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);

第二

你将第一个缓冲区设置为颜色直方图。第二个是干什么的?还有,为什么颜色缓冲区 在第二个之后,而它应该在第一个之后。你的颜色缓冲区 是3,它应该是2。

 
Artyom Trishkin:

第二第三

你将第一个缓冲区设置为颜色直方图类型。你需要第二条做什么?还有,为什么颜色缓冲区 在第二个之后,而它应该在第一个之后。你的颜色缓冲区 是3,而它应该是2。

Artyom,你没有注意到类型是DRAW_COLOR_HISTOGRAM2,它有两个数据缓冲器和第三个颜色缓冲器。

 
The_Sheikh:

我问了一个问题,指出了问题,举了一个例子,这个例子甚至可以被编译。如果它不适合你,那么你就不知道它是关于什么的,因此不知道答案。在这种情况下,普遍的答案是学习阅读。

当你不再自作聪明,学会阅读和制定自己的问题时,这个话题就会变得清晰起来。

最终目标:用每种给定的颜色画出直方图。


这是正确的,它填补了颜色阵列。正如我之前所写的,下面的方法(来自于例子)可以填充颜色并正确地指定它们。

#property indicator_color2 GreenC,RedC

...

Arr23[i]=0.0; //绿色

Arr23[i]=1.0; //Rred


而用这种方法。

PlotIndexSetInteger(1,PLOT_LINE_COLOR,0,GreenC)。
PlotIndexSetInteger(1,PLOT_LINE_COLOR,1,RedC)。
...

Arr23[i]=0.0; //绿色

Arr23[i]=1.0; //我们得到黑色而不是红色(即没有指定颜色)。

为什么这一行被注释掉了?

//#property indicator_color2 GreenC,RedC
虽然其他颜色必须包括在其中。或者至少有一个,但必须有一个声明。