Ayuda a la codificación - página 13

 

modificación rápida de EA

Hola,

Necesito un poco de ayuda, traté de cambiar el código de abajo, pero el EA seguía estrellándose MT4.

Quiero que la orden se cierre cuando la barra actual (la barra donde se ejecutó la orden) se cierre. Básicamente el comercio de una barra.

Este es el código original, opera de señal a señal.

//+------------------------------------------------------------------+

//| Signal Begin(Exit Buy) |

//+------------------------------------------------------------------+

if (signaldown!=EMPTY_VALUE&&signaldown!=0) Order = SIGNAL_CLOSEBUY;

//+------------------------------------------------------------------+

//| Signal End(Exit Buy) |

//+------------------------------------------------------------------+

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop) {

if(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

//+------------------------------------------------------------------+

//| Signal Begin(Exit Sell) |

//+------------------------------------------------------------------+

if (signalup!=EMPTY_VALUE&&signalup!=0) Order = SIGNAL_CLOSESELL;

//+------------------------------------------------------------------+

//| Signal End(Exit Sell) |

//+------------------------------------------------------------------+

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {

if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

}

}

}

//+------------------------------------------------------------------+

//| Signal Begin(Entry) |

//+------------------------------------------------------------------+

//if (timeprev!=Time[0]){

// timeprev = Time[0];

if (signalup!=EMPTY_VALUE&&signalup!=0)

{

Order = SIGNAL_BUY;

}

if (signaldown!=EMPTY_VALUE&&signaldown!=0){

Order = SIGNAL_SELL;

}

// }

//+------------------------------------------------------------------+

//| Signal End |

//+------------------------------------------------------------------+

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (100 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

//Sell

if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (100 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("SELL order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

Print("Error opening SELL order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

//+------------------------------------------------------------------+

¿Alguien puede ayudarme?

 

¡¡¡¡¡Por favor, ayuda!!!!!

Necesito un ea que haga lo siguiente

en un momento determinado establecer una orden de compra o venta de 4 piezas

funciones:

orden de apertura (variable 00-24)

orden1 vender o comprar lote (0.01 .0,02... 1) TP (+ xx pips desde oppen) SL (- xx pips desde open)

orden2 vender o comprar lote (0.01 .0,02... 1) TP (+ xx pips desde oppen) SL (- xx pips desde open)

orden3 vender o comprar lote (0.01 .0,02... 1) TP (+ xx pips desde oppen) SL (- xx pips desde open)

orden4 vender o comprar lote (0.01 .0,02... 1) TP (+ xx pips desde oppen) SL (- xx pips desde open)

GRACIAS

 

Necesito añadir a mi EA un código para desactivarlo a cierto nivel de precios

Hola,

Necesito añadir a mi EA un código para desactivarlo y activarlo en determinados niveles de precio.

He buscado y he encontrado que puedo hacerlo con

# iclude<WinUser32mqh

extern bool Disable Ea = true // desde X (examply1.4420) hasta Y(examply1.4380) y desde Z (examply1.4480) hasta N(examply1.4520) //

extern bool Habilitar Ea = true // de R(examply -1.4420) a T(examply -1.4480)

Agradeceré que me ayuden a traducir estas condiciones en un código, para que en el cuadro de diálogo del EA pueda introducir el nivel de precios para desactivar/activar el EA.

 

Después de buscar y estudiar un poco encontré que escribiendo en la función de inicio del EA un código lo iniciaría en ciertas condiciones.

Así que en la función de inicio del experto escribí lo siguiente

if(PRICE_MEDIAN (SellLevel-Point*BufferPips))

return (0)

------------------------------------------------------------------------------------------------------------------

BufferPips he añadido en el doble externo por lo que en el cuadro de diálogo podría cambiar su valor.

No sé si PRICE_MEDIAN es una buena opción.

Estoy recibiendo un error de compilación - paréntesis izquierdo desequilibrado.

Se agradece la ayuda

 

ayúdame a hacer auto trading

¡Hola, Sr. Gurú!

¡tengo auto trading pero no funciona, por favor ayúdeme!

Archivos adjuntos:
auto_me.mq4  4 kb
 

Hola Mario,

Creo que esta condición if(current_shortEma == current_longEma)

nunca es verdadera. normalmente para detectar un cruce hay que hacer lo siguiente

if(current_shortEma > current_longEma && last_shortEma < last_longEma){

//cruce desde abajo

}

if(current_shortEma last_longEma){

//cruzar desde arriba

}

Información más detallada aquí:

https://www.mql5.com/en/forum/trading_systems

Gracias

MIkhail

 

Tengo una solicitud de codificación también ---- necesita un codificador (tarea muy simple)

Sabemos que HA -- henki ashi raramente se equivoca

durante la consolidación, o casi la vuelta en U, se acorta cada vez más

mientras que cuando la tendencia es todavía fuerte, HA para esa barra será LARGA

POR LO TANTO

sería bueno si tenemos un indicador que nos diga la fuerza de la tendencia

la idea es fácil

--- primero, debe ser cualquier HA va a hacer (adjunto mi ex4 sólo, pero tienen que encontrar una MQ4 - para HA) y modificarlo (tarea sencilla supongo)

sólo hay 2 colores para HA , uno azul * arriba ---- + ---- y uno rosa / violeta * abajo

-- Segundo, cuando la HA tiene que dibujar las cosas de la HA en el gráfico, hay LENGTH - longitud de la HA.

--- tercero, cuando se acerca a la vuelta en U, la barra de HA se acorta cada vez más

Supongamos que cuando la longitud de la barra de HA (por ensayo y error) sea inferior a 0,4 cm, la dibujaremos de color NEGRO (es decir, no azul / rosa)

nos avisará de que NO ENTRAMOS y saldremos pronto

De esta manera, sólo tenemos que entrar (sin miedo) de acuerdo con la fuerza de la tendencia de HA --- al igual que mi otra idea, muy SIMPLE, extremadamente útil

coder -- por favor no uses el ex4 que adjunto, solo dale a [BUSCAR] en el foro y escribe henki ashi , busca algún MQ4 con todo el código

------

cuando lo hayas completado o después de cambiarlo a 3 a 4 colores (podría ser 3 colores , en lugar de 4 colores)

por favor, envíame un mensaje privado PM, con el LINK, para que pueda subirlo, después de que empieces, si quieres, podría darte otro indicador que te diga cual es el mejor momento para cambiar el color a NEGRO también -- el negro es una especie de color de advertencia

----- es decir, puedes DESCARGAR el ex4 que te adjunto, pero utiliza otro MQ4 pls ---

gracias, será un buen indicador para todos nosotros, y la codificación debe ser bastante simple, y sencillo

el código es en el principio, similar al diagrama anterior

si mi suposición es correcta, g_ibuf_## controlar la longitud de la barra de HA

sólo tenemos que imprimir todo el valor g_ibuf con la función llamada "comentario"

luego ejecutar el gráfico durante unos días, y echar un vistazo al valor g_ibuf, cuando se hace pequeño, y anotar el VALOR de esa variable

entonces cuando tengamos un espacio de tiempo para codificar, simplemente codificamos de 1 a 2 colores -- digamos , negro y gris oscuro en la codificación, cuando el histograma g_ibuf es MENOR que cierto valor anotado

se supone que es simple -- de lo contrario, podría tratar de prueba y error para encontrar el mejor valor de ajuste (para ser más pequeño que)

sinceramente

xx3xxx -- He subido mi MQ4 para la versión 4 allí, supongo que puede utilizar este, esto parece ser más largo y más grueso que el otro HA que tengo

Archivos adjuntos:
 
 
Archivos adjuntos:
lsma_nrp.mq4  5 kb
 

El indicador Trix necesita una alerta

Coder Guru o cualquier otra persona, puede programar un sonido, alerta de notificación y t3_trix_x2roc_clr_nrp_mtf.mq4t3_trix_x2roc_clr_nrp_mtf.mq4e alerta de correo en este indicador Trix cada vez que la línea Trix a largo plazo o a corto plazo cambia de color de rojo a verde o viceversa. Gracias

Archivos adjuntos: