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

 

No hay ninguna diferencia entre "Diario por barras" y "Diario por posición". Sólo muestran la información de forma diferente.


*Un filtro de barras de datos "filtra" "Diario por posición "* se ve así porque no hay ninguna entrada antes de "Barras 'm' más antiguas". El "Diario por barras" muestra las barras porque están cargadas en el programa pero no se ejecutan operaciones en las barras "más antiguas".


El "Filtro de barras de datos" y el "Filtro de fechas" son exactamente eso: filtros. Se utilizan para permitir (o prohibir) la entrada al mercado durante el intervalo especificado. Esto no cambia la lógica de la estrategia.


No podemos utilizar el "Filtro de barras de datos" o el "Filtro de fecha" en una ranura de "Condición lógica de cierre". Eso cambiaría la lógica de salida de la estrategia.

 
Miroslav_Popov писал(а) >>

No hay ninguna diferencia entre "Diario por barras" y "Diario por posición". Sólo muestran la información de forma diferente.

*Un filtro de barras de datos "filtra" "Diario por posición "* se ve así porque no hay ninguna entrada antes de "Barras 'm' más antiguas". El "Diario por barras" muestra las barras porque están cargadas en el programa pero no se ejecutan operaciones en las barras "más antiguas".

El "Filtro de barras de datos" y el "Filtro de fechas" son exactamente eso: filtros. Se utilizan para permitir (o prohibir) la entrada al mercado durante el intervalo especificado. Esto no cambia la lógica de la estrategia.

No podemos utilizar el "Filtro de barras de datos" o el "Filtro de fecha" en una ranura de "Condición lógica de cierre". Eso cambiaría la lógica de salida de la estrategia.

Comprendí muy bien todo esto.

Intenté utilizar estas "perversiones" para

1) Para limitar a la izquierda y a la derecha una sección de optimización.

2. Para ver el comportamiento de la estrategia después de salir de la parcela de optimización.

3. Las curvas gráficas no interferían con la observación de la parte relativamente real del gráfico. (Punto 1 - véase la sección de historia delimitada a la izquierda y a la derecha)

4. Minimizar el número de pulsaciones de botones al mismo tiempo.

(Y en realidad, a menudo es necesario "mirar" más de cerca alguna parte de la historia. Al mismo tiempo, no es conveniente abrir una ventana separada (de gráfico completo) "Gráfico de saldos/acciones").

Y todo eso hasta que se solucione un error con la casilla "Eliminar datos más antiguos entonces" en el Horizonte de Datos.

¡¡¡¡Así pues,esperemos a Data Horizont !!!!

 

La primera barra de la revista posiciona ...1254. Lo cual, en mi opinión, no debería cambiar.


El Constructor de Estrategias Forex quiere un mínimo de 300 barras. Porque es 1554- 300 = 1254

 
/// <summary>
/// Data Horizon - Cuts some data
/// </summary>
int DataHorizon()
{
	if (iBars < MINIMUMBARS) return 0;

	int  iTempBars     = iBars;
	int  iTempStartBar = 0;
	int  iTempEndBar   = iBars - 1;
	bool bChange       = false;

	// 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;
	}
	

	// 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 < iTempBars - MINIMUMBARS; iBar++)
		{
			if ( aBar[ iBar].Time >= dtStartingDate)
			{
				iTempStartBar = iBar;
				iTempBars     = iTempEndBar - iTempStartBar + 1;
				bChange       = true;
				break;
			}
		}
	}

	// Set the end date
	DateTime dtEndingDate   = new DateTime( iEndYear, iEndMonth, iEndDay);
	if ( bUseEndDate && aBar[ iTempEndBar].Time > dtEndingDate)
	{   // We need to cut out the newest bars
		for (int iBar = iTempStartBar + MINIMUMBARS; iBar < iTempEndBar; iBar++)
		{
			if ( aBar[ iBar].Time >= dtEndingDate)
			{
				iTempEndBar = iBar - 1;
				iTempBars   = iTempEndBar - iTempStartBar + 1;
				bChange     = true;
				break;
			}
		}
	}

	// Cut the data
	if ( bChange)
	{
		Bar[] aBarCopy = new Bar[iBars];
		aBar. CopyTo( aBarCopy, 0);

		aBar = new Bar[ iTempBars];
		for (int iBar = iTempStartBar; iBar <= iTempEndBar; iBar++)
			aBar[ iBar - iTempStartBar] = aBarCopy[ iBar];

		iBars  = iTempBars;
		dtTime = aBar[ iTempBars - 1].Time;
		bCut   = true;
	}

	return 0;
}

BARRAS MÍNIMAS = 300

iMaxBars - Lo que fijamos en "Data Horizon"

 

:( No puedo publicar el código correctamente. Elimina las pestañas iniciales.

 
Miroslav_Popov писал(а) >>

// 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 < iTempBars - MINIMUMBARS; iBar++)
{
if (aBar[iBar].Time >= dtStartingDate)
{
iTempStartBar = iBar;
iTempBars = iTempEndBar - iTempStartBar + 1;
bChange = true;
break;
}
}
}

es decir, (tienes que usar Ctrl+Alt+M, no el formato de texto)

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

pero ¿dónde más para el primer si?

¿O es que quieres

if (bUseStartDate && aBar[iTempStartBar].Time < dtStartingDate)
 iTempStartBar = Какая_там_функция_пересчета_времени_в_бары(dtStartingDate)

Del mismo modo, para la "fecha de finalización"

 

**¿Dónde más para el primer si?

Cortamos los datos cuando:

1. La casilla está marcada: bUseStartDate == true

2. la fecha seleccionada es posterior (más reciente) al inicio de nuestros datos históricos: aBar[iTempStartBar].Time < dtStartingDate


En el caso contrario simplemente no hay corte.


-------

Editar:

No se pueden eliminar fechas anteriores al 30 de septiembre de 2008. Esto se debe a que, si se eliminan, quedarán menos de 300 barras. (Gráfico diario)


for (int iBar = iTempStartBar; iBar < iTempBars - MINIMUMBARS; iBar++)

 
Miroslav_Popov писал(а) >>

*¿Dónde está el else para el primer if?*

Sí. Apresuradamente, lo siento. :(

Resulta, que para la generación de la estrategia en H4 no puedo utilizar el período menos de 2,5 meses (300/6=50días - fin de semana sin barras ~ 2,5. meses) no es crítico, pero también el intervalo de comprobación de la estrategia (OOS) debe comenzar no más tarde de 2.5 meses antes de la fecha actual (no es conveniente, porque dudo que la estrategia ajustada viva tanto tiempo, y es más interesante ver "cómo se comportaría hoy la estrategia optimizada el día anterior"), o restar el "tramo de solapamiento", o ... Añade barras vacías al archivo (esperemos que la hora del ordenador no esté marcada)

:)

Resumen - Siempre establezco el número máximo de barras (para evitar que se cuelgue la generación), y establezco los intervalos de optimización/comprobación por fechas.

 

. добавлять пустые бары в файл (надеюсь, что время компьютера не проверяется)


Los atrapará. Eliminar la marca de verificación "Mercado" - "Comprobar datos"

 
voltair >> :

¿Y qué datos se necesitan para elegir correctamente? ¿Qué necesita investigar?

Por ejemplo... cómo se comporta la estrategia en diferentes tipos de mercados, y ahora... Me he encontrado a menudo con un año de ganancias sobre 2, y el último mes de drenaje y la tendencia persiste.