acabo de aprender a programar en MQL4 y trate de crear un robot simple, no salió bien. El primer problema que me encontré fue que no podía hacer el backtesting, se tardaba mucho así que decidí dejarlo durante la noche y a la mañana siguiente no había progresado mucho. El segundo problema ocurrió cundo lo trate de ponerlo a prueba en una cuenta demo en 5 divisas; en vez de abrir solo una operación por divisa, el robot abría hasta 35 operaciones de cada una. ya revise el código varias veces y no se que es lo que se, ¿alguna idea?
Hola. Le he dado un vistazo por encima y veo algunas cosas.
En esta parte, supongo que en la tercera linea debería ser Venta=false. Estas repitiendo compra
if(OA>=1)Compra=false; if(Trend==2&&DifB>=DifMin&&DifB<=DifMax&&OA==0)Venta=True; if(OA>=1)Compra=false;
Por otro lado, pones las variables "Cerrar_compra" y "Cerrar_venta" a true sin validar si hay orden abierta. Supongo que debería ser así
if(EMA5<=EMA80 && OA>=1 )Cerrar_compra= True;
En caso contrario pasará por la opción de cerrar compra o venta y pondra OA=0 y podrá abrirte otra orden.
Le he dado un vistazo rapido y me ha parecido que sería esto. pero quizá me he dejado algo.
Espero que te ayude
Hola. Le he dado un vistazo por encima y veo algunas cosas.
En esta parte, supongo que en la tercera linea debería ser Venta=false. Estas repitiendo compra
Por otro lado, pones las variables "Cerrar_compra" y "Cerrar_venta" a true sin validar si hay orden abierta. Supongo que debería ser así
En caso contrario pasará por la opción de cerrar compra o venta y pondra OA=0 y podrá abrirte otra orden.
Le he dado un vistazo rapido y me ha parecido que sería esto. pero quizá me he dejado algo.
Espero que te ayude
Muchas gracias por la ayuda, he editado los criterios y loops de cierre y apertura como sigue. Espero esto sea suficiente y en caso de tener alguna otra sugerencia es mas que bienvenida. de nuevo muchas gracias por la ayuda.
//---Criterios de trading if(OA==0) { if(Trend==1&&DifA>=DifMin&&DifA<=DifMax)Compra=true; if(Trend==2&&DifB>=DifMin&&DifB<=DifMax)Venta=true; } if(OA>=1) { if(EMA5<=EMA80)Cerrar_compra=true; if(EMA5>=EMA80)Cerrar_venta=true; } //---Loop de cierre while(OA>=1) { if(Cerrar_compra==true) { Print("Cerrando compra", TicketOA); RefreshRates(); Cierre=OrderClose(TicketOA, LotOA, PrecioOA, 5, clrBlue); if(Cierre==true)Print("Compra", TicketOA, "cerrada"); break; } if(Cerrar_venta==true) { Print("Cerrando venta", TicketOA); RefreshRates(); Cierre=OrderClose(TicketOA, LotOA, PrecioOA, 5, clrRed); if(Cierre==true)Print("Venta", TicketOA, "cerrada"); OA--; break; } } //---Loop de apertura while(OA==0) { if(Compra==true) { Print("Comprando", Par); RefreshRates(); Apertura=OrderSend(Par, 0, Lotaje, Ask, 5, NULL, NULL, NULL, 0, 0, clrBlue); if(Apertura==true)Print(Par, "Comprado"); break; } if(Venta==true) { Print("Vendiendo", Par); RefreshRates(); Apertura=OrderSend(Par, 1, Lotaje, Bid, 5, NULL, NULL, NULL, 0, 0, clrRed); if(Apertura==true)Print(Par, "Vendido"); Venta=false; break; }
Muchas gracias por la ayuda, he editado los criterios y loops de cierre y apertura como sigue. Espero esto sea suficiente y en caso de tener alguna otra sugerencia es mas que bienvenida. de nuevo muchas gracias por la ayuda.
Ahora se ve mejor.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
acabo de aprender a programar en MQL4 y trate de crear un robot simple, no salió bien. El primer problema que me encontré fue que no podía hacer el backtesting, se tardaba mucho así que decidí dejarlo durante la noche y a la mañana siguiente no había progresado mucho. El segundo problema ocurrió cundo lo trate de ponerlo a prueba en una cuenta demo en 5 divisas; en vez de abrir solo una operación por divisa, el robot abría hasta 35 operaciones de cada una. ya revise el código varias veces y no se que es lo que se, ¿alguna idea?