Buenas gente, estoy programando un EA que operara en Forex para que, despues de que se cumplan varias condiciones en unos datos que agregue al grafico, se ejecute una orden de compra o una de venta segun lo requerido.
Al parecer ya pude programar todas las condiciones ya que se ejecutan satisfactoriamente pero al momento de la ejecucion de la operacion A VECES aparecen errores.
Cuando utilizaba cTrade para ejecutar ordenes, algunas veces me aparecia el error "not enough money" al realizar alguna operacion y otras veces se ejecutaba de manera normal, en el log tenia los valores de compra/venta, Stop Loss, take Profit y Lotaje para verificar si la operacion daba numeros invalidos o extraños pero eran corretos y con calculadora en mano revisaba si el lotaje era correcto, al punto en que yo podia meter una orden manual con los mismos parametros exactos y dicha orden se ejecutaba en mercado sin problemas.
Ahora que cambie a OrderSend, parecia que todo iba de manera correcta hasta que hoy al estar probando y que se cumplieran los valores de una Compra, mi EA me salio el error 4756. Añado que tiempo antes ya habia realizado operaciones tanto de Compra como de Venta sin ningun problema. Lo que me extraña es que sea A VECES.
Dejo la funcion que ejecuta compras para ver si alguien puede encontrar algun error, como mencione, las condiciones y toda la logica que busco en la operacion se ejecuta de manera correcta (fui revisando cada uno de los puntos con mensajes en el log para ver si las condiciones se iban cumpliendo, a la vez que tengo activados comentarios en el grafico para ir viendo como se mueven los valores booleanos). La funcion que ejecuta ventas es exactamente igual, solo que con los signos cambiados.
Como mencione esa es la funcion que ejecuta Compras, la de Ventas es basicamente igual solo cambiando algunos signos. hasta el momento del cambio a "OrderSend" solo Compras me dio una unica vez un error, que fue el error 4756, las ventas aun no han presentado ningun error.
Debido a que mi codigo espera al cierre de vela para operar, pude notar que hubo un pequeño Gap al momento en que se supone que debia meter mi operacion, mi teoria es que esto fue el causante del error y causante de los errores anteriores que tenia al usar cTrade y si es asi ¿existe alguna forma de darle cierta holgura en gaps asi de pequeños o simplemente es una coincidencia y el problema esta en otro lado?.
Adjunto un par de Screenshots del mensaje de error, señalando donde debio de abrir la operacion y el pequeño gap que tuvo.
Mi consejo es que utilices CTrade, porque es más sencillo y los errores se ven mejor. Un ejemplo:
#include <Trade\Trade.mqh> CTrade trade; // Órdenes de compra y venta: if(BuySignal&&LongPos<1){ // Trade LONG. double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK); if(!trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,MathMin(Lotsize,maxLot),Ask,SL,TP,CustomComment)){ Print("PositionOpen error ",trade.ResultRetcode()); return; // Salir de la función si hay error. } if(SellSignal&&ShortPos<1){ // Trade SHORT. double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID); if(!trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,MathMin(Lotsize,maxLot),Bid,0,TP,CustomComment)){ Print("PositionOpen error ",trade.ResultRetcode()); return; // Salir de la función si hay error. }
Si el lote, el SL y el TP son correctos esto debe funcionar, espero que sirva.

- 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
Buenas gente, estoy programando un EA que operara en Forex para que, despues de que se cumplan varias condiciones en unos datos que agregue al grafico, se ejecute una orden de compra o una de venta segun lo requerido.
Al parecer ya pude programar todas las condiciones ya que se ejecutan satisfactoriamente pero al momento de la ejecucion de la operacion A VECES aparecen errores.
Cuando utilizaba cTrade para ejecutar ordenes, algunas veces me aparecia el error "not enough money" al realizar alguna operacion y otras veces se ejecutaba de manera normal, en el log tenia los valores de compra/venta, Stop Loss, take Profit y Lotaje para verificar si la operacion daba numeros invalidos o extraños pero eran corretos y con calculadora en mano revisaba si el lotaje era correcto, al punto en que yo podia meter una orden manual con los mismos parametros exactos y dicha orden se ejecutaba en mercado sin problemas.
Ahora que cambie a OrderSend, parecia que todo iba de manera correcta hasta que hoy al estar probando y que se cumplieran los valores de una Compra, mi EA me salio el error 4756. Añado que tiempo antes ya habia realizado operaciones tanto de Compra como de Venta sin ningun problema. Lo que me extraña es que sea A VECES.
Dejo la funcion que ejecuta compras para ver si alguien puede encontrar algun error, como mencione, las condiciones y toda la logica que busco en la operacion se ejecuta de manera correcta (fui revisando cada uno de los puntos con mensajes en el log para ver si las condiciones se iban cumpliendo, a la vez que tengo activados comentarios en el grafico para ir viendo como se mueven los valores booleanos). La funcion que ejecuta ventas es exactamente igual, solo que con los signos cambiados.
Como mencione esa es la funcion que ejecuta Compras, la de Ventas es basicamente igual solo cambiando algunos signos. hasta el momento del cambio a "OrderSend" solo Compras me dio una unica vez un error, que fue el error 4756, las ventas aun no han presentado ningun error.
Debido a que mi codigo espera al cierre de vela para operar, pude notar que hubo un pequeño Gap al momento en que se supone que debia meter mi operacion, mi teoria es que esto fue el causante del error y causante de los errores anteriores que tenia al usar cTrade y si es asi ¿existe alguna forma de darle cierta holgura en gaps asi de pequeños o simplemente es una coincidencia y el problema esta en otro lado?.
Adjunto un par de Screenshots del mensaje de error, señalando donde debio de abrir la operacion y el pequeño gap que tuvo.