Asesores Expertos: MQL5 Wizard - Señales de trading basadas en el cruce del precio con el Indicador de Media Móvil - página 2

 

Hola Carl Schreiber, muchas gracias por su rápida respuesta. Mi pregunta se refiere a este artículo aquí https://www.mql5.com/es/code/248. Describe cómo crear un Asesor Experto con esta señal utilizando el asistente. No puedo llegar a este punto. Primero me aseguré de que el indicador está en el directorio correcto. Si luego hago clic en Archivo Nuevo -> Generar Asesor Experto -> Asignar Nombre -> Parámetros del Módulo de Señal en el Meta Editor, las Señales basadas en el cruce de precios con MA deberían aparecer allí de acuerdo con el artículo descrito. Desafortunadamente, la selección no aparece. Tengo la versión 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).
Archivos adjuntos:
MAXWizard.jpg  65 kb
 

Lamentablemente, tu build es demasiado pequeño para que pueda reconocer nada.

El indicador iMA está integrado, no necesita estar en un directorio específico.

No tengo ningún problema para crear un EA (generar con Expert Advisor) de acuerdo con este artículo con la media móvil: https://www.metatrader5.com/de/metaeditor/help/mql5_wizard/wizard_ea_generate

Después de añadir la media móvil continuar ...

A continuación, se crea esta EA:

//+------------------------------------------------------------------+
//|test_Wizard.mq5
//|Calli
//| https://www.mql5.com/es/users/gooly |
//+------------------------------------------------------------------+
#property copyright "Calli"
#property link      "https://www.mql5.com/es/users/gooly"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Include|
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- señales disponibles
#include <Expert\Signal\SignalMA.mqh>
//--- final disponible
#include <Expert\Trailing\TrailingNone.mqh>
//--- gestión del dinero disponible
#include <Expert\Money\MoneyFixedLot.mqh>
//+------------------------------------------------------------------+
//| Entradas|
//+------------------------------------------------------------------+
//--- entradas para el experto
input string             Expert_Title         ="test_Wizard"; // Nombre del documento
ulong                    Expert_MagicNumber   =18344;         //
bool                     Expert_EveryTick     =false;         //
//--- entradas para señal principal
input int                Signal_ThresholdOpen =10;            // Valor umbral de señal a abrir [0...100]
input int                Signal_ThresholdClose=10;            // Valor umbral de la señal a cerrar [0...100]
input double             Signal_PriceLevel    =0.0;           // Nivel de precio para ejecutar una operación
input double             Signal_StopLevel     =50.0;          // Nivel de Stop Loss (en puntos)
input double             Signal_TakeLevel     =50.0;          // Nivel de Take Profit (en puntos)
input int                Signal_Expiration    =4;             // Vencimiento de órdenes pendientes (en compases)
input int                Signal_MA_PeriodMA   =12;            // Media móvil(12,0,...) Periodo de promediación
input int                Signal_MA_Shift      =0;             // Media móvil(12,0,...) Desplazamiento temporal
input ENUM_MA_METHOD     Signal_MA_Method     =MODE_SMA;      // Media móvil(12,0,...) Método de promediación
input ENUM_APPLIED_PRICE Signal_MA_Applied    =PRICE_CLOSE;   // Media móvil(12,0,...) Serie de precios
input double             Signal_MA_Weight     =1.0;           // Media móvil(12,0,...) Peso [0...1.0]
//--- entradas por dinero
input double             Money_FixLot_Percent =10.0;          // Porcentaje
input double             Money_FixLot_Lots    =0.1;           // Volumen fijo
//+------------------------------------------------------------------+
//| Objeto experto global|
//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| Función de inicialización del experto |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Inicializando experto
   if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- fallido
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Creando señal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- fallido
      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);
//--- Creación del filtro CSignalMA
   CSignalMA *filter0=new CSignalMA;
   if(filter0==NULL)
     {
      //--- fallido
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- Establecer los parámetros del filtro
   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);
//--- Creación del objeto final
   CTrailingNone *trailing=new CTrailingNone;
   if(trailing==NULL)
     {
      //--- fallido
      printf(__FUNCTION__+": error creating trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Añadir final a experto (se borrará automáticamente))
   if(!ExtExpert.InitTrailing(trailing))
     {
      //--- fallido
      printf(__FUNCTION__+": error initializing trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Establecer parámetros finales
//--- Creación del objeto dinero
   CMoneyFixedLot *money=new CMoneyFixedLot;
   if(money==NULL)
     {
      //--- fallido
      printf(__FUNCTION__+": error creating money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Añadir dinero a experto (se borrará automáticamente))
   if(!ExtExpert.InitMoney(money))
     {
      //--- fallido
      printf(__FUNCTION__+": error initializing money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Establecer parámetros monetarios
   money.Percent(Money_FixLot_Percent);
   money.Lots(Money_FixLot_Lots);
//--- Comprobar todos los parámetros de los objetos comerciales
   if(!ExtExpert.ValidationSettings())
     {
      //--- fallido
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Ajuste de todos los indicadores necesarios
   if(!ExtExpert.InitIndicators())
     {
      //--- fallido
      printf(__FUNCTION__+": error initializing indicators");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Función de desinicialización del experto ||
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ExtExpert.Deinit();
  }
//+------------------------------------------------------------------+
//| Función manejadora del evento "Tick|
//+------------------------------------------------------------------+
void OnTick()
  {
   ExtExpert.OnTick();
  }
//+------------------------------------------------------------------+
//| Función manejadora del evento "Comercio|
//+------------------------------------------------------------------+
void OnTrade()
  {
   ExtExpert.OnTrade();
  }
//+------------------------------------------------------------------+
//| Función manejadora de eventos "Temporizador"|
//+------------------------------------------------------------------+
void OnTimer()
  {
   ExtExpert.OnTimer();
  }
//+------------------------------------------------------------------+

El código compila sin problemas, pero no sé si también genera beneficios, ni sé si se podría optimizar el código.

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...
[Eliminado]  
código realmente bueno