文章 "MQL5 Wizard:新版本" - 页 4

 

1.您能告诉我如何反转信号吗?

例如:要确认英镑/美元买入信号,我们需要一个 MACD 欧元/英镑卖出信号。

还是在库代码中挖掘,将 "加号 "改为 "减号",然后以不同的名称将其保存为库,这样会更容易些?

附注:在创建智能交易系统 时,最好能选择采用哪种信号:正向信号还是反向信号。

2.如何取出缝入库中的模式权重,以优化这些权重?

 
52_rus:

1.你能告诉我如何反转信号吗?

例如:要确认英镑/美元买入信号,我们需要一个 MACD 欧元/英镑卖出信号。

或者,是否更容易挖掘库代码,将 "加 "改为 "减",并以不同名称保存为库。

附注:如果能在创建智能交易系统 时选择采用哪种信号:正向信号还是反向信号,那就更好了。

2.如何取出缝入库中的模式权重,以优化这些权重?

1.反转(和忽略)信号的机制已内置在 CExpertSignal 基类中,但遗憾的是,向导尚未提供。

2 模式权重也是如此。

请附上 "向导 "后获得的智能交易系统的源代码,并作简要说明。我将尝试解释如何 "手工 "操作。

PS.将开发 "向导",稍后将提供这些设置。

 

1.如何在主信号列表中添加我的信号库(例如:更改当前 MACD 并保存而不删除主信号库)?

2.关于使用库的问题:

让我们来看看在向导的帮助下制作的基于 MAKD 的智能交易系统:我们创建并编译了它,进行了测试并得到了一些结果

库中的 MAKD 信号如下:

//--- 设置市场模型的默认 "权重
   m_pattern_0    =10;       // 模型 0 "振荡器已确定方向"
   m_pattern_1    =30;       // 模型 1 "振荡器向所需方向反转"
   m_pattern_2    =80;       // 模式 2 "主线和信号线交叉"
   m_pattern_3    =50;       // 模式 3 "主线在零水平线上交叉"
   m_pattern_4    =60;       // 模式 4 "震荡指标与价格背离"
   m_pattern_5    =100;      // 模型 5 "震荡指标和价格的双重背离" 

Далее, если я занулю не нужные мне паттерны (например 0,1,2,4,5) в библиотеке:

//--- 设置市场模型的默认 "权重
   m_pattern_0    =0;       // 模型 0 "振荡器已确定方向"
   m_pattern_1    =0;       // 模型 1 "振荡器向所需方向反转"
   m_pattern_2    =80;       // 模式 2 "主线和信号线交叉"
   m_pattern_3    =0;       // 模式 3 "主线在零水平线上交叉"
   m_pattern_4    =0;       // 模式 4 "震荡指标与价格背离"
   m_pattern_5    =0;      // 模型 5 "震荡指标和价格的双重背离" 

我将 编译库(不编译 EA 代码本身)。测试结果与第一次 测试完全相同。

如果我也编译 EA 代码,则会得到不同的结果,在本例中仅针对模式 2。

我有一个问题:为什么在更改库中的某些参数后,我必须重新编译 EA 代码?(并没有改变)。

 
52_rus:

1.如何将我的库添加到主信号列表中(例如:更改当前 MACD 并保存而不删除主信号)?


您是指包含信号模块代码的 include 文件?根据需要更改当前模块并保存在同一目录下,但使用不同的名称。更多详情,请参阅文章:

在新的 MQL5 向导中创建交易机器人

使用 MetaEditor 的MQL5 向导 创建 EA 代码。

交易策略的基本类位于terminal_data_folder\MQL5\Include\Expert\.交易信号 类、未平仓头寸维护 类以及资本和风险管理 类的就绪算法位于信号、跟踪和资金子目录中。MQL5 向导分析这些目录中的文件,并使用它们生成 EA 代码。

这意味着信号模块位于terminal_data_folder\MQL5\Include\Expert\Signal 目录中(而且必须位于此目录中,以便MQL5 向导可以看到)。
 
一切正常,谢谢,我只是修改了代码,但没有更改类名....
 

由于某些原因, 版本的终端 不再包含自定义版本的信号发生器模块。在/MQL5/Include/Expert/Signal/ 文件夹中有 30 个模块,但根据帮助,向导只看到 20 个模块作为标准提供。

是我的问题,还是 MT5 编辑器不再扫描包含信号模块的文件夹以查找新模块?即使是 Metaquotes 开发的基于蜡烛图形态的信号模块也没有连接。

 
Livingston:

由于某些原因, 版本的终端 不再包含自定义版本的信号发生器模块。在/MQL5/Include/Expert/Signal/ 文件夹中有 30 个模块,但根据帮助,向导只看到 20 个模块作为标准提供。

是我的问题,还是 MT5 编辑器不再扫描信号模块文件夹以查找新模块?即使是 Metaquotes 开发的基于蜡烛图形态的旧信号模块也无法连接。

新信号模块必须有不同的模块描述,其类型必须是 SignalAdvanced(高级信号)。


 
Rosh:

新信号模块应有不同的模块描述,其类型应为 SignalAdvanced。


非常感谢。
 
Rosh:

新信号模块必须有不同的模块描述,其类型必须是 SignalAdvanced。


如果在以前编写的信号模块中用 SignalAdvanced 代替 Signal,它们仍然不能工作。现在不使用函数 CheckOpenShort/CheckOpenLong 并用 ShortCondition/LongCondition 代替?

这些函数中没有参数,因此不清楚如何设置止盈和止损。

int CSignalMA::LongCondition()
  {
   int result=0;
   int idx   =StartIndex();
//--- 分析收盘价和指标在第一个分析柱的位置关系
   if(DiffCloseMA(idx)<0.0)
     {
      //--- 收盘价低于指标
      if(IS_PATTERN_USAGE(1) && DiffOpenMA(idx)>0.0 && DiffMA(idx)>0.0)
        {
         //----开盘价高于指标(即存在交叉点),但指标指向上方
         result=m_pattern_1;
         //--- consider that this is an unformed "piercing" and suggest to enter the market at the current price
         m_base_price=0.0;
        }
     }
   else
     {
      //----收盘价高于指标(指标不反对买入)
      if(IS_PATTERN_USAGE(0))
         result=m_pattern_0;
      //--- 如果使用模型 2
      if(IS_PATTERN_USAGE(2) && DiffMA(idx)>0.0)
        {
         //----指示器朝上
         if(DiffOpenMA(idx)<0.0)
           {
            //----开盘价低于指标(即存在交叉点)
            result=m_pattern_2;
            //--- 建议在 "回滚 "时入市
            m_base_price=m_symbol.NormalizePrice(MA(idx));
           }
         else
           {
            //----开盘价高于指标
            if(DiffLowMA(idx)<0.0)
              {
               //----低价低于指标
               result=m_pattern_2;
               //--- consider that this is a formed "piercing" and suggest to enter the market at the current price
               m_base_price=0.0;
              }
           }
        }
     }
//--- 返回结果
   return(result);
  }

现在信号模块中到处都使用IS_PATTERN_USAGE(),不清楚为什么。

总之,我们正在等待有关如何自己制作信号模块的信息。

旧的向导模式 Type=Signal 是否可用?

 

每个市场模型都有一个重要性值,从 1 到 100 不等。数值越大,模型越强。

MA 权重为 0.4,随机 权重为 0.8 - 这是外部变量设定的,也是 MA 的来源 - 其重要性为 100该模型 的随机重要性等于 80。每个模型的显著性在哪里设定或如何确定?