Quem quer uma estratégia? Muito e de graça) - página 50

 

Não há nenhuma diferença entre "Journal by Bars" e "Journal by Position". Eles só exibem as informações de diferentes maneiras.


*Uma barra de dados Filtra "filtros" "Diário por Posição" * parece assim porque não há entrada antes de "barras 'm' mais antigas". O "Journal by Bars" mostra as barras porque elas são carregadas no programa, mas nenhuma negociação é executada nas barras "mais antigas".


O "filtro de barras de dados" e o "filtro de data" são exatamente isso - filtros. Eles são usados para permitir (ou proibir) a entrada no mercado durante o intervalo especificado. Isto não muda a lógica da estratégia.


Não podemos usar "Filtro de barras de dados" ou "Filtro de data" em um slot "Condição lógica de fechamento". Isso mudaria a lógica de saída da estratégia.

 
Miroslav_Popov писал(а) >>

Não há nenhuma diferença entre "Journal by Bars" e "Journal by Position". Eles só exibem as informações de diferentes maneiras.

*Uma barra de dados Filtra "filtros" "Diário por Posição" * parece assim porque não há entrada antes de "barras 'm' mais antigas". O "Journal by Bars" mostra as barras porque elas são carregadas no programa, mas nenhuma negociação é executada nas barras "mais antigas".

O "filtro de barras de dados" e o "filtro de data" são exatamente isso - filtros. Eles são usados para permitir (ou proibir) a entrada no mercado durante o intervalo especificado. Isto não muda a lógica da estratégia.

Não podemos usar "Filtro de barras de dados" ou "Filtro de data" em um slot "Condição lógica de fechamento". Isso mudaria a lógica de saída da estratégia.

Eu entendi tudo isso muito bem.

Eu tentei usar essas "perversões" para

1) Para limitar à esquerda e à direita uma seção de otimização.

2. Para ver o comportamento da estratégia depois de sair da trama de otimização.

3. As curvas do gráfico não interferiram em olhar para a parte relativamente real do gráfico. (Ponto 1 - ver a seção de história delimitada à esquerda e à direita)

4. Ao mesmo tempo em que se minimiza o número de pressionamentos de botões.

(E na realidade, muitas vezes é necessário "olhar" mais de perto para alguma parte da história. Ao mesmo tempo, abrir uma janela separada (gráfico completo) "Balans/Equity Chart" não é conveniente).

E tudo isso até que um bug com a caixa de seleção "Remover dados mais antigos então" no Data Horizont seja corrigido .

Então,vamos esperar pelo Data Horizont !!!!

 

O primeiro bar da revista posiciona ...1254. O que, IMHO, não deve mudar.


O construtor de estratégias Forex quer um mínimo de 300 barras. Para ele é 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;
}

BARRAMENTO MÍNIMO = 300

iMaxBars - O que definimos em "Data Horizon

 

( Não posso afixar o código corretamente. Ele remove as guias principais.

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

ou seja, (você tem que usar Ctrl+Alt+M em vez de formatar o 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;
  }
 }
}

mas onde mais para o primeiro se?

Ou você queria

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

Da mesma forma para "data final

 

**Em outro lugar para o primeiro se?

Nós cortamos dados quando:

1. A caixa de seleção está marcada: bUseStartDate == true

2. A data selecionada é posterior (mais recente) ao início de nossos dados históricos: aBar[iTempStartBar].Tempo < dtStartingDate


No caso contrário, simplesmente não há corte.


-------

Editar:

Você não pode remover datas anteriores a 30 de setembro de 2008. Isso porque se você as remover, menos de 300 barras permanecerão. (Gráfico diário)


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

 
Miroslav_Popov писал(а) >>

** onde está o outro para o primeiro se? **

Sim. Apresse-se, desculpe. :(

Acontece que para geração de estratégia no H4 eu não posso usar período inferior a 2,5 meses (300/6=50 dias - fim de semana sem barras ~ 2,5. meses) não é crítico, mas também o intervalo de verificação de estratégia (OOS) deve começar não mais tarde do que 2.5 meses antes da data atual (não é conveniente, porque duvido que a estratégia ajustada viverá tanto tempo, e é mais interessante ver "como a estratégia otimizada no dia anterior se comportaria hoje"), ou subtrair a "seção sobreposta", ou ... Adicionar barras vazias ao arquivo (espera-se que o tempo de computador não seja verificado)

:)

Resumo - Eu sempre defino o número máximo de barras (para evitar pendências de geração), e estabeleço intervalos de otimização/controle por datas.

 

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


Ele os pegará. Remover a marca de verificação "Mercado" - "Verificar dados".

 
voltair >> :

E que dados são necessários para escolher corretamente? O que você precisa investigar?

Por exemplo... como a estratégia se comporta em diferentes tipos de mercados, e agora... Encontrei muitas vezes um ano de lucros acima de 2, e o dreno do último mês e a tendência persistem.