来自一个 "傻瓜 "的问题 - 页 79

 
Rosh:
是的,由我自己来。原则上,我可以在MQL5中发布计算的代码。
这将是非常感谢的。 它将简化一些任务。
 

请告诉我如何正确比较Double ( == < > )。它是否需要被规范化?例如,在MT4中就有这样一个功能。

CompareDoubles(double number1,double number2)
{
如果(NormalizeDouble(number1-number2,8)==0) 返回(true)。
否则返回(false)。
}

一般来说,NormalizeDouble()函数 的近似算法是什么?

Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - Документация по MQL5
 
220Volt:

请告诉我如何正确比较Double ( == < > )。它是否需要被规范化?例如,在MT4中就有这样一个功能。

CompareDoubles(double number1,double number2)
{
如果(NormalizeDouble(number1-number2,8)==0) 返回(true)。
否则返回(false)。
}

你可以在《手册》中找到这些建议。看看吧。
 
220Volt:

请告诉我如何正确比较Double ( == < > )。它是否需要被规范化?例如,在MT4中就有这样一个功能。

CompareDoubles(double number1,double number2)
{
如果(NormalizeDouble(number1-number2,8)==0) 返回(true)。
否则返回(false)。
}

一般来说,NormalizeDouble()函数 的近似算法是什么?

一般来说,当比较两个双倍类型的数字时,建议取其差值并与允许的阈值进行比较。但我通常直接比较--我从来没有遇到过任何问题。
 

众所周知,在图表的开头,历史是不正确的,"为什么不正确 "的问题并没有出现。

另一个问题出现了:我们如何以编程方式确定边界,超过这个边界,不正确的历史数据就会出现?

红色竖线表示边界。

 
joo:

众所周知,在图表的开头,历史是不正确的,"为什么不正确 "的问题并没有出现。

另一个问题出现了:我们如何以编程方式确定边界,超过这个边界,不正确的历史数据就会出现?

红色竖线表示边界。


有什么方法可以尝试从缺口的频率来判断吗?计算一定时期内的差距。
 
tol64:
也许人们可以尝试以某种方式通过间隙的频率来确定?计算一定时期内的差距。

有很多方法可以得到扭曲。但我没有看到任何真正可靠的。因为没有真正的标准来判断每个单条数据的 "真实性"。

所有的图表都是基于分钟条形图。它可以通过程序计算,直到可以正确建立适当的时间框架的日期。但这里也有一个 "然而"。然而,分钟TFs对整个历史深度也不正确。

我不知道,IMHO,我们需要一个常规机制来识别这种限制,类似于

int Correct_Boundary_of_Timeframe
(
string symbol_name,       // имя символа
ENUM_TIMEFRAMES timeframe  // период
);

-返回所要求的TF的符号的最后一个有效条形的索引。

 
joo:

我不知道,IMHO,我们需要一个内部机制来定义这种限制,比如说

-返回所要求的TF的最后一个有效工具的指数。

这将是最理想的。提供这些破碎的数据到底是为了什么?
 
joo:

-返回所要求的TF的最后一个有效工具的指数。

我也想要一个这样的东西。
 
joo:

有很多方法可以得到扭曲。但我没有看到任何真正可靠的。因为没有真正的标准来判断每条数据的 "真实性"。

所有的图表都是基于分钟条形图的。它可以通过程序计算,直到可以正确建立适当的时间框架的日期。但这里也有一个 "然而"。然而,一分钟的TFs也没有正确到历史的全部深度。

我不知道,我认为我们需要一个特殊的机制来定义这种限制,比如说

-返回所要求的TF的符号的最后一个正确的条形图的索引。

所以,如果你不介意把所有的历史都读到过去,那么我觉得没有问题。找出每个柱子的开盘和收盘时间,看看这些柱子内的秒数。如果低于预期,就写一个 "假 "吧。这将是一个转折点,在这之后,所有其他的酒吧都将是不完整的。进一步搜索没有任何意义。