[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 279

 
snail09:
Tira el algoritmo, en palabras, porque es un poco confuso...

Aproximadamente como sigue:

//determinar el número total de días de negociación.

OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);

Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1);

entonces, para el período dado, calcular el beneficio/días = %/día

Necesito calcular los días de fin de semana para todo este período y excluirlos del cálculo:

beneficio/(días libres)

 

forexnew:

Aproximadamente como sigue:

//determinar el número total de días de negociación.

OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);

Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1);

entonces, para el período dado, calcular el beneficio/días = %/día

Necesito calcular los días de fin de semana para todo este período y excluirlos del cálculo:

beneficio/(días libres)



Comprueba que tienes el historial necesario para el periodo y calcula tu "beneficio/día". Simplemente no utilices el calendario (las constantes en tu fórmula) y ya está. En el historial sólo entran los días hábiles (también hay días festivos). Átate a las barras del día, por ejemplo.

Si desea utilizar específicamente un calendario (gregoriano o juliano, por ejemplo). ¿Cuál es el truco, hay un nuevo bar, hay una nueva canción?

 
forexnew:

Aproximadamente como sigue:

//determinar el número total de días de negociación.

OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);

Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1);

entonces, para el período dado, calcular el beneficio/días = %/día

Necesito calcular los días de fin de semana para todo este período y excluirlos del cálculo:

beneficio/(días libres)



Puede calcular el número de barras diarias desde la fecha de inicio de la prueba.

Puede contar el número de barras diarias con más de 20 horas (para excluir los días de descanso). Puede seguir un nuevo día como si apareciera una nueva barra, y así sucesivamente (como leer todo el historial de operaciones y calcular fechas únicas).

 
splxgf:

Puede contar el número de barras diarias desde la fecha de inicio de la prueba.

Puede contar el número de barras diarias con más de 20 horas (para excluir los fines de semana incompletos) . Puede seguir un nuevo día cuando aparece una nueva barra, y así sucesivamente (como leer todo el historial de operaciones y contar fechas únicas).

En cualquier caso"(3600*24) + 1)" no es una construcción adecuada, debemos partir del número de barras.
 
snail09:

Comprueba que tienes el historial necesario para el periodo y cuenta tus "beneficios/días". Simplemente no uses las de calendario (constantes en tu fórmula) y ya está. En el historial sólo se incluyen los días hábiles (también hay días festivos). Átate a las barras del día, por ejemplo.

Si desea utilizar específicamente un calendario (gregoriano o juliano, por ejemplo). ¿Cuál es el truco, hay un nuevo bar, hay una nueva canción?

Yo lo he hecho así:

OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);
Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24));
for(i=0; i<Days; i++)
{
if(TimeDayOfWeek(CurTime()-i*24*3600)==6 || TimeDayOfWeek(CurTime()-i*24*3600)==7) Days3++;
}
Días-=Días3;

 
forexnew:

Hice esto:

OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);
Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24));
for(i=0; i<Days; i++)
{
if(TimeDayOfWeek(CurTime()-i*24*3600)==6 || TimeDayOfWeek(CurTime()-i*24*3600)==7) Days3++;
}
Días-=Días3;

no, con este orderelect se seleccionan los pedidos en el historial (UNA vez), y luego va sólo uno (el último). ¿No hay nada confuso?

Haga una búsqueda de pedidos en el bucle y aplique sus condiciones a cada pedido.

// Buscar todos los pedidos en el bucle

for(int i=0;i<=TotalPedidos();i++)

{

if(OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))

{

// Si el símbolo y el número mágico coinciden, la orden es nuestra

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

{

// Compruebe aquí.

}

}

}

 
snail09:

No, con este orderelect seleccionas los pedidos en el historial (UNA vez), y luego vas sólo a uno (el último). ¿No hay nada confuso?

Recorra los pedidos en el bucle y aplique sus propias condiciones a cada uno de ellos.

// Buscar todos los pedidos en el bucle

for(int i=0;i<=TotalPedidos();i++)

{

if(OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))

{

// Si el símbolo y el número mágico coinciden, la orden es nuestra

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

{

// Compruebe aquí.

}

}

}

¿Por qué necesito órdenes de detención? Sólo necesito identificar los días puntuales de la semana que no se negocian, es decir, los sábados y domingos que se restan del número total de días.
 

Bueno, por supuesto que me equivoqué:

TimeDayOfWeek(CurTime()-i*24*3600)==7

en lugar de 7 debería ser 0.

Comprobado, en las cuentas que tienen más de una semana de antigüedad. Parece que se muestra correctamente.

 

¿Cómo se calcula el iMA?


avatar
90
Eugene1 20.10.2011 16:34

¿Hay algún lugar donde pueda encontrar cómo se calcula la función iMA (o se clasifica)?

Especialmente estoy interesado en MODE_LWMA.

Quiero mirar y retocar a mi gusto, pero algo que las fuentes de google no consiguieron

 
forexnew:

Bueno, por supuesto que me equivoqué:

TimeDayOfWeek(CurTime()-i*24*3600)==7

en lugar de 7 debería ser 0.

Comprobado, en las cuentas que tienen más de una semana de antigüedad. Parece que se muestra correctamente.

Pues no lo hagas, así que no lo hagas. Si su experto no tiene el control de sus órdenes, entonces, ¿qué está haciendo de todos modos? ... ¿Comerciando con un probador?