mql4语言的特点、微妙之处以及技巧 - 页 17

 

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

mql5语言的特点、技巧和窍门

fxsaber, 2019.02.20 07:26

在所有的测试器模式中,价格并没有被规范化!

说得温和一点,这是测试器的一个错误。


这是否也适用于比尔特模式,我不知道。

 

如果这偏离主题,请原谅(不能说我关注语言发展),你能解释一下这一行的具体作用吗?

#property strict

让我解释一下。

有一个脚本可以比较两个(MT中相同的)价格。

#property strict

void OnStart()
{
   const int Total = OrdersHistoryTotal();
   int Prices1, Prices2;
   
   double open_price, close_price;
   OrderSelect("37027330", SELECT_BY_TICKET, MODE_HISTORY);
   open_price = OrderOpenPrice();
   close_price = OrderClosePrice();

   Print(open_price);
   Print(close_price);
   Print(open_price-close_price);
   
   return;
}

在MT中,价格是相等的,但差异不等于零(如上文所写)。

如果删除这一行(#property strict),差异为零。

为什么?

 
Dmitry Rannev :

如果这偏离主题,请原谅(不能说我关注语言发展),你能解释一下这一行的具体作用吗?

让我解释一下。

有一个脚本可以比较两个(MT中相同的)价格。

在MT中,价格是相等的,但差异不等于零(如上文所写)。

如果删除这一行(#property strict),差异为零。

为什么?

"#property strict "只对mql4有用对于mql5,它是无用的,因为 "严格 "模式总是真的。
 
Alain Verleyen:
"#property strict "只对mql4有用对于mql5,它是无用的,因为 "strict "总是真的。

这就是我们所说的MT4。上面已经讨论了规范化的问题。我们想了解为什么MT4中的一些价格是相等的,而在比较时却不是。这是一个延续的过程。

 
Dmitry Rannev:

这就是MT4的意义所在。上面已经讨论了规范化的问题。我们想了解为什么MT4中的一些价格是相等的,而在比较时却不是。这是一个延续。

迪米特里,这个话题已经被消磨殆尽。请原谅我透露了一个秘密,但你有像基里尔(又名程序员)、谢尔盖 ...我不会说姓氏,"太有名了,不能透露"©他们都知道......。

 
Dmitry Rannev:

如果这偏离主题,请原谅(不能说我关注语言发展),你能解释一下这一行的具体作用吗?

让我解释一下。

有一个脚本可以比较两个(MT中相同的)价格。

在MT中,价格是相等的,但差异不等于零(如上文所写)。

如果删除这一行(#property strict),差异为零。

为什么?

void OnStart()
{
  double Price1 = DBL_EPSILON;
  double Price2 = 0;

  Print(Price1 - Price2);          // 0 - грубо показывает.
  Print((Price1 - Price2) * 1 e15); // не ноль
}


严格对平等没有影响。只有在打印 时--要么粗略地显示,要么更准确地显示数字。

 
Dmitry Rannev:

在MT中,价格是相等的,但差异不是零(如上面写的)。

如果这一行(#property strict) 被删除,那么差别就是零。

双重类型的数字不能被检查是否相等(包括零),我们需要将它们的差值与最小值进行比较(DBL_EPSILON, FLT_EPSILON, Point)。

 
Ilya Malev:

双重类型的数字不能被检查是否相等(包括零),我们需要将它们的差值与最小值进行比较(DBL_EPSILON, FLT_EPSILON, Point)。

这不是我们正在谈论的问题。

 
fxsaber:

这是关于别的东西。

我试着想象是什么原因导致了这个问题,得出的结论是算法中可能存在一些错误,而不仅仅是关于打印的问题。

 
Ilya Malev:

我试图想象是什么导致了这个问题,并得出结论,可能是算法中存在一些错误,而不仅仅是一个关于打印的问题。

该问题在上文由fxsaber描述。我们正在努力寻找原因。