Discusión sobre el artículo "¡Cree su propio robot de trading en 6 pasos!" - página 2

 
bivmail:

Me estaba emocionando, pero no puedo evitarlo (comm - leí sobre la transferencia de direcciones de memoria, pero tampoco funcionó así):

El compilador devuelve el error 'm_MethodFast' - expresión constante requerida, ' m_MethodSlow' - expresión constante requerida

Por supuesto, estas son preguntas para un dummies. tal vez debería hacer este tipo de preguntas en otro hilo, a fin de no obstruir el artículo?


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

Sí. la segunda forma tampoco funcionó muy bien:

tropieza

1)'=' - l-valor requerido //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - el parámetro para EnumToString debe ser una enumeración //...EnumToString(l_array1_select_method_n2.At(i_array1_n2)));

expresión no booleana

#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("¡Tipo de suavizado %s media móvil no válido!".,EnumToString(l_array1_select_method_n2.At(i_array1_n2)));
        }
     }

   if(YesErrorsFlag_n2)
     {
      return(false);
     }

Ahora bien, esto no tiene ningún propósito práctico. Dejémoslo como está en el ejemplo...

 
bivmail:

Sí. la segunda forma tampoco funcionó muy bien:

tropieza

1)'=' - l-valor requerido //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - el parámetro para EnumToString debe ser una enumeración //...EnumToString(l_array1_select_method_n2.At(i_array1_n2)));

expresión no booleana

Ahora bien, esto no tiene ningún propósito práctico. Dejémoslo como está en el ejemplo....

Adjuntemos el código apto para compilación (porque los telépatas son tediosos).
 

Hola, tengo el siguiente problema.

He hecho todos los pasos según las instrucciones hasta el final. He compilado EA y trató de probarlo - no se produjeron operaciones durante todo el año de la prueba y da un error - pase genético (nn, número de secuencia) probado con el error "no se puede inicializar experto".

Traté de compilar el Asesor Experto de la señal ma_cross.mqh, que vino con el artículo, da el mismo error. Y por último, probé el Asesor Experto listo que venía con el artículo, ¡¡¡y otra vez el mismo error!!! ¿Cuál es el problema, me puede decir?


 
Intente volver a compilar el indicador personalizado suministrado "Custom Moving Average.mq5". Si la versión del archivo Custom Moving Average.ex5 no coincide con la versión actual del compilador, el manejador del indicador no se creará durante la inicialización del Asesor Experto generado. Parece que usted se encuentra en este caso.
Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

Gracias por vuestra ayuda, he recompilado pero el problema persiste. Además, quiero aclarar que descargué metatrader hace una semana del sitio oficial de metatrader, por lo que dudo que algo haya tenido tiempo de desactualizarse.

Además, he intentado probar este Asesor Experto desde dos ordenadores diferentes.

 
danielalmaty:

Gracias por vuestra ayuda, he recompilado pero el problema persiste. Además, quiero aclarar que descargué metatrader hace una semana del sitio oficial de metatrader, por lo que dudo que algo haya tenido tiempo de desactualizarse.

Además, intenté probar este Asesor Experto desde dos ordenadores diferentes.

Usted debe tratar de ejecutar una sola prueba (no optimización). El registro contendrá información más detallada sobre la razón de la no inicialización del Asesor Experto.
 

Intenté ejecutar una sola prueba sin optimización, sin errores, todo va como la seda, pero no se realizó ni una sola operación en la prueba durante todo el periodo.

 
danielalmaty:

Intenté ejecutar una sola prueba sin optimización, sin errores, todo va bien, pero no se hizo ni una sola operación en la prueba durante todo el período.

¿Puede mostrar la configuración del Asesor Experto y decirme en qué servidor de negociación ejecuta las pruebas? ¿Tiene una cuenta activa?
 

Comenzando las pruebas en el servidor MIGBank-Demo.

La configuración del Asesor Experto es la siguiente

//+------------------------------------------------------------------+
//| Entradas|
//+------------------------------------------------------------------+
//--- entradas para el experto
input string         Expert_Title             ="ssssa";  // Nombre del documento
ulong                Expert_MagicNumber       =847;      // 
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_MaCross_FastPeriod=13;       // My_MA_Cross(13,MODE_SMA,21,...) Periodo de MA rápido
input ENUM_MA_METHOD Signal_MaCross_FastMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) Método de MA rápido
input int            Signal_MaCross_SlowPeriod=21;       // My_MA_Cross(13,MODE_SMA,21,...) Periodo de MA lento
input ENUM_MA_METHOD Signal_MaCross_SlowMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) Método de MA lento
input double         Signal_MaCross_Weight    =1.0;      // My_MA_Cross(13,MODE_SMA,21,...) Peso [0...1.0]
//--- entradas por dinero
input double         Money_FixLot_Percent     =10.0;     // Porcentaje.
input double         Money_FixLot_Lots        =0.1;      // Volumen fijo

Como dije, intenté ejecutar el Asesor Experto que venía con el artículo y me llevó al mismo resultado. Así que puedes ver la configuración simplemente descargando el archivo del artículo.