文章 "MQL5 向导:如何创建交易信号模块" - 页 3

 
在新版 MQL5 向导中,信号模块的格式发生了变化。有关信息请参见此处 -https://www.mql5.com/ru/forum/3724/66962#comment_66962。
Обсуждение статьи "Мастер MQL5: Новая версия"
Обсуждение статьи "Мастер MQL5: Новая версия"
  • www.mql5.com
Изменения в архитектуре сигналов позволяют теперь создавать торговые роботы на основе комбинации различных рыночных моделей.
 
Rosh:
在新版 MQL5 向导中,信号模块的格式发生了变化。有关信息,请参见此处 -https://www.mql5.com/ru/forum/3724/66962#comment_66962。

我进行了这些更改,向导看到了新的信号模块,但生成的智能交易系统由于某种原因无法进行交易。我可以使用调试功能来获取 CheckOpenShort/CheckOpenLong 函数吗?
 
我查看了信号文件夹中几个准备就绪的信号的代码,其中没有 CheckOpenShort/CheckOpenLong 函数的实现。取而代之的是
//--- 检查市场模型是否形成的方法
   virtual int       LongCondition();
   virtual int       ShortCondition();
我的理解正确吗?在编写我自己的模块时,我是否也需要实现它们?CExpert 类 说明何时出现?
 
beginner:

我查看了信号文件夹中几个准备就绪的信号的代码,其中没有 CheckOpenShort/CheckOpenLong 函数的实现。我是否正确使用了它们?
是的,没错。
 
Rosh:
是的,没错。

说实话,我有点困惑。CExpertSignal 类中 有 CheckOpenShort/CheckOpenLong 函数。你在信号中使用了其他函数,但我也不明白 CExpert 在哪里调用了这些函数。问题是,我从关于编写自己的信号模块的文章中获取了一个现成的信号,让向导看到了它(你或许可以对关于新格式的文章进行修改),并用这个信号得到了一个智能交易系统,但它并没有进行交易,一年来测试器中没有一笔交易。

在构造函数中调用函数--这很清楚,但为什么不使用标准函数呢?

 
请看看出了什么问题。不在测试仪中交易。
附加的文件:
1.mq5  7 kb
 
beginner:

请看看出了什么问题。测试仪中没有交易。

该模块正在交易。

对于您的情况,将多头替换为

if(  High(1) > High(2) && Low(2)>Low(3) && High(2)<High(3) && Close(3)>Open(3) ){
     return(100);
   }
//--- условие не выполнено
   return(0);  
  }

替换为

Open(1)< Open(2)

短线 - 自己查找

附加的文件:
 
gdtt:

该模块交易

的情况下,将多头替换为

替换为

换成短线,你自己就会发现。

是的,谢谢!我花了一天的时间,我想我做了文章中的所有事情,我的错误在哪里?
 
beginner:
是的,谢谢!我花了一天的时间,我想我做的一切都和文章里说的一样,我的错误在哪里?

在新的向导中,与以前的向导相比,有非常大的变化、

virtual bool CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration);

virtual bool CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration);

我的理解如下:在 Expert Advisor 中使用的多个对象中,应该有一个 CExpertSignal 类对象具有主属性,它可以使用这些函数。

virtual int ShortCondition(); // 检查卖出开仓条件

virtual int LongCondition(); // 检查买入建仓条件

为了点到为止,我们需要一篇关于如何在新向导中编写自己的信号模块的文章,我们拭目以待。

 
是的,文章丢失了,CExpertSignal 文档可能也需要更新。