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
Digamos que el precio sube 600 puntos desde OrderOpenprice(), = StartTraillingStop (200) + 8(xai)*50
el código está aquí :
pero el código hará todos los xai de 0 a 8, digamos que el código está en xai = 4; ¿esta condición es verdadera?
if ( ( ( OrderClosePrice() - OrderOpenPrice() ) / Figure ) >= ( StartTrailingStop + ( CummulativeValue * xai ) ) )
si entonces el SL se fijará en : StartTraillinStop (200) + 4(xai)*50 ( bajando desde el anterior )
entonces xai 5, el SL se fijará en : StartTraillinStop (200) + 5(xai)*50
y así sucesivamente, por lo que no es posible poner una pausa una vez que el SL se establece;
juniorlcq Tu código es mucho más fácil de leer ahora que lo has reformateado. Lo he reformateado un poco más para hacerlo más pequeño para publicarlo, he resaltado los posibles problemas. Estoy pensando que podrías tener un problema de "doble == doble calculado" que está impidiendo que tu código ejecute algunos de los recorridos. ¿Has leído el hilo sobre puede precio != precio ?
Yo sospecho más de la 2ª y 4ª ya que son cálculos más complicados.
Poner declaraciones Print() después de esos cálculos para ver si realmente hacen == o no.
El error conocido como error de punto flotante podría hacerlos != incluso cuando parece que deberían ser ==.
== es realmente solo 100% seguro para usar con enteros así que podrías cambiar el == a <= o >= como prueba.
También como una nota al margen: Su código sería mucho más eficiente si usted llama OrderOpenPrice(), OrderStopLoss(), OrderClosePrice() una vez al principio de su bucle OrderSelect() y asignar sus valores a vars locales para utilizar en el resto del código. Los vares locales son de acceso mucho más rápido que las llamadas a funciones, por lo que debe evitar hacer repetidas llamadas a funciones para el mismo resultado... Como regla general, cuanto más escritura rosa tengas en tu código más lento será el rendimiento del EA.
Entiendo, no puedo hacer que funcione, este puede funcionar con orden de compra, SL son gioing abajo como se explica :
Ohhhhhhh no sabía de esto . Gracias WHRoeder :) .
Entonces, ¿significa que ,
digamos que OrdersTotal() == 3 , con el bucle for count down for ( int x = ( OrdersTotal() - 1 ) ; x >= 0 ; x-- ) x guardará el 1er valor como 2 , luego continuará el bucle for desde el 2 en adelante sin volver a pasar por OrdersTotal() ?
juniorlcq Tu código es mucho más fácil de leer ahora que lo has reformateado. Lo he reformateado un poco más para hacerlo más pequeño para publicarlo, he resaltado los posibles problemas. Estoy pensando que podrías tener un problema de "doble == doble calculado" que está impidiendo que tu código ejecute algunos de los recorridos. ¿Has leído el hilo sobre puede precio != precio ?
Yo sospecho más de la 2ª y 4ª ya que son cálculos más complicados.
Poner declaraciones Print() después de esos cálculos para ver si realmente hacen == o no.
El error conocido como error de punto flotante podría hacerlos != incluso cuando parece que deberían ser ==.
== es realmente solo 100% seguro para usar con enteros así que podrías cambiar el == a <= o >= como prueba.
Nope no he leído ese hilo antes . Solo lo hice .
Lo que has sugerido suena lógico. En un segundo pensamiento, a veces dibujar líneas en MT4 en las propiedades de los precios que realmente no muestran 5 dígitos de precios, en lugar de mostrar a veces algo más que eso.
Pero aquí está uno de mi comercio flotante en el de la cuenta anterior , lo imprimí para ver lo que era el doble como con una simple codificación de impresión . Raro MQL4 supongo @.@ ?
Todavía estoy pensando cómo debo modificar el doble == doble parte .....
También como nota al margen: Tu código sería mucho más eficiente si llamas a OrderOpenPrice(), OrderStopLoss(), OrderClosePrice() una vez al principio de tu bucle OrderSelect() y asignas sus valores a vars locales para usarlos en el resto del código. Los vares locales son de acceso mucho más rápido que las llamadas a funciones, por lo que debe evitar hacer repetidas llamadas a funciones para el mismo resultado... Como regla general, cuanto más escritura rosa tengas en tu código más lento será el rendimiento del EA.
Ohhh no sabía que habría una gran diferencia en la velocidad de ejecución , gracias por la guía SDC . Se modificará de acuerdo a su guía después de la parada de la pista comenzó a trabajar .
Intenta sustituir el último bloque de código por esta versión de depuración. Comprueba mi código, no lo he compilado.
Eso podría revelar algo, podrías hacer algo similar con las otras condiciones == también.
Intente reemplazar el último bloque de código con esta versión de depuración. Podrías hacer algo similar con el xa
Eso podría revelar algo, podrías hacer algo similar con las otras == condiciones también.
Sí, el problema aparece, es el "problema de doble == doble calculado". Gracias por señalar el problema SDC .
Gracias ffoorr por señalar también el mismo problema antes , pero no lo edité de la manera correcta y pensé que no era el problema .
Tengo una pregunta que necesita alguna sugerencia, para el segundo y tercer if en el segundo bucle for, ¿es mejor poner una declaración "entre" en él? Como OrderStopLoss() >= x + 1 && x - 1 ? ¿O debería usar simplemente >= o <= ?
Espero que WHR no lea esto, le dará un ataque, pero te voy a decir que pruebes con NormalizeDouble() .... debería hacer que esas condiciones sean iguales cuando se supone que deben serlo. No debería ser necesario hacerlo también al lado de OrderStopLoss(), pero si aún así no se igualan cuando deberían podrías intentar hacerlo a ambos lados de la condición....