Se necesita una modificaci�n r�pida de EA

 

Publi

Resultados 1 al 6 de 6

Tema: Se necesita una modificaci�n r�pida de EA

  1. #1
    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?

  2. #2
    O simplemente puede verificar la cantidad, si su l�gica comercial est� contenida en una funci�n: C�digo insertado void LookForTradingOpportunities() if(Volume#91;0#93;gt;1) return;/ejecutar solo despu�s del cierre if ( (HCCILevel gt; CCIHighTrigger) (HCCILevel gt; Prev_HCCILevel) (LCCILevel lt; CCILowTrigger)) Orden = SIGNAL_BUY; if ( (HCCILevel lt; CCILowTrigger) (HCCILevel lt; Prev_HCCILevel) (LCCILevel gt; CCIHighTrigger)) Orden = SIGNAL_SELL;/FIN

  3. #3

  4. #4
    Tambi�n descubr� este c�digo, c�digo insertado if(Info!=iTime(Symbol(),0,0)) if(signalup! =EMPTY_VALUEsignalup! =0) if(openpos()gt;0) for(I=0;ilt ;OrdersTotal();I ) if(OrderSelect(I,SELECT_BY_POS,MODE_TRADES)) if(OrderType()==OP_SELLOrderSymbol()==Symbol()Orde rMagicNumber()==mn) if(OrderClose(OrderTicket(),lotes, Preguntar, deslizar)) Imprimir (corto estaba cerrado); Impresi�n (intento de apertura prolongada); Publicar (S�mbolo()); nt=OrderSend(Symbol(),OP_BUY,lotes,Ask,slide,0,0,a b,mn,0,Green); if(ntgt;0) Publicar (se abri� una orden larga); if(signaldown! =EMPTY_VALUEsignaldown! =0) if(openpos()gt;0) for(I=0;ilt;OrdersTotal();I ) if(OrderSelect(I,SELECT_BY_POS,MODE_TRADES)) if(OrderType()= =OP_BUYOrderSymbol()==Symbol()OrderMagicNumber()== mn) if(OrderClose(OrderTicket(),lots,Bid,slide )) Print(long was close ); Impresi�n (intento de abrir el informe); Imprimir(S�mbolo()); nt=OrderSend(Symbol(),OP_SELL,lotes,Oferta,diaposi tiva,0,0,ab,mn,0,Red); if(ntgt;0) Publicar (se abri� un corto); datos=iTime(S�mbolo(),0,0);/--/-- retorno(0); }/ ---------------------------------------------- -------------------- int openpos() { int j=0; ent I,n; n=TotalPedidos(); for(I=0;ilt;n;I ) rendimiento (j); �Alg�n experto puede decirme cu�l est� mejor escrito?

  5. #5
    Hola, si te conozco bien, ser�a mejor utilizar la funci�n NewBar. Bool NewBar() fecha y hora est�tica lastbar=0; fecha y hora curbar=Hora[0]; if(�ltima barra! ) =curbar) �ltima barra=curbar; retorno (verdadero); de lo contrario regresa (falso); Puede manipular esta funci�n dentro de su programa principal.

  6. #6
    C�digo insertado fijo y usado int barsCount = 0; int inicio() retorno(0); int deinit() retorno(0); int start() { if(Bars gt; barsCount){ if(OrdersTotal() gt; 0) for(int c = 0; c lt; OrdersTotal(); c ) OrderSelect(c, SELECT_BY_POS); if(OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Oferta, 3, Azul); else if(OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red); barrasCount = Barras; retorno(0);

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Cookies
Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede cambiar la configuración u obtener más información y política de cookies aquí.