¿Cómo codificar? - página 41

 

Más EA's

Sólo se pueden subir 5 EAs a la vez.

Archivos adjuntos:
kehedge.mq4  12 kb
 

Cómo escribir "Si la última operación fue ganadora"

En un EA cómo escribir "Si la última operación fue ganadora" (para este par) entonces ...

Gracias por la ayuda.

Jo

 

sobre MarketInfo()

¡hola a todos!

//

double A = MarketInfo("EURUSD",MODE_BID);

doube B = MarketInfo("USDJPY",MODE_BID);

double C = MarketInfo("EURJPY",MODE_BID);

init()

{

A = MarketInfo("EURUSD",MODE_BID);

B = MarketInfo("USDJPY",MODE_BID);

C = MarketInfo("EURJPY",MODE_BID);

}

int inicio()

{

...

}

//

¿por qué estos códigos no funcionan? cuando se cumple, que viene a tantos errores:

'MarketInfo' - inicialización esperada

'A' - variable no definida ...

.....y así sucesivamente

 

Esto me ha funcionado

Jovager:
En un EA cómo escribir "Si la última operación fue ganadora" (para este par) entonces ...

Gracias por la ayuda.

Jo

double LotsOptimised()

{

double lotes = InitialLots;//por defecto lotes 0.1 - no habrá ningún error si los lotes no son establecidos por la otra parte del código

// int total = OrdersHistoryTotal();

for(int i=0;i<OrdersHistoryTotal();i++) // escanear todas las transacciones cerradas / canceladas

{

OrderSelect(i, SELECT_BY_POS, MODE_HISTORY );

if(OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber)

{

if(OrderProfit()<0)

{

lotes = NormalizeDouble(OrderLots() * LotsFactor,2);

}

si no

{

lotes=LotesIniciales;

}

}

}

return(lotes);

}

Usé esto para comprobar si la última operación cerrada fue ganadora o no. Si no lo fue, hice un martingala de los lotes. Espero que sea de ayuda.

 
Sendra:
Hola a todos

Intenté crear un EA y me salió el siguiente mensaje de error

'\ fin_del_programa' - paréntesis final '}' esperado C:\...\Mi_primer_EA.mq4(96,1)

He hecho doble clic, he llegado a la línea, luego la he comprobado con los corchetes de finalización de apertura anteriores, y todavía no sé dónde me he equivocado.

Este es el segundo EA que pruebo, con el mismo mensaje de error, basado en el mismo indicador.

Gracias.

Sendra, envía el programa a mi dirección de correo electrónico como archivo adjunto y lo miraré e intentaré solucionarlo. Normalmente el problema es que falta un paréntesis después de una sentencia. Desgraciadamente, este es un lenguaje de bajo nivel y, al ser un lenguaje básico, no puede decirte exactamente dónde está el error muchas veces, por lo que se queda por defecto con el error que te está mostrando. Sólo la experiencia en codificación ayudará a solucionar este tipo de errores.

Dave

<<<

ddiebold7@aol.com

 
 

Ralph, AYUDA con la lógica del cierre diario

Hola Ralph.

Tal vez, si no te importa un poco de orientación. ¡¡Esto ha sido un poco de un desafío para mí para averiguar!! Quiero definir algunas condiciones para que el EA mire para determinar si debe o no cerrar una operación abierta. Vamos a utilizar una orden de compra como ejemplo (sé que la orden de venta sería la lógica opuesta). Así, tengo una orden de compra abierta un lunes. Quiero que el EA mire el cierre diario durante los siguientes X días. Si el cierre diario en cada uno de los siguientes X días (digamos 5 días por ejemplo) es menor que el precio de apertura de la orden, entonces quiero que el EA ejecute un OrderClose para cerrar la operación. También estaba pensando que otra parte posible de esta condición que podría querer que el EA mirara es si el cierre diario durante cada uno de los próximos X días fue menor que el cierre de los días anteriores. También, mi EA se ejecuta en el marco de tiempo de una hora.

Espero haber explicado lo que quiero lograr con suficiente claridad para que lo entiendan.

Gracias de antemano por su ayuda.

 

Ayuda con la codificación, por favor

No estoy pidiendo la codificación de un EA, sólo un poco de ayuda con un problema.

Lo que me gustaría codificar es lo siguiente, si tengo una orden larga abierta quiero poder llamar al precio de cotización más alto que la orden ha visto desde que esa orden larga específica se abrió. Obviamente, cuando la orden se abre por primera vez, el precio abierto sería devuelto. Si la orden aumenta en 20 pips, se devolvería el precio de OrderOpenPrice() + 20 pips. Si el precio luego disminuye en 10 pips, el precio OrderOpenPrice() + 20 seguiría siendo el valor devuelto. Sé que esto se puede hacer dentro de una barra específica utilizando OrderOpenPrice() + High[0], pero cuando se forma una nueva barra, High[0] se convierte en High[1]. También utilizaré la misma lógica a la inversa para devolver el valor más bajo que ha visto una orden corta específica. Cuando la orden se cierre, los valores devueltos se pondrán a cero.

Estoy teniendo problemas para resolver esto, ¿alguien puede ayudar?

Gracias.

 

Guarda el valor de cotización más alto de la barra actual en una variable. Cada vez que obtenga otra cotización, compárela con el valor de la variable. Si el nuevo valor es más alto, guárdelo en la variable. Si el nuevo valor es menor, mantenga la variable igual.

if(variable < nueva cotización)

variable = nueva cotización;

Espero que te sirva de ayuda.

 
jimven:
Guarde el valor de cotización más alto de la barra actual en una variable. Cada vez que obtenga otra cotización, compárela con el valor de la variable. Si el nuevo valor es más alto, guárdelo en la variable. Si el nuevo valor es menor, mantenga la variable igual.

if(variable < newquote)

variable = newquote;

Espero que te sirva de ayuda.

Gracias por la ayuda, pero tengo una pregunta. ¿Qué pasa cuando la barra actual ya no es la barra en la que se abrió la orden? ¿Qué pasa si la orden se abrió en la barra de hace 5 barras? Ahora quiero el valor de cotización más alto de 5 barras, el precio de cotización más alto desde que se abrió la orden. ¿Seguirá funcionando?

Gracias

Razón de la queja: