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

 
Miroslav_Popov писал(а) >>

Gerador reparado. Substitua seu exe por este.


Os grupos geradores às vezes Indicator Period + Shift > Bar Count;

Eu já estou confuso. :)

Nova versão.

Mas tendo reduzido a contagem de barras para 300, o gerador funciona e pode ser parado com o botão Stop

'

Versão antiga (baixada rapidamente do site)

Mas, se a quantidade de barras < 1000, então o gerador fica pendurado.

'

IMHO é melhor se acostumar com o limite de 1000 bar exigido para o testador, mas a conveniência de selecionar o intervalo.

'

 
SergNF писал(а) >>

Eu já estou confuso. :)

'

Versão antiga (baixada rapidamente do site)

Mas, se o número de barras < 1000, o gerador fica pendurado.

'

Pensamentos felizes sobre a "versão antiga" se revelaram falsos.

Isto é, a imagem é a mesma que na nova versão. (isto é, o número de barras tem maior prioridade do que a data DO!!!!)

'

'

Oops

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

É correto que o loop vá para o iTempBars - MINIMUMBARS, ou seja, para o número máximo de barras iTempBars = iMaxBars; desde o início da história?

Em meus arquivos de história muito mais de 50 000 linhas e neste intervalo do iTempStartBar = iBars - iMaxBars para iMaxBars- MINIMUMBARS simplesmente não podem ser pedidas datas?!

Logicamente, a data final e a data inicial devem ser pesquisadas até o final de toda a história, ou seja, até iBars ???

Mas a barra final é encontrada corretamente.

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

Sobre suas capturas de tela:

1. "Remover dados anteriores a 1º de setembro de 2008" é ignorado já que há menos de 300 barras até 1º de janeiro de 2009

2. "Remover dados mais recentes que 1 de janeiro de 2009" - parece que não há dados para 1 de janeiro A FSB corta todas as barras a partir de 01.01.08, incluindo . É por isso que a FSB limita as barras até 31.12.08.


(isto é, o número de barras tem maior prioridade do que a data ANTES de 17 de abril de 2010)

Exatamente.

 
Miroslav_Popov писал(а) >>

1. "Remover dados anteriores a 1º de setembro de 2008" é ignorado, já que há menos de 300 barras até 1º de janeiro de 2009.

2. "Remover dados mais recentes que 1º de janeiro de 2009" - parece que não há dados para 1º de janeiro. É por isso que a FSB limita as barras até 31.12.08.

Não mais.

Agora estou mostrando o relógio.

No arquivo 63291(iBars) as linhas de 1999-01-04 a 2009-03-18

Data 2008-09-01 é a linha 59 973

A data de 2009-01-02 é a linha 62 021.

Isto é quando o programa procura a data de início, o ciclo "roda" da barra 63 291 - 50 000 = 13 291(iTempStartBar = iBars - iMaxBars; ) até a barra 50 000 - 300 = 49 700(iTempBars - MINIMUMBARS) e não encontrar minha data "antes" (barra 59 973), sai(iTempStartBar = iBars - iMaxBars;) barra de início = 63 290 - 50 000 = 13 290.

No meu arquivo é 2001-02-21 12:00 (+/- 300, o que corresponde à figura)

Arquivo anexo.

Arquivos anexados:
eurusd60.rar  702 kb
 

iBars<= 50.000

A FSB importa as mais novas 50.000 barras do arquivo de dados.

Portanto:

Data 2008-09-01 é a linha 59 973

Data 2009-01-02 é a linha 62 021

estão fora dos dados carregados. O Data Horizon não os leva em conta.



Ops. Eu estou errado.

 
Miroslav_Popov писал(а) >>

iBars <= 50.000

A FSB importa as mais novas 50.000 barras do arquivo de dados.

Portanto:

Data 2008-09-01 é a linha 59 973

2009-01-02 é a linha 62 021

estão fora dos dados carregados. A Data Horizont não os leva em conta.

mais novo !!!!, ou seja, de 13.291 a 63 291!!!!! e agora busca de 0 a 50.000 (arredondado ;) )

Nenhum acordo. ( Pena :(

Embora me pareça que seria mais corretosubstituir o iTempStartBar ;iBar < iTempBars - MINIMUMBARS; iBar++) pelo iTempEndBar nolugar do iTempBars - MINIMUMBARS. E todo o bloco "// Definir o nuber máximo de barras" é redundante se AND bUseStartDate=True AND bUseEndDate=True

'

Mas novamente, não insisto. (( Vou cortar o arquivo, embora para as minúcias ele possa querer otimizar a estratégia nas 50 000 barras anteriores e verificá-la nas 10 000 barras seguintes.

:(

SZY. Ainda há um erro no código e ele não corresponde ao esquema!!!!! (meu intervalo é à direita e não à esquerda) :(

 

Pensemos sobre isso.


Dê-me o código que você quer. Vou colocá-lo no programa e vamos testá-lo.

 
Miroslav_Popov писал(а) >>

Pensemos sobre isso.

Dê-me o código que você quer. Vou colocá-lo no programa e vamos testá-lo.

Um trecho de seu código das 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;
}

adicionar

if (bUseStartDate)
{   
 iTempStartBar = 0; 
}
Mas para reiniciar o iTempStartBar deve ser!!!!
 
if (bUseStartDate)
{   
    iTempStartBar = 0; 
}
Se o dtStartingDate for anterior ao iMaxBars, ignore o dtStartingDate e o limite do iMaxBars
 
Miroslav_Popov писал(а) >>
se o dtStartingDate for anterior ao iMaxBars você deve ignorar o dtStartingDate e o limite do iMaxBars

E eu acho que deveria haver iMaxBars da dtStartingDate "para a direita", para que você possa mover o tamanho da janela do iMaxBars ao longo do arquivo!

Mas se à direita as barras dtStartingDate são menores que as barras iMaxBars. então deve ser dtStartingDate que tem prioridade, pois as datas são mais intuitivas que as barras. IMHO.

E em geral, um usuário coloca um "tick" deliberadamente, e barras - por padrão, quanto mais está embutido no sistema (iMaxBars)

'

ZS. O engraçado é que eu provavelmente não vou usar o programa :)

Razão: