错误、漏洞、问题 - 页 553

 
Urain:

然后在档案主题中提出建议(虽然没有错)。

好吧......。我认为这是一个错误。根据我的理解,如果在日历中,我可以选择期末是今天的日期。
那么测试器和优化器就应该工作到当前时间,但这并没有发生((
开发者意识到了这一点,他们有能力做出一个好的平台。如果没有,那就没有。

 

我读了这篇文章《初学者编写MQL5专家顾问的分步指南》https://www.mql5.com/ru/articles/100,发现其中有以下几句话。


对于3位和5位数的报价,我们将止损和止盈值乘以10。

终端中包含的 "MACD样本 "包含相同的信息。

//---
int digits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10。

m_adjusted_point=m_symbol.Point()*digits_adjust。

这个行动是什么?为什么用小数点后3位和5位的变量乘以10?

Пошаговое руководство по написанию MQL5-советников для начинающих
Пошаговое руководство по написанию MQL5-советников для начинающих
  • 2010.06.09
  • Samuel
  • www.mql5.com
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
 
progeon:

我读了这篇文章《初学者编写MQL5专家顾问的分步指南》https://www.mql5.com/ru/articles/100,发现其中有以下几句话。

对于3位和5位数的报价,我们将止损和止盈值乘以10。

终端中包含的MACD样本包含相同的信息。

//---
int digits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10。

m_adjusted_point=m_symbol.Point()*digits_adjust。

这个行动是什么?为什么用小数点后3位和5位的变量乘以10?

这是为那些习惯于用四位数计算一切,不想重新调整的人准备的。

因此,如果我们在参数中设置100点的止损,在五位数的计算中得到1000点,在四位数的计算中得到100点,这是相同的。

四位数的数字有优势,便于重新计算利润,占投资资金的1 pip 1%。

 
progeon:

我读了这篇文章《初学者编写MQL5专家顾问的分步指南》https://www.mql5.com/ru/articles/100,发现其中有以下几句话。

对于3位和5位数的报价,我们将止损和止盈值乘以10。

终端中包含的 "MACD样本 "包含相同的信息。

//---
int digits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10。

m_adjusted_point=m_symbol.Point()*digits_adjust。

这算什么行动?为什么要用小数点后3位和5位的变量乘以10?


为了更好地兼容不同的经纪商(提供4或5位数的报价),也就是说,不需要改变专家顾问的参数。

这种算法是基于这样一个事实:在提供4位数报价的经纪商,_位数可能是4或2(通常在有日元的货币对)

以及相应的5位数的5和3。

虽然,我对这种方法的安全性感兴趣,因为有一些工具_Digits值不同

我个人是用 "EURUSD "来检查。但至少在MT4中,有的经纪商的欧元美元名称略有不同,例如EURUSD_fx

或类似的东西。

 
crOss:
пункты 1 и 2 уходят, если фиксировать правое время на момент начала теста/оптимизации.
никто не просит актуальность до секунды... но один торговый день - это, извините, ни в какие ворота.

Urain

然后你不仅要输入年月日,还要输入结束的小时:分钟。

不一定,时间可以在测试/优化运行时纯粹以编程方式固定。

说实话,我觉得这个建议很有道理。我完全支持。

目前,这与我无关,但可能很快就会非常理想了。

 
Urain:

这是为那些习惯于用四位数计算一切的人准备的,他们不想重建。

因此,在参数中设置100点的止损,我们得到的是五位数的1000点,和四位数的100点的重新计算,这是相同的事情。

四位数的数字有好处,很容易重新计算利润,1个点就能赚取投资资金的1%。

我明白了,让我们继续)另一个问题--同一篇文章在形成止损和止盈时使用了NormalizeDouble函数,这是什么原因?这似乎毫无意义。

mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - Документация по MQL5
 
progeon:

我明白了,让我们继续)这样一个问题--在同一篇文章中,在形成止损和止盈时使用了NormalizeDouble函数,这是什么原因?这似乎毫无意义。

在等级计算过程中,会进行带倍数的操作,结果不会被规范化,如果按原样传给服务器,你会得到重新报价。这就是为什么计算的结果是正常化的。
 
Urain:
不存在无意义的问题,在计算水平时,要进行双数的操作,结果不会被规范化,如果你把它原封不动地传给服务器,你会得到重新报价。这就是为什么计算的结果是正常化的。
假设止损是100,点位是 0.00001,两者相乘可能出现什么情况?9号车会不会在某个地方出现?例如0.0009999?
 
progeon:
比方说,止损100,点数0.00001。当它们相乘时,可能会出现什么情况?9号车会不会在某个地方出现?例如0.0009999?
   double a=1.45861+32*_Point;
   Print(DoubleToString(a,16));

似乎一个正常的数字应该是1.45893,但我们得到的是1.4589300000000002。

 
Renat:

我们计划在EA信息中制作一个 "安全 "标签,其中显示安全级别和被调用的DLL函数列表。

正好赶上商店的启动,我们将在EX5文件上下功夫。

Renat,还有两个关于新的EX5格式中DLL调用的问题。

1.当调用被禁用时,代码将如何表现?就像现在--它甚至不会运行吗?

2.如果不能启动,MQL5_DLLS_ALLOWED /TERMINAL_DLLS_ALLOWED 是干什么的