¿Cómo codificar? - página 201

 

¿Cómo mejorar estos resultados?

Hola,

Estoy escribiendo mi primer EA que muestra parcialmente buenos números en las pruebas de espalda. Sin embargo, no puedo averiguar cómo mejorar las partes malas.

En primer lugar, tiene un alto porcentaje de victorias del 86%, sin embargo, sólo un pequeño factor de beneficio porque las operaciones perdedoras pierden mucho más de lo que ganan las ganadoras.

Tengo un MM en el lugar que no utiliza más del 5% del saldo de la cuenta por el comercio y en todo el comercio activo no más del 11% del saldo de la cuenta se puede utilizar. También sigo todas las pérdidas de la parada.

Parece que estoy cerrando (OrderClose) las operaciones ganadoras demasiado pronto y cortar las operaciones perdedoras demasiado tarde (o S/L ellos).

¿Cuál es una buena estrategia para esto? He implementado algo como "no cerrar las operaciones ganadoras incluso si hay una señal de cierre de compra", pero eso tampoco ha funcionado mejor.

Agradecería cualquier consejo. El informe completo se puede encontrar aquí.

 

¿la forma más fácil de añadir un TP de 3 pips para cada operación manual?

necesito añadir un take profit de 3 pip en el forex para cada operación introducida manualmente. ¿cuál es la forma más fácil de hacerlo? no tengo conocimientos de programación y no puedo encontrar ningún valor por defecto para establecer en las opciones de metatrader 4.

 

Restablecimiento de la orden de stop de compra

Hola,

He escrito este código y aunque se compila no funciona. (Es decir, no borra el buystop)

He pensado que podría haber algo mal en la sentencia "for" pero soy bastante nuevo así que no estoy seguro.

Si alguien pudiera indicarme el problema, se lo agradecería mucho.

Gracias

if( StopResetMinutes > 0)

{

total = OrdersTotal();

if(total>0)

for(i=0;i<total;i++)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderSymbol()==Symbol())

{

if((TimeCurrent() - OrderOpenTime()) /60 > StopResetMinutes ) OrderDelete(OrderTicket());

{

if(PrintComments) Print("Buy Stop Deleted.");

}

}

}

}

 
asgard2:
Hola,

He escrito este código y aunque se compila no funciona. (Es decir, no borra el buystop)

Estoy pensando que puede haber algo mal en la sentencia "for" pero soy bastante nuevo así que no estoy seguro.

Si alguien pudiera indicarme el problema, se lo agradecería mucho.

gracias

if( StopResetMinutes > 0)

{

total = OrdersTotal();

if(total>0)

for(i=0;i<total;i++)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderSymbol()==Symbol())

{

if((TimeCurrent() - OrderOpenTime()) /60 > StopResetMinutes ) OrderDelete(OrderTicket());

{

if(PrintComments) Print("Buy Stop Deleted.");

}

}

}

}

[/code]

[CODE] if( StopResetMinutes > 0)

{

total = OrdersTotal();

if(total>0)

for(i=0;i<total;i++)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol())

{

if((TimeCurrent() - OrderOpenTime()) /60 > StopResetMinutes )

{

OrderDelete(OrderTicket());

if(PrintComments) Print("Buy Stop Deleted.");

}

}

}

}
 
asgard2:
Hola,

He escrito este código y aunque compila no funciona. (Es decir, no elimina el buystop)

Si quieres cerrar órdenes de COMPRA o VENTA, tienes que usar la función OrderClose().

 
okfar:

if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol())

{

if((TimeCurrent() - OrderOpenTime()) /60 > StopResetMinutes )

{

OrderDelete(OrderTicket());

if(PrintComments) Print("Buy Stop Deleted.");

}

}

}

}

Sabes, he estado trabajando en esto durante dos días y lo has resuelto en unos segundos..

Gracias, gracias, gracias... Gracias y gracias...

¡Espero sonar agradecido porque estoy emocionado!

saludos

 

Estimados todos,

Tengo una pregunta simple, creo.

Tengo un indicador que me notifica con un pop-up (alerta) y quería añadir un sonido personalizado (distinto del alert.wav estándar).

Me he dado cuenta de que una vez que se produce el evento y aparece la alerta, no importa el sonido "personalizado" que haya programado en el indicador, Metatrader 4 reproducirá SIEMPRE el sonido que tengo asignado para la alerta (por defecto es alert.wav, ver el menú de MT4 Herramientas>Opciones>Eventos).

¿Es posible programar el indicador de tal manera que obtenga tanto una alerta visual como una alerta sonora asignada de forma personalizada?

Muchas gracias de antemano...

 

En realidad, puedes tomar cualquier sonido y llamarlo alert.wav y reemplazar el archivo original.

 

Modificación de la alerta personalizada

Snowski:
Estimados todos,

Tengo una pregunta simple, creo.

Tengo un indicador que me notifica con un pop-up (alerta) y quería añadir un sonido personalizado (distinto del alert.wav estándar).

Me he dado cuenta de que una vez que se produce el evento y aparece la alerta, no importa el sonido "personalizado" que haya programado en el indicador, Metatrader 4 reproducirá SIEMPRE el sonido que tengo asignado para la alerta (por defecto es alert.wav, ver el menú de MT4 Herramientas>Opciones>Eventos).

¿Es posible programar el indicador de tal manera que obtenga tanto una alerta visual como una alerta sonora asignada de forma personalizada?

Muchas gracias de antemano...

Hola Snowski,

Prueba............

if (alert_ON == true) // para activar o desactivar la alerta sonora

{

Alert ("Introduzca su PopUp personalizado aquí",Symbol(),"-",TimeFrame);

PlaySound("custom.wav");

}

Yo no soy tan bueno en la codificación, pero usted puede tratar de esto, ya que debe trabajar. la costumbre .wav, puede introducir su propio nombre de archivo en el ("??????.wav")

si usted quiere ser capaz de establecer la alerta de encendido y apagado, es necesario añadir también

extern bool alert_ON = True; // o false al principio del código de su indicador

 

Función del historial

Hola,

Tengo el siguiente código. Estoy tratando de implementar un retraso entre mis órdenes buystop en el caso de que fueran eliminadas. Nunca he utilizado la función historia antes.

No puedo compilarlo debido a un error de paréntesis desequilibrado, ¿alguien puede decirme por qué están desequilibrados?

Además, ¿alguien puede decirme si estoy en el camino correcto o si debería buscar otra forma de hacer esto?

if ((type == _OP_BUYSTOP) && (MayOpenDeferOrder && NextBuyStop_Order_Minutes !=0))//Time Delay for the next Buy Stop Order

int hstTotal=OrdersHistoryTotal();

for(i=0;i<hstTotal;i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)

Print("Access to history failed (",GetLastError(),")"); break;

{

if (OrderDelete() && (((TimeCurrent() - OrderCloseTime())/60) =< NextBuyStop_Order_Minutes) MayOpenDeferOrder = false;

}

}

Gracias

Razón de la queja: