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

Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
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)
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?
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).
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).
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;
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í.
}
}
}
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í.
}
}
}
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?
¿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
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.