[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 282

 

先生们,请教如何从指标(FX5_Divergence_V2.1.mq4)中获取背离 信号到EA中。

指示器的缓冲区2和3给出了EMPTY_VALUE。

 
有没有人有一个tick收集器,可以按以下方式保存tick历史:tick到达时间、asc、bid? 代码库中只有一个tick收集器,没有asc。
 
Sergey_Rogozin:

先生们,请教如何从指标(FX5_Divergence_V2.1.mq4)中获取背离 信号到EA中。

指示器的缓冲区2和3给出了EMPTY_VALUE。

我写了你的剧本吗?这里面什么都有。取代Alert的信息输出,写出你的处理。如果DoubleToString()输出的是0,你可以在DoubleToString()中写8,而不是6位小数。在任何情况下,信号都是存在的,而且脚本会读取它们。运用一些头脑和努力。
 
artmedia70:
我给你写了一个剧本吗?这里面什么都有。取代Alert的信息输出,写出你的处理。如果DoubleToString()输出的是0,你可以在DoubleToString()中写8,而不是6位小数。在任何情况下,信号都是存在的,而且脚本会读取它们。运用一些头脑和努力。
真是个顽固的人。让我用手指再次向他解释。
带箭头的缓冲区的空值被填充而不是零,数值EMPTY_VALUE 等于2147483647。在有箭头的地方,数值是不同的,例如0.000031。
我们必须以编程方式过滤掉 "空 "值,因为它们看起来像数字2147483647。
例如,我是这样做的,而且很有效。谁更聪明,谁就能让它更美丽。

double buy=iCustom(NULL,0,"FX5_Divergence_V2.1",2,CountBar);
// отфильтровывает значения EMPTY_VALUE, заменяя их на 0 
if(buy==EMPTY_VALUE) buy=0.0;
// теперь значения buy могут быть либо 0, либо значением стрелки, например, 0,000032
 
granit77:
真是个顽固的人。让我用手指再次向他解释。
带箭头的缓冲区的空值被填充而不是零,数值EMPTY_VALUE等于2147483647。在有箭头的地方,数值是不同的,例如0.000031。
我们必须以编程方式过滤掉 "空 "值,因为它们看起来像数字2147483647。
例如,我是这样做的,而且很有效。谁更聪明,谁就能让它更美丽。

现在,这个人将写出缓冲区2和3只输出0:)))

天啊,这么简单的逻辑:如果缓冲区的值不等于EMPTY_VALUE,就意味着在这个柱子上有一个箭头,因此是一个信号。
而如何呈现这种空洞的价值,与什么相比较,则是一个品味问题。

 
artmedia70:

这里的一切都很血腥混乱......。


到岛上去!!。:)

我有相同的数字(通过专家顾问),但数据窗口显示为EMPTY_VALUE!有什么办法可以解决这个问题吗?


 
granit77:
顽固的人。让我用手指再次向他解释。
带箭头的缓冲区的空值被填充为EMPTY_VALUE,其数值等于2147483647,而不是零。在有箭头的地方,数值是不同的,例如0.000031。
我们必须以编程方式过滤掉 "空 "值,因为它们看起来像数字2147483647。
例如,我是这样做的,而且很有效。谁更聪明,谁就能让它更美丽。



大致理解。

 

artmedia70.

我真的无法使用这个剧本。我试图做与granit77 几乎相同的事但也 没有成功。

如果(buy==EMPTY_VALUE) buy=0.0 ; - 结果总是 "0"。我有来自指标的警报,但附在专家顾问上的警报却不起作用。

好的,谢谢,我将继续 "忍受"......))))。

 
Sergey_Rogozin:

artmedia70.

我真的无法使用这个剧本。我试图做与granit77 几乎相同的事但也 没有成功。

如果(buy==EMPTY_VALUE) buy=0.0 ; - 结果总是 "0"。我有来自指标的警报,但附在专家顾问上的警报却不起作用。

好的,谢谢,我将继续 "忍受"......))))。

你不是唯一一个--痛苦的,我已经在修复指标了:)))
 
todem:

我有相同的数字(通过EA),但数据窗口显示为EMPTY_VALUE!有什么办法可以解决这个问题吗?

当你把缓冲区的值打印到屏幕上时,你会怎么做?反正输出的是数字数据。如果你想输出一个空字符串,或 "空值 "或"EMPTY_VALUE",请将它们作为字符串变量输出。
即......。
stringval;
if(buffer value==EMPTY_VALUE)val="EMPTY_VALUE"。
但是,如果(buffer value!=EMPTY_VALUE)val=DoubleToString(buffer value, 8)。
并显示变量val 的值而不是缓冲区的
比如说。注释("值=",val)。