¿entra en las operaciones cuando comentas?
//if(OpenOrdersThisPair(Symbol())==0)¿entra en las operaciones cuando
LotSize = 0.1;
etc. Trabaje hasta que empiece a entrar en las operaciones, una vez allí probablemente sabrá cuál es el problema.
Sí, entra en el lado largo, incluso con el tamaño del lote "0"...
Cambiar el OpenOrderThisPair tampoco funciona.... Hmmm. Es muy extraño...
Cambiar el OpenOrderThisPair tampoco funciona.... Hmmm. Es muy extraño...
DomGilberto:
Si entra en el lado largo incluso con tamaño de lote "0"...
Cambiar el OpenOrderThisPair tampoco funciona.... Hmmm. Es muy extraño...
Si entra en el lado largo incluso con tamaño de lote "0"...
Cambiar el OpenOrderThisPair tampoco funciona.... Hmmm. Es muy extraño...
Si esta prueba devuelve un valor distinto de cero. . .
if(OpenOrdersThisPair(Symbol()) == 0)
. . no se llama a OrderSend(), pero se sigue comprobando si SellTicketOrder es mayor que 0 . . .
Haz esto. . .
if (direction==1)//--Sell--// { { double ssl=sell_stop_price; double stp=sell_takeprofit_price; LotSize = (RiskedAmount/(pips_to_ssl/pips))/10; if(OpenOrdersThisPair(Symbol())==0) { int SellTicketOrder = OrderSend(Symbol(),OP_SELLSTOP,LotSize,sellPrice,3,ssl,stp,NULL,MagicNumber,0,Red); if(SellTicketOrder > 0) { Print("Order Placed #", SellTicketOrder); } else { Print("Order Send Failed, error # ", GetLastError()); } } }
No - parece que no quiere enviar la orden de venta...
Debe ser un error en la forma en que escribí el código con respecto a las declaraciones "IF" dentro del bucle for que envía la función OrderEntry para activar una orden...
Debe ser un error en la forma en que escribí el código con respecto a las declaraciones "IF" dentro del bucle for que envía la función OrderEntry para activar una orden...
DomGilberto:
No - parece que no quiere enviar la orden de venta...
Debe ser un error en la forma en que escribí el código con respecto a las declaraciones "IF" dentro del bucle for que envía la función OrderEntry para activar una orden...
Entonces, ¿qué error obtiene ahora? si no obtiene ninguno y no obtiene "Order placed # 12345" entonces el OrderSend() no está siendo llamado y tiene un problema con su función OpenOrdersThisPair()... publique su código.
No - parece que no quiere enviar la orden de venta...
Debe ser un error en la forma en que escribí el código con respecto a las declaraciones "IF" dentro del bucle for que envía la función OrderEntry para activar una orden...
Cuando esto se ejecuta, funciona bien para el lado largo (he estado jugando con esto durante las últimas 2 horas). La cosa es, que muy probablemente le daré cuerda a usted y a cierta persona, ya que sé dónde me estoy equivocando (donde llamo a la función"CheckForMaTrade") con respecto a las declaraciones IF relativas a los parámetros de la media móvil, y cómo si son "verdaderos" enviará OrderEntry a OrderSend... El problema es que todavía estoy aprendiendo a escribir esa parte correctamente...
//+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if(OpenOrdersThisPair(Symbol())>=1) { if(UseMoveToBreakEven)MoveToBreakEven(); if(UseTrailingStop)AdjustTrail(); if(Use_MA_Trail)MA_Trail(); } if(IsNewCandle())CheckForMaTradeLong(); if(IsNewCandle())CheckForMaTradeShort(); //---- return(0); }
DomGilberto:
Cuando esto se ejecuta, funciona bien para el lado largo (he estado jugando con esto durante las últimas 2 horas). La cosa es, que muy probablemente le daré cuerda a usted y a cierta persona, ya que sé dónde me estoy equivocando (donde llamo a la función "CheckForMaTrade") con respecto a las declaraciones IF relativas a los parámetros de la media móvil, y cómo si son "verdaderos" enviará OrderEntry a OrderSend... El problema es que aún estoy aprendiendo a escribir bien esa parte...
Cuando esto se ejecuta, funciona bien para el lado largo (he estado jugando con esto durante las últimas 2 horas). La cosa es, que muy probablemente le daré cuerda a usted y a cierta persona, ya que sé dónde me estoy equivocando (donde llamo a la función "CheckForMaTrade") con respecto a las declaraciones IF relativas a los parámetros de la media móvil, y cómo si son "verdaderos" enviará OrderEntry a OrderSend... El problema es que aún estoy aprendiendo a escribir bien esa parte...
RaptorUK:
¿Qué error obtienes ahora? Si no obtienes ninguno y no obtienes "Order placed # 12345" entonces el OrderSend() no está siendo llamado y tienes un problema con tu función OpenOrdersThisPair()... publica tu código.
¿Qué error obtienes ahora? Si no obtienes ninguno y no obtienes "Order placed # 12345" entonces el OrderSend() no está siendo llamado y tienes un problema con tu función OpenOrdersThisPair()... publica tu código.
Entonces .. . . qué error obtiene, etc...
Oh, lo siento - Ya no estoy recibiendo ningún error de lo que sea. Sólo recibo órdenes de compra y no órdenes de venta...
¡Es en relación con mi hilo anterior con respecto a los cruces de MA - Todavía no lo entiendo! ¡Pero no quiero dar cuerda a nadie y golpear un caballo muerto mientras la gente me está dando la respuesta (aunque no entiendo la respuesta lol)! ¡Gracias RaptorUK por su ayuda!
¡Es en relación con mi hilo anterior con respecto a los cruces de MA - Todavía no lo entiendo! ¡Pero no quiero dar cuerda a nadie y golpear un caballo muerto mientras la gente me está dando la respuesta (aunque no entiendo la respuesta lol)! ¡Gracias RaptorUK por su ayuda!
if(IsNewCandle())CheckForMaTradeLong(); if(IsNewCandle())CheckForMaTradeShort();Aunque apoyo las operaciones de factorización en funciones, no lo hago para la mayoría de las variaciones de Nueva Vela/Nueva Barra porque esa función sólo puede ser llamada UNA VEZ [por start()].
int start(){ static datetime time0; bool isNewCandle = time0 != Time[0]; time0 = Time[0]; // Once per start only. : if(isNewCandle)CheckForMaTradeLong(); if(isNewCandle)CheckForMaTradeShort();
Gracias WHRoeder - ¡buen consejo!
![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
Me cuesta entender por qué las posiciones largas funcionan y las cortas no?
Tengo la sensación de que tiene algo que ver con mi función init para determinar el número de decimales con el corredor dado a mano. (ya que esto parece ser el culpable de por qué las órdenes fantasmas son lanzadas justo al principio de cuando inicio el probador...)
¿Alguien tiene alguna idea de por qué el lado corto me está diciendo este error?
Gracias de antemano (el código es un poco desordenado en este momento, tengo la intención de limpiarlo, por supuesto)