Hola,
Si quiero ayuda, intent� cambiar el c�digo siguiente, pero el EA segu�a fallando en MT4.
Necesito que la orden se cierre cuando se cierre la barra actual (es decir, la barra donde se ejecut� la orden). B�sicamente intercambia una barra.
Este es el c�digo original, trata de se�al en se�al.
C�digo insertado/ ----------------------------------------------------- --------------------- /| Inicio de se�al (salida de compra) |/ -------------------------------------------------------------- ------------------- if (�se�al abajo! =EMPTY_VALUEse�al abajo! =0) Orden = SIGNAL_CLOSEBUY;///pag --------------------------------------------- --------------------- /| Fin de se�al (salida de compra) |/ -------------------------------------------------------------- ------------------- if (Order == SIGNAL_CLOSEBUY ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) OrderClose(OrderTicket( ), OrderLots(), Oferta, Deslizamiento, MediumSeaGreen); deber�a (SignalMail) SendMail(N�mero 91;Alerta de se�al#93;, #91; S�mbolo() #93; DoubleToStr(Oferta, D�gitos) Cerrar compra); if (! EachTickMode) BarCount = Barras; IsTrade = Falso; permanecer;/Cesar el seguimiento if(UseTrailingStop TrailingStop gt; 0) if(Bid - OrderOpenPrice() gt; Punto * TrailingStop) if(OrderStopLoss() lt; Oferta - Punto * TrailingStop) OrderModify(OrderTicket(), OrderOpenPrice(), Oferta - Punto * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); if (! EachTickMode) BarCount = Barras; �ltimo; } m�s/ ----------------------------------------------------- --------------------- if (�registro! =EMPTY_VALUEregistro! =0) Orden = SIGNAL_CLOSESELL;/pag ----------------------------------------------- ------------------- /} }/p ----------------------- ------------------------------------- /| Inicio de se�al (entrada) |/ -------------------------------------------------------------- ------------------- /if (tiempoprev! =Hora#91;0#93;-RRB-/tiempoprev = Hora#91;0#93; ; deber�a (signalup! =EMPTY_VALUEsignalup! =0) Orden = SIGNAL_BUY; if (signaldown! =EMPTY_VALUEsignaldown! =0) Orden = SIGNAL_SELL;///p ---------------- -------------------------------------------------- /| Fin de se�al |/ ---------------------------------------- ----------------- /Comprar if (Order == SIGNAL_BUY ((EachTickMode ! TickCheck) || (! EachTickMode (Bars ! = BarCount)))) if(! IsTrade)/Verificar margen libre if (AccountFreeMargin() lt; (100 * Lotes)) Print(No tenemos dinero. Margen libre =, AccountFreeMargin()); return( 0); si (UseStopLoss) StopLossLevel = Ask - StopLoss * Etapa; de lo contrario StopLossLevel = 0.0; deber�a (UseTakeProfit) TakeProfitLevel = Ask TakeProfit * Punto; de lo contrario TakeProfitLevel = 0.0; Ticket = OrderSend(Symbol(), OP_BUY, Lotes, Ask , Deslizamiento, StopLossLevel, TakeProfitLevel, Compra(# MagicNumber ), MagicNumber, 0, DodgerBlue); if(Ticket gt; 0) if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) Print(orden de COMPRA iniciada:, OrderOpenPrice()); deber�a (SignalMail) SendMail(N�mero 91;Signal AlertNumber 93;, #91; S�mbolo() #93; DoubleToStr(Preguntar, D�gitos) Abrir Compra); else Print(Error al abrir orden de COMPRA:, GetLastError());si (EachTickMode) TickCheck = Verdadero; if (! EachTickMode) BarCount = Utilidades; retorno(0);/Vender deber�a (Order == SIGNAL_SELL ((EachTickMode ! TickCheck) || (! EachTickMode (Bars ! = BarCount)))) if(! IsTrade)/Verificar margen libre if (AccountFreeMargin() lt; (100 * Lotes )) Imprimir(No tenemos dinero. Margen libre =, AccountFreeMargin()); retorno(0); if (UseStopLoss) StopLossLevel = Oferta StopLoss * Etapa; en caso contrario StopLossLevel = 0,0; if (UseTakeProfit) TakeProfitLevel = Oferta - TakeProfit * Punto; de lo contrario, TakeProfitLevel = 0,0; Ticket = OrderSend(Symbol(), OP_SELL, Lotes, Oferta, Deslizamiento, StopLossLevel, TakeProfitLevel, Econom�a (# MagicNumber ), MagicNumber, 0, DeepPink); if(Ticket gt; 0) if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) Print(Orden de VENTA iniciada:, OrderOpenPrice()); deber�a (SignalMail) SendMail(N�mero 91;Signal AlertNumber 93;, #91; S�mbolo() #93; DoubleToStr(Oferta, D�gitos) Econom�a abierta); else Print(Error al abrir orden de VENTA:, GetLastError()); si (EachTickMode) TickCheck = Verdadero; if (! EachTickMode) BarCount = Barras; retorno(0); if (! EachTickMode) BarCount = Barras; retorno(0); }/ ---------------------------------------------- ----------- �Alguien puede ayudarme?