标准指标的颜色

 

下午好!

如何改变标准指标的颜色?

谢谢你,米哈伊尔

 
Mikalas:

如何改变标准指标方案的颜色?

我以前从未这样做过,但我有个想法。你应该打开标准指标的代码,找到有indicator_color* 的行。

类似的情况。

//--- японские свечи будут рисоваться цветом clrDodgerBlue
#property indicator_color1  clrDodgerBlue

然后你将插入所需的颜色。另请参阅MQL5参考/ 自定义指标 /指标属性和函数之间的关系以及MQL5参考/ 标准常量、枚举和结构/ 指标常量/ 绘制样式

 

当然,谢谢你。

但事实证明,每次我都要纠正代码?

米哈伊尔

 
Mikalas:

当然,谢谢你。

但这是否意味着你必须每次都要改变代码?

使 "标准 "指标成为你自己的,并在其中插入你的选项。例如(纯粹的想法):把颜色放在输入参数中,然后在Oninit()中用函数PlotIndexSetInteger(N-1,PLOT_LINE_COLOR, nColor)处理它们。参考资料中的例子可以提供帮助。那么你就不能编辑代码本身,而是在启动或改变指标时通过指标的属性设置所需的颜色。
 
Mikalas:

当然,谢谢你。

但事实证明,你每次都要纠正代码?

你的逻辑有问题。你最初的问题是。

米卡拉斯

如何以编程方式改变标准指标的颜色?

 
abolk:

你的逻辑有问题。你原来问过。

亲爱的abolk!

很明显,从你的代码来看。

米哈伊尔

 
Yedelkin:
使 "内部 "指标成为你自己的指标,并在其中插入你的选项。例如(纯粹的想法):把颜色放在输入参数中,然后在Oninit()中通过函数PlotIndexSetInteger(N-1,PLOT_LINE_COLOR, nColor)处理它们。参考资料中的例子可以提供帮助。那么你就不能编辑代码本身,而是在启动或改变指标时通过指标的属性设置所需的颜色。

非常感谢你。

太糟糕了,开发商没有想到这一点。

这段代码应该是有效的,BUT....,唉...。

params[0].type = TYPE_INT;
        params[0].integer_value = 10;
        
        params[1].type = TYPE_INT;
        params[1].integer_value = 0;
        
        params[2].type = TYPE_INT;
        params[2].integer_value = MODE_SMA;
        
        params[3].type = TYPE_INT;
        params[3].integer_value = PRICE_MEDIAN;
        
        params[4].type = TYPE_COLOR;
        params[4].double_value = clrBlue;
        
        ma_handle = IndicatorCreate( NULL, PERIOD_CURRENT, IND_MA, 5, params );
        if ( ma_handle != INVALID_HANDLE )
      {
        ChartIndicatorAdd( 0, 0, ma_handle );
      }
 
Mikalas:

这段代码应该是有效的,BUT....,唉...。

没有IndicatorCreate() 函数工作--事实证明,创建你的自定义指标 更容易。不过,由于你只引用了部分代码,所以有一个问题:你在使用变量params之前是否将其归零了?例如,像这样。

MqlParam params;
ZeroMemory(params); 

而你的条目回收的是什么错误代码?

你做到了。

ArrayResize(params,5);
?

另外,IND_MA(iMA)指标没有 "颜色 "这样的参数,而你已经指定了它看看这里的iMA 使用实例MQL5参考/ 访问时间序列和指标/ IndicatorCreate。

 
Mikalas:

这段代码应该是有效的

这是为什么呢?首先解释为什么颜色是一个实数?

        params[4].type = TYPE_COLOR;
        params[4].double_value = clrBlue;
 

下午好,stringo和Yedelkin!

你可能没有仔细阅读我的信息,其中说到

"太糟糕了,开发商没有想到这一点。"

现在,让我解释一下我为什么要写上面的代码。

从移动平均线的设置中,你可以清楚地看到,该指标有7个参数(5个主要参数+2条线)。

这是它在 "参数 "选项卡中的内容。

如果你可以 "手动 "改变所有的 参数,这意味着必须有

开发者做了什么--以编程方式改变所有 参数!?

IndicatorCreate 函数中,但没有到最后(或它是一个BAG)

马云

MqlParam 结构允许你输入一种颜色--TYPE_COLOR(ENUM_DATATYPE)。

从MQL5参考。

颜色类型 用来存储颜色信息的,在内存中占用4个字节 第一个字节被忽略,其余3个字节包含RGB成分。

......

整数表示法被写成十六进制或十进制数字。十六进制的数字是0x00BBGGRR

//----整数表示法
0xFFFFFFFF //白色
16777215 //白色
0x008000 //绿色
32768 //绿色

引用完毕。

结构 MqlParam
{
ENUM_DATATYPE type; // 输入参数类型,ENUM_DATYPE 的枚举值
long integer_value; // 用于存储整数值的字段
double double_value; // 用于存储双数或浮点数 的字段
string string_value; // 用于存储字符串类型值 的字段
};

(我首先尝试了长的没有成功,然后我又尝试了双的--也没有成功,这仍然在代码中)。

它应该是这样的。

MqlParam params[5];


.........

params[4].type =TYPE_COLOR
params[4].integer_value = clrBlue; // - 蓝色 0x00FF0000 (16711680)

stringo,我回答了你的问题 "为什么不呢"?

再一次,很遗憾开发商没有做颜色的改变。

尊敬的米哈伊尔

 
Mikalas:

下午好,stringo和Yedelkin!

你可能没有仔细阅读我的信息,其中说到

"太糟糕了,开发商没有想到这一点。"

米卡拉斯, 这里已经有这么多专家在为别人下结论了,这让人害怕。请不要增加他们的数量。

接下来,我通过提出具体的、不带感情色彩的问题来帮助你。你不回答他们,而是告诉我 "你的生活是如何走到这一步的"。 你想要什么?-说服别人说有你检测到的错误,或 "以程序方式 "改进你的代码?如果你看到一些 "错误"--联系服务台,并对情况进行完整的描述。如果你想 "程序化 "地工作--深入到指标的创建和运行中。