Campeonato de Trading Automatizado 2007: errores comunes en los expertos - página 8

 
O bien
 if(OrderStopLoss()!=(Bid-Point*TrailingStop))
De cualquier manera comprobamos si el stop loss está en pips y la expresión está en pips.

También, que necesita lotes en incrementos de 0,1 y con un límite de hasta 5 lotes

TmpRound = MathRound(Lots/0.1);
        Lots = TmpRound*0.1;       
        if(Lots>5)Lots=5;
        if(Lots<0.1)Lots=0.1;
 
1) Sería bueno no sólo identificar los errores comunes de los expertos, sino también mostrar las formas de resolver estos problemas.

2) Sería útil para todos. Pero, por ejemplo, el clásico MACD Sample.mq4 Expert Advisor escrito como ejemplo por sus desarrolladores no pasará la prueba en sí debido al error #1.
¿Por qué un comerciante principiante vería un ejemplo de solución correcta?

3) Por cierto, es una gran idea dejar un Asesor Experto sencillo, por ejemplo, basado en la mediana, como ejemplo que cumple con todos los requisitos y establece las buenas reglas para programar un Asesor Experto. Mucha gente lo apreciaría. Eso sería una buena promoción de MQL4 como base para construir sistemas automáticos de trading.
 
AstaLavista:
1) Sería una buena idea no sólo identificar los errores comunes en los EAs, sino también mostrar las formas de resolver estos problemas.

2) Todos se beneficiarían de ello. Pero, por ejemplo, el clásico MACD Sample.mq4 Expert Advisor escrito como ejemplo no pasará la prueba en sí debido al error #1.
¿Por qué un comerciante principiante vería un ejemplo de solución correcta?

3) Por cierto, es una gran idea exponer un Asesor Experto sencillo, por ejemplo, basado en el valor medio, como ejemplo que cumple todos los requisitos y define las buenas reglas de programación de un Asesor Experto. Mucha gente lo apreciaría. Eso sería una buena promoción de MQL4 como base para construir sistemas automáticos de trading.


¡Palabras de oro!

Espero que esto se tenga en cuenta al menos en las plantillas de creación de código del "asistente" previstas.

 
2 AstaLavista: El código de Rosh para el trailing es más correcto (aunque deberías cambiar oldTP por oldSL y newTP por newSL en la línea de comparación entre corchetes) - su condición es ">". Y en tu caso, si el precio retrocede, entonces el arrastre también retrocederá, porque se cumplirá la condición.
 
Stepler2442:
2 AstaLavista: El código de Rosh para el trailing es más correcto (aunque deberías cambiar oldTP por oldSL y newTP por newSL en la línea de comparación entre corchetes) - su condición es ">". Y en su caso, si el precio retrocede, el arrastre también retrocederá, porque la condición se cumplirá.
En ese caso, basta con sustituir para el caso de la bahía con
 if(OrderStopLoss()<(Bid-Point*TrailingStop)

a valores iguales no se cumplirá la condición, evitando el error nº 1, y a valores inferiores al stop fijado no se realizará la modificación - es decir, funcionará como un Trailing Stop en toda regla
OrderStopLoss() и (Bid-Point*TrailingStop)

 
Stepler2442:
2 AstaLavista: El código de Rosh para el trailing es más correcto (aunque deberías cambiar oldTP por oldSL y newTP por newSL en la línea de comparación entre corchetes) - su condición es ">". Y en tu caso, si el precio retrocede, entonces el trailing también retrocederá, porque se cumplirá la condición.
Gracias, lo he corregido.
 
AstaLavista:
Stepler2442:
2 AstaLavista: El código de Rosh para el trailing es más correcto (aunque deberías cambiar oldTP por oldSL y newTP por newSL entre paréntesis) - tiene la condición ">". Y en tu caso, si el precio retrocede, entonces el trailing también retrocederá, porque la condición se cumplirá!

En este caso, basta con sustituir para la bahía de la caja con
 if(OrderStopLoss()<(Bid-Point*TrailingStop)


Sí, funcionará. La única diferencia y alguna ventaja del trailing, sugerida por Rosh, es que con él se puede hacer fácilmente no sólo el trailing, sino también con pasos, para no preocuparse de cada pip y no molestar a su broker con un flujo de modificaciones :)
 

Por desgracia, a veces no funciona (ya me ha pasado), pero esto siempre funciona:

if(NormalizeDouble(OrderStopLoss(),Digits) < NormalizeDouble(Bid-Point*TrailingStop,Digits))
 
Sería estupendo que pudiéramos encontrar la mejor solución para todo, en forma de un asesor ejemplar...
 

Señores, ¿está disponible el registro generado por las pruebas automáticas del EA para su descarga y visualización? No lo encuentro en mi perfil.