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
A diferencia de MQL5, en MQL4 las matrices estáticas pueden cambiar de tamaño.
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Nueva versión de la plataforma MetaTrader 5 build 1595: acceso al historial de precios
fxsaber, 2017.05.01 16:36
Siempre ha habido un error de Trailing Stop en MT4. Si observas durante un fuerte movimiento de precios hacia arriba y hacia abajo,
puedes ver el SL moviéndose hacia arriba y hacia abajo. Aquí cogió un pequeño movimiento, pasa muchas veces más grande
2017.05.22 10:53:38.563 '9898616': trailing stop #1465775202 -> 1.29765
2017.05.22 10:53:38.483'9898616': trailing stop #1465775202 -> 1.29764
2017.05.22 10:53:33.236'9898616': trailing stop #1465775202 -> 1.29763
2017.05.22 10:53:33.130'9898616': trailing stop #1465775202 -> 1.29764
2017.05.22 10:53:32.813 '9898616': trailing stop #1465775202 -> 1.29762
Lo conseguí cuando SL = 2 (último dígito para simplificar), en el siguiente tick el precio subió y el terminal dio una orden de subir SL a 4.
En el siguiente tick bajó pero el SL sigue en 2. El terminal emite una orden para elevar la SL a 3.
El servidor, como una jirafa de cuello largo, procesó el primer pedido y elevó la SL a 4. El servidor procesó la segunda orden y disminuyó la SL a 3.
Así, el terminal envía órdenes extra sin sentido y aumenta la carga del servidor.
Además, existe el riesgo de pérdidas innecesarias para el operador debido al movimiento inverso del SL.
Esto también se aplica a los programas que siguen a EA o a los scripts . En parte lo corregimos moviendo el SL en pasos de 3...5 pips.
Qué hacer. Guardando el valor de SL, emitido en el último OrderModify.
Y luego calcular el siguiente pedido en base a este valor.
Sería así: dos órdenes menos para el servidor, moviendo SL sólo hacia adelante, reduciendo la carga de la CPU del ordenador
2017.05.22 10:53:38.563 '9898616': trailing stop #1465775202 -> 1.29765
2017.05.22 10:53:33.130 '9898616': trailing stop #1465775202 -> 1.29764
2017.05.22 10:53:32.813 '9898616': trailing stop #1465775202 -> 1.29762
Cuando se modifican las órdenes, a menudo es necesario comparar el TP/SL anterior con el nuevo valor a modificar. Si intentamos modificarlo con el valor antiguo, obtendremos el error #1.
Tomemos el ejemplo de comparar el antiguo SL (100,03) y el nuevo SL(100,02) para el USDJPY (Dígitos = 2). Está escrito en la ayuda:
El segundo método consiste en comparar la diferencia normalizada de dos números reales con un valor cero. Comparar la diferencia de los números normalizados con el cero es inútil, ya que como consecuencia de cualquier operación matemática con números normalizados el resultado es no normalizado.
Es decir, la comparación debe hacerse de esta manera:
Pero a veces el corredor puede dar precios no normalizados. Y por ejemplo, tenemos el precio 100,025, no 100,02. Habiendo comparado según el esquema anterior, obtendremos la diferencia de 0,01, es decir, podemos modificarla. Pero al haber pasado por la modificación normalizada a Dígitos 100.025, en realidad pasaremos a 100.03 y en consecuencia obtendremos el error #1.
En general, por experiencia he llegado a la conclusión de que a igualdad de Dígitos para las modificaciones es mejorcomparar la diferencia de los números normalizados con cero (lo que la ayuda no recomienda hacer).
Guión para comprobar:
A diferencia de OrderProfit() en MT4 OrderCommission() almacena datos no redondeados a céntimos.
SZZ En OrderPrint() la comisión se redondea (como en GUI).
A diferencia de OrderProfit() en MT4 OrderCommission() almacena datos no redondeados a céntimos.
SZZ En OrderPrint() la comisión se redondea (como en GUI).
Por lo tanto, ¿qué debo hacer para obtener el valor correcto de OrderProfit()+OrderComission()+OrderSwap()?
En consecuencia, para obtener el valor correcto de OrderProfit()+OrderComission()+OrderSwap(), ¿qué hay que hacer?
¡Nada! Este es el valor más correcto. Gracias a esta comisión, podemos ver en la GUI que la comisión total difiere en un céntimo de la suma de los números que muestra la GUI.
¡Nada! Este es el valor más correcto. Gracias a esta comisión, se puede observar en la GUI que la comisión total difiere en un céntimo de la suma de los números que muestra la GUI.
Entonces no lo entiendo en absoluto. ¿Qué quiere decir con "OrderCommission() almacena datos no redondeados a céntimos"? ¿Dónde están redondeados? ¿Y cómo se redondean?