FORTES Por favor, ajude - página 8

 
MigVRN:

Sempre foi.

Ele é um especialista em tic-tac que não trabalha. E tudo mais no bate-papo. Os eventos temporais e personalizados realmente não foram verificados.

Também de ajuda

...Os arquivos de serviço no formato HCC atuam como fonte de dados para construir os dados de preços para os prazos solicitados no formato HC. Os dados no formato HC são séries temporais, que são preparadas ao máximo para acesso rápido. Eles são criados somente a pedido de um gráfico ou programa mql5 no volume que não exceda o parâmetro "Max bars in charts", e são salvos para uso posterior em arquivos com a extensão hc.

Para economizar recursos, os dados no cronograma são carregados e armazenados na RAM somente quando necessário. Em caso de ausência prolongada de solicitações, os dados são descarregados da RAM, salvando-os em um arquivo. Os dados para cada período de tempo são preparados independentemente dos dados prontos para outros períodos de tempo. As regras para a preparação e disponibilidade de dados são as mesmas para todos os prazos. Portanto, apesar de a unidade de armazenamento de dados no formato HCC ser a barra de minutos, a disponibilidade dos dados no formato HCC não significa a disponibilidade e acessibilidade dos dados M1 no mesmo volume no formato HC.

:)

Então, quem irá carregá-los na memória, se não aSérieInfoInteger(símbolo,PERÍODO_M1,SÉRIE_TERMINAL_FIRSTDATE,primeira_data)

Não há outra função!!!!

Por que ir para o servidor quando os dados estão no terminal????

 
Mikalas:

:)

Então, quem irá carregá-los na memória, se não aSérieInfoInteger(símbolo,PERÍODO_M1,SÉRIE_TERMINAL_FIRSTDATE,primeira_data)

Não há outra função!!!!

Por que ir para o servidor quando os dados estão no terminal????

É isso mesmo - carrega o que está lá. Mas devido ao fato de que qualquer atraso no indicador retarda a conversa com tudo o que está pendurado nele - nos indicadores que fizemos assim, que se a série no momento da chamada não estiver pronta - a função retornará o erro e INICIARÁ a preparação dos dados. Depois de um tempo, ele não retornará mais um erro. Isto é o que está acontecendo em seus registros.
 
MigVRN:
Porque é a PRIMEIRA vez que ela aborda esta série em particular.

Eu fiz o ciclo:

long first_date = 0;
    datetime times[1];
    int fail_cnt = 0;
//---
    while ( fail_cnt < 1000 )
    {
      ResetLastError();  
      if ( SeriesInfoInteger( symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date ) )
      {
        if ( first_date > 0 )
        {
//--- force timeseries build
          CopyTime( symbol, period, datetime( first_date ) + PeriodSeconds( period ), 1, times );
//--- check date
          if ( SeriesInfoInteger( symbol, period, SERIES_FIRSTDATE, first_date ) )
//---        
          if ( first_date > 0 && first_date <= long( start_date ) )
          {
            return( Bars( symbol, period, start_date, end_date ) );
          } 
        }
      }
      fail_cnt++;
    }

Adivinhe qual é o resultado?

 
MigVRN:
Tudo bem - ele carrega e prepara o que está lá. Mas devido ao fato de que qualquer atraso no indicador retarda a conversa com tudo o que está pendurado nele - nos indicadores nós o fizemos para que se a série não estiver pronta no momento da chamada - a função retorne o erro e INICIALIZE a preparação dos dados. Depois de um tempo, ele não retornará mais um erro. Isto é o que você tem em seus registros.
Este tempo pode levar várias chamadas OnCalculate() ou mesmo alguns segundos. É assim que funciona a máquina de fazer dinheiro. É por isso que é incorreto chamar qualquer coisa relacionada à obtenção de dados a partir do indicador OnInit().
 
Mikalas:

Eu fiz o ciclo:

Adivinhe qual é o resultado?

barabashkakvn:
Este tempo pode levar várias chamadas OnCalculate() ou mesmo vários segundos. É assim que funciona uma máquina que faz dinheiro. É por isso que é errado chamar qualquer coisa relacionada à obtenção de dados do OnInit() do indicador.

É isso mesmo - o ciclo é MUITO rápido. Não há tempo para preparar... Entendo que do ponto de vista de um desenvolvedor (nós) é HELL :) Mas você terá que se acostumar com isso.

A propósito, Sleep() não funciona em indicadores

:)

 
MigVRN:

É isso mesmo - o ciclo é MUITO rápido. Não há tempo para preparar... Entendo que do ponto de vista de um desenvolvedor (nós) é HELL :) Mas você terá que se acostumar...

A propósito, Sleep() não funciona em indicadores

:)

Obrigado, Andrey!

A questão não é para você, é retórica:

Por que eu preciso

SeriesInfoInteger( símbolo, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date ) ????

Se eu não obtiver uma resposta, tenho que entrar em contato com o servidor (pode não haver mesmo nenhum dado no terminal) !

Obrigado a todos vocês. O chukchi conseguiu....

... E "respeito" à MQ !

P/S Eu não vou ler a ajuda novamente...

 
Mikalas:

komposter!

Quando você não entende ou interpreta mal alguma coisa, ninguém lhe chama de Chukchi.

Por que eles deveriam?

Quando não entendo, tento ouvir o que me dizem.

E você tem teimosamente ignorado a experiência de muitas pessoas que enfrentaram um problema semelhante e o resolveram.

Isso é o que eu chamava de "escritor chukcha".

 
Mikalas:

Então o que é o

SeriesInfoInteger( símbolo, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date ) ????

Se eu não obtiver uma resposta, tenho que ir ao servidor (os dados no terminal podem realmente não estar lá) !

Para obter os dados se estiverem prontos ou para iniciar uma preparação se o pedido acontecer pela primeira vez.
 
MigVRN:

É isso mesmo - o ciclo é MUITO rápido. Não há tempo para preparar... Entendo que do ponto de vista de um desenvolvedor (nós) é HELL :) Mas você terá que se acostumar...

A propósito, Sleep() não funciona em indicadores

:)

A propósito, o que impede os desenvolvedores de usar oSERIES_TERMINAL_FIRSTDATE

retornar:

-1 - sem dados

0 - nenhum dado disponível mas não pronto

> 0 - data em si

 
Mikalas:

A propósito, os desenvolvedores impediram o identificadorSERIES_TERMINAL_FIRSTDATE

retornar:

-1 - sem dados

0 - não há dados disponíveis, mas não estão prontos

> 0 - data em si.

E qual é a diferença entre "não disponível" e "não pronto" para o programa (e o programador)?

Se os dados não estiverem prontos, haverá um erro.

Ou talvez estas informações também não estejam disponíveis instantaneamente, e é por isso que não são mostradas.

Razão: