¿Quién quiere una estrategia? Lotes y de forma gratuita) - página 52

 
Miroslav_Popov писал(а) >>

Generador reparado. Sustituye tu exe por esto.


El generador establece a veces Indicador Período + Shift > Recuento de barras;

Ya estoy confundido. :)

Nueva versión.

Pero al reducir el número de barras a 300, el generador funciona y puede detenerse con el botón Stop

'

Versión antigua (descargada rápidamente del sitio)

Pero, si la cantidad de barras < 1000, entonces el generador se cuelga.

'

En mi opinión, es mejor acostumbrarse al requisito del límite de 1000 bares para el probador, pero la comodidad de seleccionar el intervalo.

'

 
SergNF писал(а) >>

Ya estoy confundido. :)

'

Versión antigua (descargada rápidamente del sitio web)

Pero, si el número de barras < 1000, el generador se cuelga.

'

Los pensamientos felices sobre la "versión antigua" resultaron ser falsos.

Es decir, la imagen es la misma que con la nueva versión. (Es decir, el número de barras tiene mayor prioridad que la fecha DO!!!!)

'

'

Oops

if ( bUseStartDate && aBar[ iTempStartBar].Time < dtStartingDate)
{   // We need to cut out the oldest bars
 for (int iBar = iTempStartBar; iBar < iTempBars - MINIMUMBARS; iBar++)
 {

¿Es correcto que el bucle vaya hasta iTempBars - MINIMUMBARS, es decir, hasta el número máximo de barras iTempBars = iMaxBars; desde el principio del historial?

¡En mis archivos de historia mucho más de 50 000 líneas y en este intervalo de iTempStartBar = iBars - iMaxBars a iMaxBars- MINIMUMBARS simplemente no se puede ordenar la fecha?!

Lógicamente, la fecha de finalización y la fecha de inicio deberían buscarse hasta el final de toda la historia, es decir, hasta iBars ???

Pero la barra final se encuentra correctamente.

int  iTempEndBar   = iBars - 1;
for (int iBar = iTempStartBar + MINIMUMBARS; iBar < iTempEndBar; iBar++
 
SergNF >> :

Sobre las capturas de pantalla:

1. "Eliminar los datos anteriores al 1 de septiembre de 2008" se ignora, ya que hay menos de 300 barras hasta el 1 de enero de 2009

2. "Eliminar los datos más recientes que el 1 de enero de 2009" - parece que no hay datos para el 1 de enero FSB corta todas las barras de 01.01.08 incluyendo . Por ello, el FSB limita las barras hasta el 31.12.08.


(Es decir, el número de barras tiene mayor prioridad que la fecha BEFORE!!!!)

Exactamente.

 
Miroslav_Popov писал(а) >>

1. "Eliminar los datos anteriores al 1 de septiembre de 2008" se ignora ya que hay menos de 300 barras hasta el 1 de enero de 2009.

2. "Eliminar datos más recientes que el 1 de enero de 2009" - parece que no hay datos para el 1 de enero. Por ello, el FSB limita las barras hasta el 31.12.08.

Ya no.

Ahora estoy mostrando el reloj.

En el archivo 63291(iBars) las líneas de 1999-01-04 a 2009-03-18

La fecha 2008-09-01 es la línea 59 973

La fecha 2009-01-02 es la línea 62 021.

Es decir cuando el programa busca la fecha de inicio, el ciclo "corre" desde la barra 63 291 - 50 000 = 13 291(iTempStartBar = iBars -iMaxBars;) hasta la barra 50 000 - 300 = 49 700(iTempBars - MINIMUMBARS) y al no encontrar mi fecha "anterior" (barra 59 973), deja(iTempStartBar = iBars - iMaxBars;) la barra de inicio = 63 290 - 50 000 = 13 290.

En mi archivo es 2001-02-21 12:00 (+/- 300, que corresponde a la cifra)

Archivo adjunto.

Archivos adjuntos:
eurusd60.rar  702 kb
 

iBars<= 50.000

El FSB importa las 50.000 barras más recientes del archivo de datos.

Así que:

La fecha 2008-09-01 es la línea 59 973

La fecha 2009-01-02 es la línea 62 021

están fuera de los datos cargados. Data Horizon no los tiene en cuenta.



Operaciones. Me equivoco.

 
Miroslav_Popov писал(а) >>

iBars <= 50.000

El FSB importa las 50.000 barras más recientes del archivo de datos.

Así que:

La fecha 2008-09-01 es la línea 59 973

2009-01-02 es la línea 62 021

están fuera de los datos cargados. Los datos de Horizont no se tienen en cuenta.

más reciente !!!!, es decir, de 13.291 a 63 291!!!!! y ahora busca de 0 a 50.000 (redondeado ;) )

No hay acuerdo. :( Lástima :(

Aunque me parece que sería más correctosustituir iTempStartBar ;iBar < iTempBars - MINIMUMBARS; iBar++) por iTempEndBar enlugar de iTempBars - MINIMUMBARS. Y todo el bloque "// Establecer el número máximo de barras" es redundante si AND bUseStartDate=True AND bUseEndDate=True

'

Pero, de nuevo, no insisto. :( (Cortaré el archivo, aunque por minucias bien podría querer optimizar la estrategia en las 50 000 barras anteriores y comprobarla en las siguientes 10 000 barras.

:(

SZY. Sigue habiendo un error en el código y no se corresponde con el esquema!!!!! (mi intervalo está a la derecha y no a la izquierda) :(

 

Pensemos en ello.


Dame el código que quieras. Lo pondré en el programa y lo probaremos.

 
Miroslav_Popov писал(а) >>

Pensemos en ello.

Dame el código que quieras. Lo pondré en el programa y lo probaremos.

Un fragmento de su código de las páginas anteriores.

// Set the maximum nuber of bars
// if (iBars > iMaxBars && iMaxBars >= MINIMUMBARS)
// {   // We need to cut out the oldest bars
//  iTempBars     = iMaxBars;
//  iTempStartBar = iBars - iMaxBars;
//  bChange       = true;
// }
// Или оставить 
// только если && bUseStartDate=False && bUseEndDate=False 
// или && (bUseStartDate=False || bUseEndDate=False)
// сам не представляю, но весь блок "сбивает"



// Set the starting date
DateTime dtStartingDate = new DateTime( iStartYear, iStartMonth, iStartDay);
if ( bUseStartDate && aBar[ iTempStartBar].Time < dtStartingDate)
{   // We need to cut out the oldest bars
 for (int iBar = iTempStartBar; iBar < iTempEndBar; iBar++)
 {
  if ( aBar[ iBar].Time >= dtStartingDate)
  {
   iTempStartBar = iBar;
   iTempBars     = iTempEndBar - iTempStartBar + 1;
   bChange       = true;
   break;
  }
 }
}

Как вариант, после
// Set the maximum nuber of bars
if (iBars > iMaxBars && iMaxBars >= MINIMUMBARS)
{   // We need to cut out the oldest bars
 iTempBars     = iMaxBars;
 iTempStartBar = iBars - iMaxBars;
 bChange       = true;
}
¡¡¡¡

añadir

if (bUseStartDate)
{   
 iTempStartBar = 0; 
}
Pero para el reinicio de la fecha de inicio iTempStartBar debe ser!!!!
 
if (bUseStartDate)
{   
    iTempStartBar = 0; 
}
Si dtStartingDate es anterior a iMaxBars, ignora dtStartingDate y limita por iMaxBars
 
Miroslav_Popov писал(а) >>
si dtStartingDate es anterior a iMaxBars se debe ignorar dtStartingDate y limitar por iMaxBars

Y creo que debería haber iMaxBars a partir de dtStartingDate "a la derecha", ¡para poder mover el tamaño de la ventana de iMaxBars a lo largo del archivo!

Pero si a la derecha las barras de dtStartingDate son más pequeñas que las de iMaxBars. entonces debe ser dtStartingDate la que tenga prioridad, ya que las fechas son más intuitivas que las barras. EN MI OPINIÓN.

Y en general, un usuario pone una "garrapata" deliberadamente, y bares - por defecto, más por lo que está incrustado en el sistema (iMaxBars)

'

ZS. Lo curioso es que probablemente no utilice el programa :)

Razón de la queja: