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_LEVELint 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 trabajarif(!PositionSelectByTicket(ticket))
{
//--- fallo al seleccionar la posiciónreturn(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 TakeProfitbool SL_check=false,TP_check=false;
//--- tipo de posiciónswitch(pos_type)
{
//--- comprarcasePOSITION_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ónreturn(SL_check&&TP_check);
}
break;
//--- vendercasePOSITION_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ónreturn(SL_check&&TP_check);
}
break;
}
//--- la posición no pasó la comprobaciónreturn (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.
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.
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.
@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 ...
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.
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.
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
Había un error en el código del archivo check_freezelevel.mq5 (línea 140) faltando la sentencia `if(!TP_check)`.
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:
Oferta - StopLoss >= 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
Parece que no leyó este tema antes de publicar ...
Parece que no has leído este tema antes de publicar ...
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.
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