专家: MQL5向导 - 基于价格交叉移动平均线指标的交易信号 - 页 2

 

您好,卡尔-施赖伯,非常感谢您的快速回复。我的问题与https://www.mql5.com/zh/code/248 这篇文章有关。这篇文章介绍了如何使用向导使用该信号创建智能交易系统。我做不到这一点。我首先确保指标在正确的目录下。如果我点击 "新建文件"->"生成智能交易系统"->"指定名称"->"元编辑器 "中的 "信号模块参数",根据文章所述,基于价格与 MA 交叉的信号 应该会出现。遗憾的是,该选项没有出现。我的版本是 5.0 Build 3211

MQL5 Wizard - Handelsignale auf der Basis der Kreuzung des Preises mit dem MA-Indikator
MQL5 Wizard - Handelsignale auf der Basis der Kreuzung des Preises mit dem MA-Indikator
  • www.mql5.com
Handelsignale auf der Basis der Kreuzung des Preises mit dem MA-Indikator "Signals based on price crossover with MA" (Klasse CSignalMA in der Standardbibliothek).
附加的文件:
MAXWizard.jpg  65 kb
 

不幸的是,您的构建太小,我无法识别任何东西。

iMA 指标是集成的,不需要放在特定目录中。

我可以根据这篇文章创建一个带有移动平均线的 EA 使用智能交易系统生成: https://www.metatrader5.com/de/metaeditor/help/mql5_wizard/wizard_ea_generate

添加移动平均线后继续...

然后就创建了这个 EA:

//+------------------------------------------------------------------+
//|test_Wizard.mq5
//|卡利
//|https://www.mql5.com/zh/users/gooly|
//+------------------------------------------------------------------+
#property copyright "Calli"
#property link      "https://www.mql5.com/zh/users/gooly"
#property version   "1.00"
//+------------------------------------------------------------------+
//| 包括|
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- 可用信号
#include <Expert\Signal\SignalMA.mqh>
//--- 可用的拖尾
#include <Expert\Trailing\TrailingNone.mqh>
//--- 可用资金管理
#include <Expert\Money\MoneyFixedLot.mqh>
//+------------------------------------------------------------------+
//| 输入|
//+------------------------------------------------------------------+
//--- 专家输入
input string             Expert_Title         ="test_Wizard"; // 文件名称
ulong                    Expert_MagicNumber   =18344;         //
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_MA_PeriodMA   =12;            // 移动平均(12,0,...)平均周期
input int                Signal_MA_Shift      =0;             // 移动平均数(12,0,...) 时间移动
input ENUM_MA_METHOD     Signal_MA_Method     =MODE_SMA;      // 移动平均(12,0,...)平均方法
input ENUM_APPLIED_PRICE Signal_MA_Applied    =PRICE_CLOSE;   // 移动平均(12,0,...)价格系列
input double             Signal_MA_Weight     =1.0;           // 移动平均(12,0,...)权重 [0...1.0]
//--- 资金投入
input double             Money_FixLot_Percent =10.0;          // 百分比
input double             Money_FixLot_Lots    =0.1;           // 固定音量
//+------------------------------------------------------------------+
//| 全局专家对象|
//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| 专家的初始化函数
//+------------------------------------------------------------------+
int OnInit()
  {
//--- 专家初始化
   if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- 失败
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- 创建信号
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- 失败
      printf(__FUNCTION__+": error creating signal");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(Signal_ThresholdOpen);
   signal.ThresholdClose(Signal_ThresholdClose);
   signal.PriceLevel(Signal_PriceLevel);
   signal.StopLevel(Signal_StopLevel);
   signal.TakeLevel(Signal_TakeLevel);
   signal.Expiration(Signal_Expiration);
//--- 创建过滤器 CSignalMA
   CSignalMA *filter0=new CSignalMA;
   if(filter0==NULL)
     {
      //--- 失败
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- 设置过滤器参数
   filter0.PeriodMA(Signal_MA_PeriodMA);
   filter0.Shift(Signal_MA_Shift);
   filter0.Method(Signal_MA_Method);
   filter0.Applied(Signal_MA_Applied);
   filter0.Weight(Signal_MA_Weight);
//--- 创建尾部对象
   CTrailingNone *trailing=new CTrailingNone;
   if(trailing==NULL)
     {
      //--- 失败
      printf(__FUNCTION__+": error creating trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- 为专家添加尾部(将自动删除))
   if(!ExtExpert.InitTrailing(trailing))
     {
      //--- 失败
      printf(__FUNCTION__+": error initializing trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- 设置尾部参数
//--- 创建货币对象
   CMoneyFixedLot *money=new CMoneyFixedLot;
   if(money==NULL)
     {
      //--- 失败
      printf(__FUNCTION__+": error creating money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- 为专家添加资金(将自动删除))
   if(!ExtExpert.InitMoney(money))
     {
      //--- 失败
      printf(__FUNCTION__+": error initializing money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- 设置资金参数
   money.Percent(Money_FixLot_Percent);
   money.Lots(Money_FixLot_Lots);
//--- 检查所有交易对象参数
   if(!ExtExpert.ValidationSettings())
     {
      //--- 失败
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- 调整所有必要的指标
   if(!ExtExpert.InitIndicators())
     {
      //--- 失败
      printf(__FUNCTION__+": error initializing indicators");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 专家的去初始化功能
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ExtExpert.Deinit();
  }
//+------------------------------------------------------------------+
//| "Tick "事件处理函数|
//+------------------------------------------------------------------+
void OnTick()
  {
   ExtExpert.OnTick();
  }
//+------------------------------------------------------------------+
//| "交易 "事件处理函数|
//+------------------------------------------------------------------+
void OnTrade()
  {
   ExtExpert.OnTrade();
  }
//+------------------------------------------------------------------+
//| "定时器 "事件处理函数|
//+------------------------------------------------------------------+
void OnTimer()
  {
   ExtExpert.OnTimer();
  }
//+------------------------------------------------------------------+

代码编译没有任何问题,但我不知道它是否也能产生利润,也不知道是否可以优化代码。

Erstellen eines fertigen Expert Advisors - MQL4/MQL5 Assistent - MetaEditor Hilfe
Erstellen eines fertigen Expert Advisors - MQL4/MQL5 Assistent - MetaEditor Hilfe
  • www.metatrader5.com
Der MQL4/MQL5 Assistent erlaubt das Erstellen eines voll funktionsfähigen EAs auf Basis der Standardbibliothek aus der Handelsplattform...
[删除]  
好代码