¡Pide! - página 148

 

Puede alguien ayudarme a entender mejor cómo modificar el código para permitir que el EA ejecute órdenes simultáneas en varias instancias (en otras palabras, estoy probando el mismo EA, en varios pares a la vez, y estoy usando diferentes números mágicos para cada instancia).

El código original incluye esto

int total=OrdersTotal();

if(total<1)

Y creo que aquí es donde está el problema. Si aumento el número, simplemente se ejecutan varias órdenes en la misma barra (M15) para el mismo par. Si se deja if(total<1), entonces no permite ejecutar órdenes simultáneas en diferentes pares.

¿Puedo cambiar algo del tick o de la barra para permitir sólo una orden a la vez por par, pero varias órdenes para todos los pares que tenga el EA (con diferente número mágico)?

Gracias a quien pueda ayudar o aportar algo.

Chili

 

Confundido en múltiples sentencias if

/////////////////////EMPEZAR A NEGOCIAR EL DOMINGO/////////////////////////

StartDay=7; StartHour=1; StartMinute=55;

{

if(TimeDayOfWeek(TimeCurrent())==StartDay)

{

if(TimeHour(TimeCurrent())==StartHour)

{

if(HoraMinuto(TimeCurrent())==InicioMinuto)

{

}

}

}

}

Estoy tratando de conseguir que mi EA se active cuando el día siete roles alrededor (Día 7), y la hora 1 roles alrededor, y 55 minutos roles alrededor. ¿Qué estoy haciendo mal? Hoy he puesto en marcha el ordenador y el EA ha empezado a operar enseguida (antes de la hora 1). Por favor, ayuda.

¡Gracias!

Dave

 
JForex78:
Hola,

Quiero saber cómo puedo trazar un cruce de MA de marco de tiempo inferior en un gráfico de marco de tiempo superior.

Por ejemplo, quiero trazar una flecha en el gráfico H1 cuando la MA5 y la MA10 de M15 se cruzan.

Por favor, hágamelo saber.

Gracias,

JForex.

Una MA en cualquier gráfico es sólo una versión superior/inferior de una MA en un marco de tiempo superior/inferior. Por ejemplo, si pones una MA de 60 en un gráfico de 5 minutos, pero quieres ver cómo se ve en un gráfico de una hora, sólo tienes que multiplicar 60 por 12 (intervalos de 5 minutos en una hora). Así que una MA de 720 en un gráfico de una hora es lo mismo que una MA de 60 en un gráfico de 5 minutos.

¿Tiene sentido?

Lux

 
1Dave7:
/////////////////////COMIENZA A OPERAR EN DOMINGO/////////////////////////

StartDay=7; StartHour=1; StartMinute=55;

{

if(TimeDayOfWeek(TimeCurrent())==StartDay)

{

if(HoraHora(TimeCurrent())==HoraInicial)

{

if(HoraMinuto(TimeCurrent())==InicioMinuto)

{

}

}

}

}

Estoy tratando de conseguir que mi EA se active cuando el día siete roles alrededor (Día 7), y la hora 1 roles alrededor, y 55 minutos roles alrededor. ¿Qué estoy haciendo mal? Hoy he puesto en marcha el ordenador y el EA ha empezado a operar enseguida (antes de la hora 1). Por favor, ayuda.

Gracias.

Dave

Mire de nuevo el archivo de ayuda.

Devuelve el día de la semana actual basado en cero (0-Domingo,1,2,3,4,5,6) de la última hora conocida del servidor.

Lux

 
Chilibowl:
Puede alguien ayudarme a entender mejor cómo modificar el código para permitir que el EA ejecute órdenes simultáneas en varias instancias (en otras palabras, estoy probando el mismo EA, en varios pares a la vez, y estoy usando diferentes números mágicos para cada instancia).

El código original incluye esto

int total=Total de pedidos();

if(total<1)

Y creo que aquí es donde está el problema. Si aumento el número, simplemente ejecuta varias órdenes en la misma barra (M15) para el mismo par. Si se deja if(total<1), entonces no permite ejecutar órdenes simultáneas en diferentes pares.

¿Puedo cambiar algo del tick o de la barra para permitir sólo una orden a la vez por par, pero varias órdenes para todos los pares que tenga el EA (con diferente número mágico)?

Gracias a cualquiera que pueda ayudar u ofrecer su opinión.

Chili

OrdersTotal es una función incorporada que no considera el número mágico. Necesitas escribir tu propia función que utilice OrdersTotal pero que filtre por número mágico y probablemente también por símbolo. Hay muchos ejemplos aquí y en otros lugares.

Buena suerte.

Lux

 
luxinterior:
Mira de nuevo el archivo de ayuda. Lux

Cambié el StartDay a 0, y cambié el StartHour a la hora GMT actual de mi broker, y cambié el StartMinute a 5 minutos por delante de los minutos GMT - Todavía funciona bien cuando la hora GMT coincide con mi hora de inicio. He mirado los archivos de ayuda y no muestran una declaración if múltiple. La sentencia if múltiple siempre me confunde. ¿Qué diablos estoy haciendo mal? Quiero que el programa no opere hasta la hora de inicio apropiada del domingo, y que haga un comentario de "Hora de no operar" hasta que la hora sea igual a la hora de inicio del domingo.

¡¡Muy confundido!!

?????

 
luxinterior:
OrdersTotal es una función incorporada que no considera el número mágico. Necesitas escribir tu propia función que utilice OrdersTotal pero que filtre por número mágico y probablemente también por símbolo. Hay muchos ejemplos aquí y en otros lugares.

Buena suerte.

Lux

Aquí hay uno que hice y he usado bastante:

int OTBM(int intMagic)//OrdersTotalByMagic

{

int intCount=0;

int intPOS=0;

bool boolTerm=false;

while(boolTerm==false)

{

if(OrderSelect(intPOS,SELECT_BY_POS))

{

if(OrderMagicNumber()==intMagic) intCount++;

intPOS++;

}

else

boolTerm=true;

}

return(intCount);

}

[/PHP]

And if you want to close only a certain order by magic number:

int CBM(int intMagic)//CloseByMagic

{

int intOffset=0;

int Count = OTBM(intMagic);

while(OTBM(intMagic)>0 && Count > 0)

{

OrderSelect(intOffset,SELECT_BY_POS);

if(OrderMagicNumber()==intMagic)

{

if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),999,Red);

else if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),999,Orange);

Count--;

}

else {

intOffset++;

}

}

return(0);

}

Order Profit By Magic:

[PHP]double OPBM(int intMagic)//OrderProfitByMagic

{

double dblProfit=0;

int intPOS=0;

bool boolTerm=false;

while(boolTerm==false)

{

if(OrderSelect(intPOS,SELECT_BY_POS))

{

if(OrderMagicNumber()==intMagic) dblProfit=dblProfit+OrderProfit();

intPOS++;

}

else

boolTerm=true;

}

return(dblProfit);

}

Espero que ayude.

 
luxinterior:
Una MA en cualquier gráfico es sólo una versión superior/inferior de una MA en un marco de tiempo superior/inferior. Por ejemplo, si pones una MA de 60 en un gráfico de 5 minutos pero quieres ver cómo se ve en un gráfico de una hora, simplemente multiplicarías 60 por 12 (intervalos de 5 minutos en una hora). Así que una MA de 720 en un gráfico de una hora es lo mismo que una MA de 60 en un gráfico de 5 minutos.

¿Tiene sentido?

Lux

Totalmente tiene sentido. ¿Cómo vas a ver una M5 10MA en un gráfico H1?

10/12=0.84. ¿Puedes poner una MA de 0,84 en un gráfico H1? No.

Sin embargo, funciona al revés: H1 10MA = M5 120MA.

Así que mi pregunta es, ¿cómo puedo ver un cruce de 5MA en un Timeframe más alto como H4.

Gracias.

 
 

Bucle for en MQL4

Mientras leía el curso MQL4 de Coders' Guru me encontré con esta parte sobre el bucle 'for' en la lección 5 que estoy confundido. Dice que sólo puede haber una expresión de prueba. Pero los ejemplos mostrados contienen 2 expresiones de prueba.

int i;

int j;

for(i=0,j=0;i<15,i<;i++,j++)

Print(i);

int i;

for(i=15;i>0,i<;i--)

Print(i);

¿Alguien podría aclararlo?

Gracias.

Razón de la queja: