Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 412
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
Cielos... Estoy ciertamente contento de que usted comenzó a resolver el problema, pero mi mensaje que de alguna manera no han notado, donde dije lo mismo, un poco diferentes palabras, y de inmediato dijo que las deficiencias, excepto para cerrar el archivo, no vio inmediatamente donde usted tiene que sucede:)
Has escrito una respuesta de tres puntos. En el primero te equivocaste (mi entrada es bastante correcta), en el segundo también te equivocaste (aunque este mensaje lo niveló :) El tercer punto sonó como si hubieras sugerido mover el cursor al final después de la entrada, no antes (lo que se tomó como un error de nuevo). Ante tal panorama, preferí hacer una aclaración de un moderador muy experimentado que me respondió.
No obstante, gracias por su comentario. ¡Y un feliz año nuevo! :)
Hola. Ante una situación desagradable. Ayúdame.
Tengo un Asesor Experto. Funciona bien en el Probador de Estrategias, no tengo ninguna reclamación. Cuando lo ejecuto en una demo, el Asesor Experto no puede colocar stops en ciertas órdenes. Hay un error que aparece no siempre, pero a veces. Estoy desesperado por encontrarlo por mi cuenta y espero contar con su ayuda. Cabe destacar que el EA funciona perfectamente en todos los demás aspectos, al igual que en el probador, no hay quejas, salvo que el problema es que no siempre se ponen los stops. El error aparece en diferentes corredores en diferentes cuentas. Esta es la parte del código responsable de las operaciones comerciales
Este es el código de la función Error(int er)
Así, cuando el EA falla en la fijación de los stops, aparece un mensaje mostrando información sobre el error y los parámetros de la orden que intentó modificar. Lo que escribe es el verdadero misterio para mí. Como puedes ver en las imágenes de abajo, escribe constantemente que el volumen está mal. Esto es extraño. Debo añadir que todos los parámetros del pedido se calculan correctamente antes de la modificación, se puede ver en los mensajes. De lo contrario, el error sería diferente. El programa se probó con un diferencial más alto que el de la demo.
Hola. Ante una situación desagradable. Ayúdame.
Tengo un Asesor Experto. Funciona bien en el Probador de Estrategias, no tengo ninguna reclamación. Sin embargo, cuando lo ejecuto en una demo, veo que el EA no puede colocar stops en ciertas órdenes. Hay un error que aparece no siempre, pero a veces. Estoy desesperado por encontrarlo por mi cuenta y espero contar con su ayuda. Cabe destacar que el EA funciona perfectamente en todos los demás aspectos, al igual que en el probador, no hay quejas, salvo que el problema es que no siempre se ponen los stops. El error aparece en diferentes corredores en diferentes cuentas. Esta es la parte del código responsable de las operaciones comerciales
Este es el código de la función Error(int er)
Así, cuando el EA falla en la fijación de los stops, aparece un mensaje mostrando información sobre el error y los parámetros de la orden que intentó modificar. Lo que escribe es el verdadero misterio para mí. Como puedes ver en las imágenes de abajo, escribe constantemente que el volumen está mal. Esto es extraño. Debo añadir que todos los parámetros de la orden se calculan correctamente antes de la modificación, se puede ver en los mensajes. De lo contrario, el error sería diferente. El programa se probó con un diferencial más alto que el de la demo.
Debes tener mucho cuidado con los valores de tus variables globales. Puedo sugerir que ord_ticket es una variable global y por lo tanto puede almacenar el valor anterior. Y antes de llamar a GetLastError() para capturar el error, debes restablecer el valor anterior llamándolo al principio del código.
ord_ticket se declara a nivel local. Y entonces, aunque se declare globalmente en la primera línea
su valor cambiará sin duda. Será el número de orden en caso de transacción exitosa, o -1 en caso contrario. Así, si la orden no se abre, no llegamos al bloque de fijación de stops.
También hay que tener en cuenta que la función OrderSend() siempre cambia el valor del último error(según la documentación y la lógica), por lo que restablecer la lectura anterior en este caso no es necesario y resultaría una simple pérdida de tiempo. Es decir, el error 131 aparece después de entrar en el bloque de ajuste de parada y antes de que aparezca el mensaje de error. Como los topes no están realmente colocados, la función OrderModify() debe ser la última función en ser llamada, la cual, al igual que la anterior, siempre cambia el valor del último error. Pero no puedo entender por qué no cambia el valor del último error. ¿De dónde viene? Una vez más diré que no hubo problemas en el probador.
Tenía la idea de que el broker hacía trampa porque el servidor enviaba los números de error al terminal y éste a su vez los enviaba al Expert Advisor. He abandonado esta idea porque sólo las órdenes de un EA tienen errores, otros EAs que trabajan en paralelo no tienen tales errores.
ord_ticket se declara a nivel local. Y entonces, aunque se declare globalmente en la primera línea
valor es seguro que cambiará. Será el número de orden en caso de transacción exitosa, o -1 en caso contrario. Así, si la orden no se abre, no llegamos al bloque de fijación de stops.
También hay que tener en cuenta que la función OrderSend() siempre cambia el valor del último error (según la documentación y la lógica), por lo que restablecer la lectura anterior en este caso no es necesario y resultaría una simple pérdida de tiempo. Es decir, el error 131 aparece después de entrar en el bloque de ajuste de parada y antes de que aparezca el mensaje de error. Como los topes no están realmente colocados, la función OrderModify() debe ser la última función en ser llamada, la cual, al igual que la anterior, siempre cambia el valor del último error. Pero no puedo entender por qué no cambia el valor del último error. ¿De dónde viene? Una vez más diré que no hubo problemas en el probador.
Tenía la idea de que el broker hacía trampa porque el servidor enviaba los números de error al terminal y éste a su vez los enviaba al Expert Advisor. He abandonado rápidamente esta idea porque sólo las órdenes de un EA tienen errores, otros EAs que trabajan en paralelo no tienen tales errores.
Yo añadiré. El código del EA que trabaja en paralelo es exactamente el mismo, se encarga de fijar los stops. Este EA nunca ha tenido una situación en la que no se hayan fijado los stops para las órdenes.
Parece que hay un error en el cálculo de los parámetros en alguna parte de arriba, pero si sólo un parámetro está mal, debería aparecer otro error. Por ejemplo, el conocido 130
ord_ticket se declara a nivel local. Y entonces, aunque se declare globalmente en la primera línea
su valor cambiará sin duda. Será el número de orden en caso de transacción exitosa, o -1 en caso contrario. Así, si la orden no se abre, no llegamos al bloque de fijación de stops.
También hay que tener en cuenta que la función OrderSend() siempre cambia el valor del último error (según la documentación y la lógica), por lo que restablecer la lectura anterior en este caso no es necesario y resultaría una simple pérdida de tiempo. Es decir, el error 131 aparece después de entrar en el bloque de ajuste de parada y antes de que aparezca el mensaje de error. Como los topes no están realmente colocados, la función OrderModify() debe ser la última función en ser llamada, la cual, al igual que la anterior, siempre cambia el valor del último error. Pero no puedo entender por qué no cambia el valor del último error. ¿De dónde viene? Una vez más diré que no hubo problemas en el probador.
Tenía la idea de que el broker hacía trampa porque el servidor enviaba los números de error al terminal y éste a su vez los enviaba al Expert Advisor. Rápidamente he abandonado esta idea porque sólo las órdenes de un EA tienen estos problemas, otros EAs que trabajan en paralelo no tienen errores.
Has escrito una respuesta de tres párrafos. En el primero te equivocaste (mi entrada es bastante correcta), en el segundo también te equivocaste (aunque este mensaje lo niveló :) El tercer punto sonó como si hubieras sugerido mover el cursor al final después de la entrada, no antes (lo que se tomó como un error de nuevo). Ante tal panorama, he preferido hacer una aclaración al moderador polivalente que responde.
No obstante, gracias por su respuesta. ¡Y feliz año nuevo! :)
:D ok, feliz año nuevo para ti también :)
Volviendo a lo escrito en la página 411 ... ¿alguien tiene idea de cómo combinar ese código y las condiciones de entrada/salida para cruzar dos MAs? o ¿las órdenes pendientes son la única opción?
Después de abrir una operación en una señal mooving, empezar a controlar el número de órdenes o este orden específicamente, si el número de órdenes para disminuir o como la segunda opción se cierra específicamente este orden, a continuación, averiguar cómo se cerró, si una parada, a continuación, abre sólo la orden opuesta en el precio actual, eso es todo
Después de abrir un acuerdo sobre una señal de movimiento de empezar a controlar el número de órdenes o este orden específicamente, si el número de órdenes para disminuir o como la segunda opción se cierra específicamente este orden, a continuación, averiguar cómo se cierra, si la parada, a continuación, sólo tiene que abrir la orden opuesta en el precio actual, eso es todo
Lo entiendo, pero no puedo escribirlo. El Asesor Experto sólo opera con señales de muwings y no abre una posición inversa en caso de pérdida, o simplemente bloquea el terminal cuando comienza la prueba. Así que escribí algo que no puede ser procesado en absoluto. No soy muy bueno escribiendo. Necesito ayuda en forma de código escrito.
Si OrderProfit()<0, abrirá la ordencontraria. Pero no funciona junto con las señales de las ayudas en movimiento. ¿Puedes escribir un único código que proporcione tanto las señales de muwings como las condiciones para abrir una posición contraria?