Discusión sobre el artículo "Qué comprobaciones debe superar un robot comercial antes de ser publicado en el Mercado" - página 21

 

Había un error en el código del archivo check_freezelevel.mq5 (línea 140) faltando la sentencia `if(!TP_check)`.

bool CheckPositionForFREEZE_LEVEL(ulong ticket)
  {
//--- obtener el nivel SYMBOL_TRADE_FREEZE_LEVEL
   int freeze_level=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL);
   if(freeze_level!=0)
     {
      PrintFormat("SYMBOL_TRADE_FREEZE_LEVEL=%d: Cannot modify order"+
                  "  nearer than %d points from the activation price",freeze_level,freeze_level);
     }
//--- seleccione la posición para trabajar
   if(!PositionSelectByTicket(ticket))
     {
      //--- fallo al seleccionar la posición
      return(false);
     }
//--- obtener los datos del pedido 
   ENUM_POSITION_TYPE pos_type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
   double sl=PositionGetDouble(POSITION_SL);
   double tp=PositionGetDouble(POSITION_TP);
//--- resultado de comprobar StopLoss y TakeProfit
   bool SL_check=false,TP_check=false;
//--- tipo de posición
   switch(pos_type)
     {
      //--- comprar
      case POSITION_TYPE_BUY:
        {
         SL_check=(Bid-sl>freeze_level*_Point);
         if(!SL_check)
            PrintFormat("Position %s #%d cannot be modified: Bid-StopLoss=%d points"+
                        " < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
                        EnumToString(pos_type),ticket,(int)((Bid-sl)/_Point),freeze_level);
         TP_check=(tp-Bid>freeze_level*_Point);
         if(!TP_check)
            PrintFormat("Position %s #%d cannot be modified: TakeProfit-Bid=%d points"+
                        " < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
                        EnumToString(pos_type),ticket,(int)((tp-Bid)/_Point),freeze_level);
         //--- devuelve el resultado de la comprobación
         return(SL_check&&TP_check);
        }
      break;
      //--- vender
      case POSITION_TYPE_SELL:
        {
         SL_check=(sl-Ask>freeze_level*_Point);
         if(!SL_check)
            PrintFormat("Position %s cannot be modified: StopLoss-Ask=%d points"+
                        " < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
                        EnumToString(pos_type),(int)((sl-Ask)/_Point),freeze_level);
         TP_check=(Ask-tp>freeze_level*_Point);
         PrintFormat(" Position %s cannot be modified: Ask-TakeProfit=%d points"+
                     " < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
                     EnumToString(pos_type),(int)((Ask-tp)/_Point),freeze_level);
         //--- devuelve el resultado de la comprobación
         return(SL_check&&TP_check);
        }
      break;
     }
//--- la posición no pasó la comprobación
   return (false);
  }
 
Hola, Mi EA opera basado en eventos de noticias y no funciona en el probador de estrategias pero es rentable en la cuenta real. El hecho de que mi EA no funcione en el probador hará que falle la validación de mercado?
 

En general, la comprobación de los niveles TakeProfit y StopLoss teniendo en cuenta la distancia mínima de SYMBOL_TRADE_STOPS_LEVEL tiene el siguiente aspecto:

  • Lacompra se realiza al precio Ask - los niveles TakeProfit y StopLoss deben estara una distancia de al menos puntos SYMBOL_TRADE_STOPS_LEVEL del precio Bid.
  • Laventa se realiza al precio de Oferta - los niveles TakeProfit y StopLoss deben estar a una distancia de al menos puntos SYMBOL_TRADE_STOPS_LEVEL del precio de Demanda.
La compra se realiza al precio Ask
La venta se realiza al precio de Oferta
TakeProfit - Oferta >= SYMBOL_TRADE_STOPS_LEVEL
Oferta - StopLoss >= SYMBOL_TRADE_STOPS_LEVEL
Ask - TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL
StopLoss - Ask >= SYMBOL_TRADE_STOPS_LEVEL



Alguien me puede explicar la duda que tengo?

Entiendo que la compra se hace sobre el precio ask, y la venta sobre el precio bid. También entiendo por qué usamos el precio bid para comparar cuando compramos para el stop loss y take profit (porque vamos a hacer la operación contraria, vender, por lo tanto precio bid).

Sin embargo, no entiendo por qué el take profit no se compara también con el precio de venta al comprar, porque si sólo lo comparamos con el precio de venta, el usuario podría establecer el valor más alto que el precio de venta, pero más bajo que el precio de compra, lo que no tiene ningún sentido.

Gracias por su tiempo.

 

Hola,

mi EA es rechazado porque la validación informa de que "no hay actividades de negociación". Como mi EA está diseñado para operar en una fecha de noticias específica, necesitaría saber qué datos históricos se utilizan durante la validación del EA. Entonces podría proporcionar una fecha predeterminada para fines de validación.

Gracias de antemano

Tim

 
@Tim Arthur Herbert Kasprzyk #: mi EA se rechaza porque la validación informa de que "no hay actividades de negociación". Como mi EA está diseñado para operar en una fecha de noticias específica, necesitaría saber qué datos históricos se utilizan durante la validación del EA. Entonces podría proporcionar una fecha por defecto para fines de validación.

Parece que no leyó este tema antes de publicar ...

Foro sobre el comercio, los sistemas automatizados de comercio y estrategias de negociación de prueba

Discusión del artículo "Las comprobaciones que debe pasar un robot de trading antes de publicarse en el Mercado"

Fernando Carreiro, 2022.12.24 18:46

Según las normas del producto Market, no está permitido restringir o limitar tu EA a un solo símbolo. Tu EA debe funcionar para todos los símbolos, aunque su uso previsto sea para un único símbolo.

Foro sobre trading, sistemas automatizados de trading y prueba de estrategias de trading

Discusión del artículo "Las comprobaciones que debe pasar un robot de trading antes de publicarse en el Mercado"

Fernando Carreiro, 2023.03.27 01:50

No está permitido limitar tu EA de ninguna manera. Debe ser capaz de operar con cualquier cosa, incluso si fue diseñado para índices. Por favor, lea las reglas del Mercado.

Foro sobre trading, sistemas automatizados de trading y prueba de estrategias de trading

Discusión del artículo "Las comprobaciones que debe pasar un robot de trading antes de publicarse en el Market"

Fernando Carreiro, 2023.06.01 13:15

Tu EA debe poder operar en todos los símbolos y en todos los time-frames. No debe haber limitaciones.

Para reducir el tamaño de su registro, considere ...

  • Reducir el número de "impresiones" en la salida del registro
  • Utilizar un trailing-step o time-step en lugar de trailing stops continuos.
  • No crear y borrar continuamente órdenes pendientes. Considere el uso de órdenes pendientes "virtuales".
 
Fernando Carreiro #:

Parece que no has leído este tema antes de publicar ...

Hola Fernando, gracias por su feedabck. En realidad mi EA no está restringido a ningún símbolo, o marco de tiempo. Sólo requiere una fecha de noticias especificada como la fecha de noticias de la tasa de interés de la FED. También proporciono una fecha de noticias por defecto en el EA. Así que en teoría debería pasar la validación. Pero podría darse el caso de que el proceso de validación esté utilizando datos históricos que no cubren mi fecha por defecto. Por lo tanto, sería útil saber qué datos históricos se utilizan (no qué símbolo o marco temporal, esto lo puedo ver en el informe).
 
@Tim Arthur Herbert Kasprzyk #: Hola Fernando, gracias por tu comentario. En realidad mi EA no está restringido a ningún símbolo, o marco de tiempo. Sólo requiere una fecha de noticias especificada como la fecha de noticias de la tasa de interés de la FED. También proporciono una fecha de noticias por defecto en el EA. Así que en teoría debería pasar la validación. Pero podría darse el caso de que el proceso de validación esté utilizando datos históricos que no cubren mi fecha por defecto. Por lo tanto, sería útil saber qué datos históricos se utilizan (no qué símbolo o marco temporal, esto lo puedo ver en el informe).

Sigue siendo una limitación. Elimine todas y cada una de las limitaciones estableciendo los valores de los parámetros por defecto para permitir la negociación independientemente de cualquier fecha, símbolo o marco temporal.

El EA también tendrá que leer las especificaciones del contrato y ajustar en consecuencia, o de lo contrario fallará el proceso de validación.

 
Me aparece el mensaje "Strategy Tester Report not found" EURUSD 1H. ¿Cómo puedo solucionarlo?

He comprobado muchas veces en strategy tester y mi EA funciona sin errores.

Codifiqué un EA de "Prueba de Validación" que simplemente abre una posición con el volumen mínimo permitido y cierra la posición después de unos segundos, pero ocurrió el mismo error.

 

Acabo de leer un comentario sobre el informe de validación que dice "no hay actividades comerciales". ¿Todos los EAs deben comerciar? ¿Mi EA sólo dibuja cosas en el gráfico, o debería haber sido un indicador?

 

¿Alguien con este tipo de problema? En la cuenta DEMO de Metaquotes funciona normalmente y en la prueba no pasó la validación.


test on EURUSD,H1 (netting) 2021.06.30 23:59:59 ExpertRemove() function called removed itself within OnDeinit removed itself on 99% of testing interval strategy tester report 1 total trades