¡Pide! - página 51

 
pawang:
Hola

Lo siento mucho si mi pregunta es muy básica.

Estoy aprendiendo mql4.

Por favor, ayúdame a expresar estas condiciones matemáticas en mql4:

IF( (A>B) AND (|X| <1) AND (Y<Z) ) entonces. ... ... ...

|X| es absoluta; significa (X 1)

Tengo un mensaje de MetaEditor

" LA EXPRESIÓN IF ES DEMASIADO COMPLEJA"

Después de muchos intentos,... No tengo más idea... Así que por favor dígame cómo...

Gracias

Intenta esto:

if((a>b && MathAbs(x)<1) && y<z)

{

//escribe aquí lo que debería pasar

}

 

Pregunta para el oráculo...

¿Hay alguna manera de hacer que su EA ejecute una optimización y ajuste automáticamente la configuración todos los días?

Me gustaría ejecutar una optimización del factor de ganancia de 30 días para 16 parámetros. y hacer que se aplique la configuración antes de que comience a operar de nuevo. Se apaga automáticamente todos los días durante unas 8 horas. esto sería un momento perfecto para ejecutarlo ...

alguien sabe como codificarlo... Lo llevaría del nivel de Gran EA al nivel de IA Insanley rentable...

Esto también podría ser un buen código para todo el mundo para utilizar en los mercados de allí EA ajustar constantemente por qué shouldent nuestros EA se vuelven más inteligentes.

También publiqué esto en el foro de EA, no sabía acerca de este hasta ahora ...

Gracias por su ayuda.

 

consejo por favor

¿Es posible crear indicadores de barra en ventanas separadas como el indicador en la imagen que he publicado [no sé cómo se llaman oficialmente] para, por ejemplo, una barra roja si el MACD cruza negativo y se mantiene rojo si en las zonas negativas y verde si cruza positivo, etc, etc. También es posible crear las mismas ventanas de indicador de barra para decir si el precio va por debajo de una media móvil.

si esto parece una pregunta tonta, por favor tenga paciencia conmigo. Cuando miro los indicadores en un gráfico tiendo a tratar de anticipar lo que el precio hará, así que estoy buscando tratar de tener indicadores de ventana separados que cuando todos muestran el mismo color voy a operar. [Razones psicológicas]. La creación de estos indicadores de tipo de barra separados es algo que podría aprender a crear, estoy lejos de un programador en cualquier idioma.

cualquier consejo sería muy apreciado.

dh

Archivos adjuntos:
chart.jpg  11 kb
 
pawang:
Hola

Lo siento mucho si mi pregunta es muy básica.

Estoy aprendiendo mql4.

Por favor, ayúdame a expresar estas condiciones matemáticas en mql4:

IF( (A>B) AND (|X| <1) AND (Y<Z) ) entonces. ... ... ...

|X| es absoluta; significa (X 1)

Tengo un mensaje de MetaEditor

" LA EXPRESIÓN IF ES DEMASIADO COMPLEJA"

Después de muchos intentos,... No tengo más idea... Así que por favor dígame cómo...

Gracias

if(a>b && (x 1) && y<z){

;tu código

}

o tal vez x == 0 en lugar de (x 1) porque sólo la forma MathAbs(x) < 1 es verdadera cuando x=0

http://docs.mql4.com/basis/operations/bool

por otro lado, tal vez simplemente necesites esto:

if(a>b && x<1 && y<z)

o esto

if(a>b && x<-1 && y<z)

ya que x nunca es 0 o -1 según tu definición

Estoy confundido con tu definición de valor absoluto

 
dxx:
¿Es posible crear indicadores de barra en ventanas separadas como el indicador de la foto que he puesto [no sé cómo se llaman oficialmente] para, por ejemplo, una barra roja si el MACD cruza en negativo y se mantiene en rojo si está en zonas negativas y en verde si cruza en positivo, etc.? También es posible crear las mismas ventanas de indicador de barra para decir si el precio va por debajo de una media móvil.

si esto parece una pregunta tonta por favor tenga paciencia conmigo. Cuando miro los indicadores en un gráfico tiendo a tratar de anticipar lo que el precio va a hacer así que estoy buscando para tratar de tener indicadores de ventana separada que cuando todos muestran el mismo color voy a operar. [Razones psicológicas]. La creación de estos indicadores de tipo de barra separados es algo que podría aprender a crear, estoy lejos de un programador en cualquier idioma.

Cualquier consejo sería muy apreciado.

dh

Sí, esto es posible.

 
dxx:
¿Es posible crear indicadores de barra en ventanas separadas como el indicador en la imagen que he publicado [no sé cómo se llaman oficialmente] para decir una barra roja si el MACD cruza negativo y se mantiene rojo si en zonas negativas y verde si cruza positivo, etc, etc. También es posible crear las mismas ventanas de indicador de barra para decir si el precio va por debajo de una media móvil.

si esto parece una pregunta tonta por favor tenga paciencia conmigo. Cuando miro los indicadores en un gráfico tiendo a tratar de anticipar lo que el precio va a hacer así que estoy buscando para tratar de tener indicadores de ventana separada que cuando todos muestran el mismo color voy a operar. [Razones psicológicas]. La creación de estos indicadores de tipo de barra separados es algo que podría aprender a crear, estoy lejos de un programador en cualquier idioma.

Cualquier consejo sería muy apreciado.

dh

Aquí tienes exactamente lo que quieres, carga los 4 del mismo indicador en un gráfico todos con diferentes configuraciones como se muestra a continuación, cuando todos los rojos venden, cuando todos los azules compran.

ajustes

establecer primero para 15 minutos

segundo 30 minutos

tercero 60 minutos

cuarto 140 minutos

Archivos adjuntos:
 

gracias

Chicos, gracias voy a explorar los indicadores publicados#

muy apreciado

 

¿Sería posible escribir algún tipo de indicador que trace gráficos de ticks constantes o barras de rango constante en otra ventana? Estas son formas diferentes de gráficos que no se basan en el tiempo. Por ejemplo, una barra de 100 ticks se forma cada vez que el precio se mueve 100 ticks. Por lo tanto, con poco volumen, no se forma ninguna barra. Una barra de rango constante se forma cada vez que el precio se mueve un número determinado de ticks en un rango. Por ejemplo, una barra de rango establecida en 20 se forma cada vez que el precio llena un rango de 20 pips. Entonces se inicia la siguiente barra. Dado que no se basa en el tiempo, no estoy seguro de que sea posible en esta plataforma.

 

añadir una alerta simple a la EA

Hola, espero encontrar aquí la pequeña ayuda que necesito, ¿podéis mostrarme cómo añadir una alerta a este EA por ejemplo? sólo cuando se cumplan las condiciones para la compra, también me avisa.

Gracias,

Leo

extern int NúmeroMágico = 0;

extern bool SignalMail = False;

extern bool EachTickMode = False;

extern double Lots = 1.0

extern int Slippage = 3;

extern bool StopLossMode = True

extern int StopLoss = 30;

extern bool TakeProfitMode = True

extern int TakeProfit = 60

extern bool TrailingStopMode = True

extern int TrailingStop = 30;

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SEÑAL_VENTA 2

#define SEÑAL_CLOSEBUY 3

#define SEÑAL_CLOSESELL 4

int BarCount;

int Actual;

bool TickCheck = False;

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

//| función de inicialización de los expertos ||.

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

int init() {

BarCount = Bars;

si (EachTickMode) Current = 0; si no, Current = 1;

return(0);

}

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

//| función de desinicialización experta ||.

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

int deinit() {

return(0);

}

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

//| función de inicio experta |

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

int inicio() {

int Orden = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Orden = SIGNAL_NONE;

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

//| Comienzo de la variable |++

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

double Buy1_1 = iMA(NULL, 0, 89, 0, MODE_SMA, PRICE_CLOSE, Current + 0);

double Buy1_2 = iClose(NULL, 0, Current + 0);

double Buy2_1 = iMA(NULL, 0, 445, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy2_2 = iClose(NULL, 0, Current + 0);

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

//| Fin de la variable

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

//Comprobar posición

bool IsTrade = False;

for (int i = 0; i < Total; i ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {

IsTrade = True;

if(OrderType() == OP_BUY) {

//Cerrar

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

//| Señal Inicio(Salida Compra) || /Cerrar

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

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

//| Señal de Fin(Salir de la Compra) |||

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

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;

continuar;

}

//Trailing stop

if(TrailingStopMode && 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;

continuar;

}

}

}

} else {

//Cerrar

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

//| Señal de inicio (salida de la venta)

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

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

//| Señal Fin(Salir de la venta) ||||++ //++

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

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;

continuar;

}

/Trailing stop

if(TrailingStopMode && 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;

continuar;

}

}

}

}

}

}

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

//| Señal Begin(Entry) |

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

if (Buy1_1 < Buy1_2 && Buy2_1 < Buy2_2) Order = SIGNAL_BUY;

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

//| Señal de finalización |

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

//Compra

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

if(!IsTrade) {

//Comprobar el margen libre

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

Print("No tenemos dinero. Margen libre = ", AccountFreeMargin());

return(0);

}

si (StopLossMode) StopLossLevel = Ask - StopLoss * Point; si no StopLossLevel = 0.0;

si (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; si no, 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("Orden de COMPRA abierta : ", OrderOpenPrice());

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

} else {

Print("Error al abrir la orden de COMPRA : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

/Vender

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

if(!IsTrade) {

//Comprobar el margen libre

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

Print("No tenemos dinero. Margen libre = ", AccountFreeMargin());

return(0);

}

si (StopLossMode) StopLossLevel = Oferta + StopLoss * Punto; si no, StopLossLevel = 0,0;

si (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; si no, 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("Orden de venta abierta : ", OrderOpenPrice());

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

} else {

Print("Error al abrir una orden de VENTA : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

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

 

Gracias y otras preguntas

Gracias por responder a mi pregunta.

newdigital, Kalenzo,asmdev

Y gracias a todos

Es mi siguiente pregunta.

1.) Como comparar un valor de algo que pasa y sucedió

por ejemplo, si "n" es ahora, la variable del tiempo, n-a = "a" tiempo antes de ahora.

como comparar el valor de RSI cuando sucedía en (n-a) y RSIn(ahora).

o como comparar MA50 para tres barras antes de ahora y la última barra?

2.) Según el punto 1.) el caso real es... ¿cómo crear una divergencia alcista/bajista?

Cuando las condiciones: Hay un precio más alto y un RSI más alto del marco de tiempo definido. Y luego, después de que el tiempo corre... nos encontramos con un nuevo precio más alto, pero no seguido por un nuevo máximo de RSI (RSI no hacer un nuevo máximo).

Todos sabemos que esta situación es una señal de venta de alta realibilidad, y la señal de compra es la inversa, así que quiero que mi EA lo sepa.

Gracias de nuevo.