Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Creo, lo confirmaré, que he visto el mismo problema en el Probador de Estrategias, no estoy seguro de cómo podría ocurrir exactamente, lo intentaré de nuevo con algunos informes de error añadidos para asegurarme.
OK, un misterio resuelto... no me di cuenta de que el Spread utilizado en el Probador de Estrategias se toma de los datos del Historial, en particular de los datos M1. La razón por la que tengo stops inválidos en mi ejecución del Probador de Estrategias es porque el spread es mayor que mi SL. Añadiré una prueba para esto.
Konstantin83:
2013.03.10 11:19:18 2012.01.04 15:00:00 failed buy stop 1.00 EURUSD at 1.30505 sl: 1.28375 tp: 1.30375 [Invalid stops]
No entiendo el stop inválido. el sl está por debajo del sl de compra: 1.28375 <1.30505 ?
CopyHigh(_Symbol,_Period,TimeCurrent(),5,hg);
Top = NormalizeDouble(rates[ArrayMaximum(hg,0,WHOLE_ARRAY)].high,_Digits);
- diseñomal entendido .
Elige entre los valores del máximo doble y usa eso en lugar del índice entero
graciasKonstantin83 :
pero no entiendo lo que dices.
top es el más alto de las últimas 5 velas y top es un índice doble y no entero
dan5:
No entiendo el stop inválido. el sl está por debajo del sl de compra: 1,28375 <1,30505 ?
No te tomes los "stops inválidos" demasiado literalmente. No se trata sólo del Stop Loss, también puede ser el precio de entrada y/o el TP. Cuando tengas un error imprime la siguiente información, te ayudará a resolver lo que ha ido mal:
dan5:
2013.03.10 11:19:18 2012.01.04 15:00:00 falló la parada de compra 1.00 EURUSD a 1.30505 sl: 1.28375 tp: 1.30375 [Paradas inválidas].
No entiendo la parada inválida. el sl está por debajo de la compra sl: 1.28375 <1.30505 ?
¿Se ha dado cuenta de que la entrada 1,30505 es > el TP 1,30375?
gracias por su ayuda he modificado mi sl y tp ahora está bien
mrequest.sl = NormalizeDouble( mrequest.price + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble( mrequest.price - TKP*_Point,_Digits);// Take Profit
en lugar de
mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); // Take Profit
gracias por su ayuda he modificado mi sl y tp ahora está bien
mrequest.sl = NormalizeDouble( mrequest.price + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble( mrequest.price - TKP*_Point,_Digits);// Take Profit
en lugar de
mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); // Take Profit
Es una buena noticia, espero que no te moleste que subvierta tu hilo, pero creo que al final ambos hemos sacado algo útil :-)
¿Has encontrado otra solución que la que propongo con OnTradeTransaction para proceder con sl & tp en un caso de Ejecución de Mercado (broker ECN)?
El código que sugerí en este post https://www.mql5.com/en/forum/11051#comment_446272 funciona bien hasta donde puedo decir, asumí que no funcionaba en el Probador de Estrategias debido a que mi suposición de que el spread era fijo (como en MT4) era incorrecta. Mi código ahora funciona en el Probador de Estrategias y en la Demo para símbolos con tipo de ejecución Instantánea o de Intercambio, mi código determina el tipo y envía la(s) solicitud(es) apropiada(s). Idealmente me gustaría que mi código manejara automáticamente cualquier tipo de ejecución.