文章 "6 步创建您自己的交易机器人!" - 页 2

 
bivmail:

我正兴奋不已,但却无法解决这个问题(通讯--我读到过内存地址转移的信息,但也没有用):

编译器返回错误信息 "m_MethodFast" - 需要常量表达式,"m_MethodSlow" - 需要常量表达式。

当然,这些都是傻瓜才会问的问题。也许我应该在另一个主题中提出这样的问题,这样就不会堵塞这篇文章了?


ENUM_MA_METHOD l_array1_select_method[2];
l_array1_select_method[0]=MethodFast();
l_array1_select_method[1]=MethodSlow();
 

是啊第二种方法也不太奏效:

它绊倒了

1)'=' - l 值必须是 //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - EnumToString 的参数必须是一个枚举 //...EnumToString(l_array1_select_method_n2.At(i_array1_n2)));

表达式不是布尔型

#include <Arrays\ArrayInt.mqh>
   CArrayInt l_array1_select_method_n2;
   l_array1_select_method_n2.Add(m_MethodFast);
   l_array1_select_method_n2.Add(m_MethodSlow);
   //int total_array1_n2=l_array1_select_method_n2.Total()-1;// ArraySize(l_array1_select_method_n2);

   CArrayInt l_array2_enum_ma_method_n2;
   l_array2_enum_ma_method_n2.Add(MODE_SMA);
   l_array2_enum_ma_method_n2.Add(MODE_EMA);
   l_array2_enum_ma_method_n2.Add(MODE_SMMA);
   l_array2_enum_ma_method_n2.Add(MODE_LWMA);

   bool YesErrorsFlag_n2=false;
   for(int i_array1_n2=0;i_array1_n2<l_array1_select_method_n2.Total()-1;i_array1_n2++)
     {
      if(l_array2_enum_ma_method_n2.Search(l_array1_select_method_n2.At(i_array1_n2))=-1)
        {
         YesErrorsFlag_n2=true;
         PrintFormat("平滑类型 %s 移动平均无效!",EnumToString(l_array1_select_method_n2.At(i_array1_n2)));
        }
     }

   if(YesErrorsFlag_n2)
     {
      return(false);
     }

现在这样做没有任何实际意义。让我们保持示例中的原样...

 
bivmail:

是啊第二种方法也不太奏效:

它绊倒了

1)'=' - l 值必须是 //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - EnumToString 的参数必须是一个枚举 //...EnumToString(l_array1_select_method_n2.At(i_array1_n2)));

表达式不是布尔型

现在这样做没有任何实际意义。让我们保留示例中的原样....。

让我们附上适合编译的代码(因为远程处理很繁琐)。
 

你好,我遇到了以下问题。

我已经按照说明完成了所有步骤。我编译了 EA 并尝试对其进行测试--在测试的整整一年中没有发生任何交易,而且出现了错误--遗传传递(nn,序列号)测试时出现错误 "无法初始化专家"。

我试着从文章附带的 ma_cross.mqh 信号中编译智能交易系统,也出现了同样的错误。最后,我又尝试了文章中附带的现成的智能交易系统,也是同样的错误!!!问题出在哪里?请问问题出在哪里?


 
尝试重新编译所提供的自定义指标"自定义移动平均线.mq5"。如果自定义移动平均线.ex5 文件的版本与编译器的当前版本不一致,则在初始化生成的 "智能交易系统 "时不会创建指标句柄。看来您遇到了这种情况。
Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

感谢您的帮助,我重新编译了程序,但问题依然存在。此外,我想说明的是,我一周前从 metatrader 官方网站下载了 metatrader,因此我怀疑是否有什么东西已经过时了。

此外,我还尝试在两台不同的电脑上测试这个智能交易系统。

 
danielalmaty:

感谢您的帮助,我重新编译了程序,但问题依然存在。此外,我想说明的是,我一周前从 metatrader 官方网站下载了 metatrader,因此我怀疑是否有什么东西已经过时了。

此外,我还尝试在两台不同的电脑上测试这个智能交易系统。

您应该尝试运行单个测试(而不是优化)。日志中将包含更多有关 "智能交易系统 "未初始化原因的详细信息。
 

我试着在没有优化的情况下进行了一次测试,没有出错,一切都很顺利,但在整个测试期间没有进行过一次交易。

 
danielalmaty:

我试着在没有优化的情况下进行了一次测试,没有错误,一切都很顺利,但在整个测试期间没有进行过一次交易。

您能显示智能交易设置并告诉我 是在哪个交易服务器上进行测试 的吗?您有活跃账户吗?
 

开始在 MIGBank 演示服务器上进行测试

智能交易系统的设置如下

//+------------------------------------------------------------------+
//| 输入|
//+------------------------------------------------------------------+
//--- 专家输入
input string         Expert_Title             ="ssssa";  // 文件名称
ulong                Expert_MagicNumber       =847;      // 
bool                 Expert_EveryTick         =false;    // 
//--- 主信号输入
input int            Signal_ThresholdOpen     =10;       // 要打开的信号阈值 [0...100]
input int            Signal_ThresholdClose    =10;       // 要关闭的信号阈值 [0...100]
input double         Signal_PriceLevel        =0.0;      // 执行交易的价格水平
input double         Signal_StopLevel         =50.0;     // 止损水平(单位:点)
input double         Signal_TakeLevel         =50.0;     // 止盈水平(点数)
input int            Signal_Expiration        =4;        // 挂单到期(以条为单位)
input int            Signal_MaCross_FastPeriod=13;       // My_MA_Cross(13,MODE_SMA,21,...) 快速 MA 周期
input ENUM_MA_METHOD Signal_MaCross_FastMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) 快速 MA 方法
input int            Signal_MaCross_SlowPeriod=21;       // My_MA_Cross(13,MODE_SMA,21,...) 慢速 MA 周期
input ENUM_MA_METHOD Signal_MaCross_SlowMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) 慢速 MA 方法
input double         Signal_MaCross_Weight    =1.0;      // My_MA_Cross(13,MODE_SMA,21,...) 权重 [0...1.0]
//--- 资金投入
input double         Money_FixLot_Percent     =10.0;     // 百分比。
input double         Money_FixLot_Lots        =0.1;      // 固定音量

正如我所说,我试着运行了文章中附带的智能交易系统,结果也是一样。因此,您只需下载文章中的文件,就可以看到设置。