[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 544

 
silhouette:

请帮助我正确理解在震荡器上寻找背离的问题。在这种情况下,让它成为MACD。我已经勾勒出了以下算法。

1)从头开始数柱子,寻找震荡器上的峰值。

2)创建包含峰值时间的数组。

并在条件满足的情况下将MACD[i]值输入其中。最后一个新峰的索引必须是[n],而倒数第二个则是[n+1]。

3)让我们考虑情况(1)下的进一步解决方案。

实际上,第2点的问题是:如何像在时间序列中那样组织这样一个数组,以便在每一个新的峰值时,数值会发生变化?


请帮助我们!
 
paladin80:

决定在你的代码中探究一下......。


我非常感谢你对我的代码进行分析。谢谢你花时间来做这件事。

我刚刚开始学习编程,所以这些意见非常重要,对将来有帮助。

现在进入正题。

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {   if(OrderSymbol() != Symb) continue;
          if(OrderMagicNumber() != 777) continue;
          return;
      }
   }
}

真的,在这种形式下进行订单的全面搜索,并使用开放的订单进行进一步的分析(这里的一切都很清楚)。

Symb=  Symbol();
...
Min_Lot= MarketInfo(Symbol(),MODE_MINLOT);
...
Steep=   MarketInfo(Symbol(),MODE_LOTSTEP);

这一部分的代码也被修改了,但论坛参与者写道,市场环境并不总是可用的init()函数。

有些变量可能没有被定义,或者我弄错了什么?

我不明白这个帖子的逻辑--(我在解释我对这个运营商的看法)

while(true)
...

我有一个错误处理块。

if (Fun_Error(GetLastError())==1)      // Обработка ошибок
continue;                              // Повторная попытка

如果错误是正确的,我们会再次尝试检查条件并打开订单。

而当运算符 的值为真时,它就会起作用,也就是说,事实证明它不接受假。

谢谢你们的帮助。

 
silhouette:

请帮助我们!


在此阅读:https://www.mql5.com/ru/articles/1357 这是简单明了的。

 
r772ra:


在此阅读:https://www.mql5.com/ru/articles/1357 这是简单明了的。

谢谢你!
 
日安,请帮助,我无法调整我的专家顾问(开仓和平仓订单不能像预期的那样工作(每次都跨越随机指数),在随机指数上开仓的情况非常少,我不明白为什么((((),同时所有订单都只在止损或止盈时关闭(错误票号,也不明白错误在哪里)。感谢任何答案。
附加的文件:
 
Vinin:
只是别忘了,市场环境并不总是在init()中可用。
坦率地说,我对这个消息非常感兴趣。我试着想象在什么情况下市场环境可能无法使用:也许在启用EA的时候出现连接故障,或者如果你在周六或周日运行EA。我没有注意到我的这种问题。一方面,他们说可以在init()中循环寻找一个值,但我认识到init()在时间上是有限的。也许在新条形图出现时开始start()(至少在M1),从市场环境中寻找价值,这比在每个tick 上更好。
 
Pacman:


我非常感谢你对我的代码进行分析。谢谢你花时间来做这件事。

...

而while语句在其值为真时起作用,也就是说,事实证明它不取假。

在while中,你应该放置一个至少可以取两个值的条件,例如,标志(真或假)。如果代码中应该包含一个常数(真)而不是一个条件,那么while是没有用的。去掉while(true)和括号,你会得到同样的结果。
 
向行家们提问。在OrderSend() 的帮助中,滑点是3。例如,是针对4位数的报价吗?对于5位数的报价,我们可以留下3位,还是需要30位?
 
paladin80:
向专家顾问提问。代替滑点的OrderSend()是3,是否是针对4位数的报价?对于5位数的报价,我可以留下3位还是需要30位?

对于5位数的,你需要30个。

我在每个EA的init()中插入这样的结构,然后对4或5位数的DT没有区别,我推荐它。

  if (Digits==3 || Digits==5){myPoint=Point*10; slpg=slpg*10;}
  else myPoint=Point; 
 
谁知道测试速度是否可以提高?