![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
cuando inicias tu Metatrader el EA tiene que averiguar si hay una operación abierta
Yo sólo hago el bucle de cuenta atrás para comprobar las operaciones si hay una operación
Si lo pongo al principio en uno y OrdersTotal() >0 entonces hago la comprobación de operaciones if(.......> || .......> ){hacer el bucle....
¿estás seguro de que me diste el código que te dio los resultados mostrados arriba? lo probé en 1440 (1 día) y no se ejecutó ninguna operación. sin embargo cuando lo cambié a 1M se ejecutaron muchas operaciones
OK aquí va..... Intentaré ayudar aquí si puedo.
Esta pregunta de Ma_Shift es una que he tenido durante algún tiempo y nunca fue capaz de obtener una respuesta clara en.
Si usted notará en su código que está utilizando un desplazamiento de 8 en su Moving averages.... ¿qué significa esto?
Esto hace una diferencia de 3 pip en el valor de esta vela 08:00 como se muestra aquí en la ventana de datos.
![](https://c.mql5.com/mql4/forum/2013/01/mashifted.png)
Lo que nos lleva a la pregunta: ¿Para qué sirve el ajuste "Shift" del final?
Bueno, si pasas el ratón por el gráfico con la ventana de datos abierta y te mueves de una vela a otra
verás que los números cambian para la 5 SMA a medida que vas de vela en vela...
De eso se trata el último valor de SHIFT... teniendo en cuenta que la vela actual que se está dibujando es la vela cero...
vela actual que se dibuja es la vela cero... la última vela completada es la vela 1, así que si hay 1000 velas totales en
en el gráfico, se numeran hacia atrás desde la 999 en el borde izquierdo del gráfico hasta la 0 en la que se encuentra actualmente.
Así que si quieres saber cuál era el valor de la 5 SMA hace 5 velas completadas
usted pone un 5 en ese último lugar... por supuesto a medida que el tiempo avanza... la vela 5 cambiará a la siguiente vela.
Ahora, como se mencionó... si usted siempre está recibiendo el valor de la vela 0.. entonces ese valor es constantemente
cambiando con el precio. Así que usted puede tomar una señal y luego el indicador repinta en usted .. pero si usted está
siempre pidiendo la información de la vela 1 se hace y no va a cambiar....
Espero que esto ayude...
He rehecho todo y he arreglado el bucle, el deslizamiento, he arreglado los valores de la media móvil y del RSI, me he asegurado de que todas las posiciones abiertas se cierren antes de iniciar una nueva posición, pero cuando hago el backtest, no pasa nada, no se ejecuta ninguna compra/venta... ¿cuál es el problema?
la función init() solo se ejecuta al inicio y no en cada tick como la función start()... tendrás que poner las medias móviles de nuevo en la función start en lugar de en la init() solo para que funcione y siga obteniendo números frescos...
Revisado
Añadir una función en la que el EA compruebe si hay órdenes pendientes antes de decidir abrir una nueva posición. Si hay una orden pendiente o abierta entonces no intentará abrir más.
veo que todos usan un bucle para comprobar si hay una posición abierta antes de comprar, no veo la lógica de eso. mientras OrdersTotal sea > 0 hay órdenes abiertas y mi EA no intentará abrir más posiciones.
He arreglado el bucle decreciente.
Esta vez me da el error OrderClose 138 que no se soluciona añadiendo refreshrates()
y sigo perdiendo dinero que no debería.
No se me ocurre nada más que arreglar...
Revisado
Añadir una función en la que el EA compruebe si hay órdenes pendientes antes de decidir abrir una nueva posición. Si hay una orden pendiente o abierta entonces no intentará abrir más.
veo que todos usan un bucle para comprobar si hay una posición abierta antes de comprar, no veo la lógica de eso. mientras OrdersTotal sea > 0 hay órdenes abiertas y mi EA no intentará abrir más posiciones.
He arreglado el bucle decreciente.
Esta vez me da el error OrderClose 138 que no se soluciona añadiendo refreshrates()
y sigo perdiendo dinero que no debería.
No se me ocurre nada más que arreglar...
¿Por qué colocaste la lógica para abrir una compra antes de comprobar las operaciones que tu EA tiene abiertas en tu cuenta ????
¿Qué pasará ahora ???? con la programación que tienes hasta ahora?
Suponga que tiene una cuenta funcionando con su EA. Abres manualmente una operación para el GBPUSD.
¿Cuántas operaciones tiene OrdersTotal() con esa operación?
Su código.... para BUY
¿qué está haciendo ahora? y ¿por qué razón lo hace?
¿Por qué la lógica para la apertura de una compra antes de comprobar los oficios de su EA han abierto en su cuenta ????
¿Qué pasará ahora ???? con la programación que tienes hasta ahora?
Suponga que tiene una cuenta funcionando con su EA. Abres manualmente una operación para el GBPUSD.
¿Cuántas operaciones tiene OrdersTotal() con esa operación?
Su código.... para BUY
¿qué está haciendo ahora? y ¿por qué razón lo hace?
comprar sólo si se han cumplido las condiciones de compra y si no se han abierto posiciones
comprar sólo si las condiciones de compra se han cumplido y si no se ha abierto ninguna posición
Supongamos que tiene una cuenta que funciona con su EA. Usted abre manualmente una operación para GBPUSD.
La condición será verdadera
¿podría por favor dejarme echar un vistazo a sus códigos?
quiero saber por qué he fallado y cómo hacerlo bien.
.
Su mensaje a mí puedo darle el código completo directamente.....
Eso no será gratis. Para eso tienes que usar la sección deTrabajos y pagar para conseguirlo...
Entonces lo obtendrás allí
.
Otra forma es leer bien los temas
Aquí te ayudamos a que aprendas a programarlo tú mismo, eso es ayuda gratuita
Te mostramos tus errores y te ayudamos en la dirección de cómo resolver.
Muestro el código que tengo en el momento en que usted ha aprendido una manera de escribirlo ....
No hace falta pagar entonces y puedes ese momento compararlo con el código que hiciste aquí con ayuda de este foro
....
mi ultima pregunta aqui sigue sin respuesta
Supongamos que tienes una cuenta funcionando con tu EA. Usted abre manualmente un comercio para GBPUSD.
la condición será verdadera
.
. En otro temaOrderClose error 138
usted ha sido ayudado allí muy bien(RaptorUK y WHRoeder gracias por la explicación allí creo que muy bien hecho)
.
Otra pregunta que tengo para usted es
¿Por qué cambiar el marco de tiempo en este cálculo de la media móvil
Esto no es lo mismo que he dado,
No está calculando el valor correcto en otro gráfico diario
.
Así que tómese su tiempo para aprender y practicar y leer cuidadosamente la ayuda que se obtiene aquí en este foro
o pagar a alguien para programar para usted en un sitio como Jobs
¿podría por favor dejarme echar un vistazo a sus códigos?
quiero saber por qué he fallado y cómo hacerlo bien.
.
Su mensaje a mí puedo darle el código completo directamente.....
Eso no será gratis. Para eso tienes que usar la sección deTrabajos y pagar para conseguirlo...
Entonces lo obtendrás allí
.
Otra forma es leer bien los temas
Aquí te ayudamos a que aprendas a programarlo tú mismo, eso es ayuda gratuita
Te mostramos tus errores y te ayudamos en la dirección de cómo resolver.
Muestro el código que tengo en el momento en que usted ha aprendido una manera de escribirlo ....
No hace falta pagar entonces y puedes ese momento compararlo con el código que hiciste aquí con ayuda de este foro
....
mi ultima pregunta aqui sigue sin respuesta
Supongamos que tienes una cuenta funcionando con tu EA. Usted abre manualmente un comercio para GBPUSD.
la condición será verdadera
.
. En otro temaOrderClose error 138
usted ha sido ayudado allí muy bien(RaptorUK y WHRoeder gracias por la explicación allí creo que muy bien hecho)
.
Otra pregunta que tengo para usted es
¿Por qué cambiar el marco de tiempo en este cálculo de la media móvil
Esto no es lo mismo que he dado,
No está calculando el valor correcto en otro gráfico diario
.
Así que tómese su tiempo para aprender y practicar y leer cuidadosamente la ayuda que se obtiene aquí en este foro
o pagar a alguien para programar para usted en un sitio como Jobs
¿se supone queOrdersTotal() revela la cantidad total de órdenes pendientes y órdenes de mercado independientemente de que se hayan abierto a través de EA o manual?
Estaba pensando de esta manera. Mi EA siempre comprobará si hay órdenes abiertas y si las hay, no abrirá más órdenes y sólo abrirá nuevas órdenes cuando no haya órdenes abiertas.
Creo que está funcionando bien porque mi sección de resultados me muestra la secuencia de órdenes 1,1,2,2,3,3,4,4 que significa que una orden se cierra antes de que se abra una nueva orden.
las variables para la media móvil y el RSI cambiaron debido a razones de prueba. Estaba experimentando en un marco de tiempo/periodo diferente pero no lo cambié cuando lo publiqué aquí.
Y lo más extraño de todo, mi código sólo ejecutará la orden de compra. nunca ha ejecutado ni siquiera una orden de venta,
en pocas palabras, los problemas que todavía estoy enfrentando ahora.
1. sólo ejecuta la compra pero nunca ejecuta la venta a pesar de que he codificado la venta
2. sigue haciendo ganancias negativas lo cual estoy seguro que esta estrategia no se supone que lo haga.