¿Cómo codificar? - página 46

 
antone:
Por ejemplo, sólo negociará una orden entre las 5 y las 10 de la mañana, pero puede negociar de nuevo en otro momento.

Es muy simple, necesitas comprobar la hora de apertura de la última orden en el historial y luego comprobar el día con la función TimeDay. Si es hoy, no se puede negociar.

 
Kalenzo:
Es muy simple, necesita comprobar la hora de apertura de la última orden en el historial y luego comprobar el día con la función TimeDay. Si es hoy, entonces no se puede negociar.

¿podríais darme un script sencillo sobre cómo utilizarlos? no soy programador, lo siento

Gracias.

 

1 trailing stop / múltiples órdenes

Estoy tratando de hacer un EA que modifique todas las órdenes abiertas para igualar el stoploss actual, de modo que todas las órdenes se cierren al mismo nivel

extern int profit = 100;

extern int stop = 20;

int start()

{

int i, HstTotal=OrdersHistoryTotal();

for(i = HstTotal-1; i >= 0; i --)

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;

OrderModify(i,OrderOpenPrice(),Bid-Point*stop,profit,0,Green);

}

}

 

Utilice OrdersTotal() y MODE_TRADES en su lugar

 
 
Kalenzo:
Es muy simple, necesita comprobar la hora de apertura de la última orden en el historial y luego comprobar el día con la función TimeDay. Si es hoy, entonces no comercia.

for(int k=0;k<OrdersTotal();k++)

{

OrderSelect(k,SELECT_BY_POS,MODE_TRADES;

if(OrderSymbol()== "GBPUSD" && OrderMagicNumber()== Magic_Number)

{

if(OrderOpenTime() != TimeCurrent ()) {Trade = true;}

if(OrderOpenTime() == TimeCurrent ()) {Trade = false;}

}

}

¿Qué he hecho mal?

 

Correcciones en rojo a continuación.

Robert

antone:

for(int k=0;k<TotalOrdenes();k++)

{

OrderSelect(k,SELECT_BY_POS,MODE_TRADES)

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

{

if(Time Day(OrderOpenTime())!= Day()) {Trade = true;}

if(Time Day(OrderOpenTime()) == Day ( ) ) {Trade = false;}

}

}

El mismo tipo de código se puede utilizar para comprobar si la hora de apertura está entre dos horas o incluso horas al minuto como las 11:45 para evitar una nueva operación.

int openHour = TimeHour(OrderOpenTime());

if (openHour > 10 && openHour < 13) Trade = false;

si (openHour = 13) Trade = true;

¿Qué he hecho mal?
 

ATTN Programadores - Problema con los nuevos precios de 6 dígitos

A todos los programadores.

Me he dado cuenta de que hay un problema con algunos corredores que utilizan un lugar decimal adicional para los precios. Esto causará un problema en cualquier punto que se utilice en un cálculo para cosas como StopLoss, TakeProfit o niveles de ruptura.

Hay una solución simple.

Ahora utilizo la siguiente función y reemplazo toda referencia a Point con myPoint.

Declaro una variable en la parte superior del EA.

doble myPoint;

luego en init uso la función para establecer el valor.

init()

{

myPoint = SetPoint();

}

Luego la función.

// Establece el valor del punto con 2 o 4 decimales

// para manejar los corredores que utilizan 3 y 5 decimales

doble SetPoint()

{

doble mPoint;

si (Dígitos < 4)

mPoint = 0.01

si no

mPoint = 0.0001;

return(mPoint);

}

También habría un problema con algunos indicadores que utilizan Point para determinar dónde dibujar las líneas o el tamaño de los histogramas.

Por favor, pasen esto a cualquier foro o grupo donde los programadores necesiten esta información.

Ya he publicado en el grupo de Yahoo MTE & I.

Espero que esto ayude.

Robert

 

Gidday

Estoy buscando un poco de ayuda que parece que no puede trabajar en la forma de salir de una posición en un número certian de bares / días. por ejemplo, voy a largo el lunes y el sistema sale en el cierre de 5 bares / días más tarde.

Cualquier ayuda sería buena

Saludos

Beno

 

Beno,

Usted podría utilizar un código similar al post anterior para no negociar. Sólo comprueba si el día actual es el número de días más tarde para el cierre desde el día de apertura. El código podría ser modificado para usar horas o minutos también.

Otra forma sería calcular el tiempo para cerrar la operación como exit_time cuando la operación está abierta. Luego, para salir, sólo tiene que comprobar el exit_time en su código de comprobación de salida.

Tendría que utilizar la fórmula adecuada para añadir el valor correcto al tiempo de apertura para obtener el tiempo de cierre. Esto utilizaría el número de minutos por barra * el número de barras posteriores al cierre sumado a la OrderOpenTime().

Espero que esto ayude.

Robert

Beno:
Gidday

Estoy buscando algo de ayuda, parece que no puedo encontrar la manera de salir de una posición en un número determinado de barras/días, por ejemplo, voy en largo el lunes y el sistema sale en el cierre 5 barras/días más tarde.

Cualquier ayuda sería buena

Saludos

Beno