A mudança do TF é um problema - página 3

 
Vasyl Nosal:

Eu tenho uma idéia. Escreverei mais tarde.

a idéia está morta.

Vou pedir aos desenvolvedores que façam algo como o sistema HistoryUpdated() para verificar se todo o histórico foi atualizado ou não.

Uma variante ideal. Para manter o histórico de todos os períodos de tempo atualizado. Recentemente um indicador semelhante apareceu no CodeBase
 
Slawa:

Os desenvolvedores não o ajudarão porque não o farão.

Já disse: se a diferença entre taxas_total e pré_calculadas é maior que 1, então é históriaUpdated

é maior que 0, e não 1.

И? Isso resolve o problema?

Ou não é um problema para você recalcular a história toda em cada novo bar?

 
Vasyl Nosal:

é maior que 0, e não 1.

И? Isso resolve o problema?

Ou não é um problema para você recalcular a história toda em cada novo bar?

Foi-lhe dito corretamente. Maior do que 1. quando uma nova barra aparece, a diferença é 1.

E isso resolve completamente o problema.

Um indicador normal leva muito pouco tempo para ser totalmente recalculado. Menos de um segundo.

 
Victor Nikolaev:

Foi-lhe dito corretamente. Maior do que 1. quando uma nova barra aparece, a diferença é 1.

E isso resolve completamente o problema.

Um indicador normal leva muito pouco tempo para ser totalmente recalculado. Menos de um segundo.

Só funciona se os amortecedores estiverem zerados.

//history update
  int all=rates_total;
  int counted=prev_calculated;
  if(all-counted>1)
  { 
  ArrayInitialize(up_arr,EMPTY_VALUE);
  ArrayInitialize(down_arr,EMPTY_VALUE);
  counted=0;
  }
   
   //main
 for(int i=all-counted;i>=0;i--)
{
 
Vasyl Nosal:

Só funciona se os amortecedores forem zerados.

//history update
  int all=rates_total;
  int counted=prev_calculated;
  if(all-counted>1)
  { 
  ArrayInitialize(up_arr,EMPTY_VALUE);
  ArrayInitialize(down_arr,EMPTY_VALUE);
  counted=0;
  }
   
   //main
 for(int i=all-counted;i>=0;i--)
{

Desculpe, mas deixe-me perguntar:

  • por que você precisa atribuir taxas_totais e pré_calculadas para separar as variáveis criadas em cada tick aqui?
  • Em expressão de operador condicional if() e no loop for() para recalcular a diferença dessas variáveis?
  • por que não apenas introduzir uma variável para a diferença entre taxas_total e pré_calculadas, por exemplo, limite?
A implementação pode ser diferente, dependendo da tarefa. As nuances podem ser diferentes. Por que você não vê como ela é implementada por outros, dependendo das diferentes condições? Incluindo, e com a ajuda do priming para entender, decidir, formar variantes aceitáveis para você mesmo, dependendo das tarefas?
 
Vasyl Nosal:

P.S. Vou acrescentar mais a isto:

Sua idéia sobre zeragem (contado=0) em bloco de operador condicional se(){} me parece clara.

No caso de ser mais claro para você o que quero dizer brevemente acima, aqui está um extrato da Documentação, da seção ... Noções básicas de linguagem / Funções / Funções de tratamento de eventos:

... Se desde a última chamada do OnCalculate() os dados de preço foram alterados (um histórico mais profundo foi bombeado ou as lacunas do histórico foram preenchidas), então o valor do parâmetro de entrada pré_calculado será ajustado a zero pelo próprio terminal.

 
Vasyl Nosal:

Só funciona se os amortecedores forem zerados.

Você não precisa reiniciar nada.

int OnCalculate(...)
{
   // индекс последнего посчитанного на прошлом вызове бара
   // с которого начинаем расчёт
   int nStartBar = rates_total - MathMax(prev_calculated, 1);

   for(int i = nStartBar; i >= 0; i--)
   {
       // рассчитываем индикатор на всех непосчитанных барах
   }
}

Se você zerar o indicador pré_caclulado para zero, este voltará a calcular completamente. E isto é correto - você não sabe o que exatamente mudou na história. Talvez, algum buraco tenha sido carregado, talvez os pinos tenham sido limpos em algum lugar. É obrigatório recalcular completamente. Em todos os outros casos, apenas uma última barra será recalculada (quandouma nova barra aparece, as duas últimas).

 
Dina Paches:

Desculpe, mas deixe-me perguntar:

  • Por que você precisa atribuir os valores das taxas_total e pré_calculadas para separar as variáveis em cada carrapato?
  • Na declaração condicional if() e no laço for(), você recalcula a diferença dessas variáveis?
  • por que não apenas entrar uma variável para a diferença entre taxas_total e pré_calculadas, por exemplo, limite?
A implementação pode ser diferente, dependendo da tarefa. As nuances podem ser diferentes. Por que você não olha o que outros implementaram, dependendo das diferentes condições? Incluindo, e com a ajuda do priming para entender, decidir, formar opções aceitáveis para você mesmo, dependendo das tarefas?

Obrigado. Bem visto.

Não é. É para que você possa recalcular toda a história se houver uma lacuna.

 
Dina Paches:

P.S. Vou acrescentar mais a isto:

Sua idéia sobre zeragem (contado=0) em bloco de operador condicional se(){} me parece clara.

No caso de ser mais claro para você o que quero dizer brevemente acima, aqui está um extrato da Documentação, da seção ... Noções básicas de linguagem / Funções / Funções de tratamento de eventos:

... Se desde a última chamada do OnCalculate() os dados de preço foram alterados (um histórico mais profundo foi bombeado ou as lacunas do histórico foram preenchidas), então o valor do parâmetro de entrada pré_calculado será ajustado a zero pelo próprio terminal.

Não vai. É 0 então não 0 então 0 novamente (ao carregar o histórico algumas vezes).
 
Sergei Vladimirov:

Não há necessidade de reiniciar nada.

Se você zerar o zero pré_caclulado, o indicador recalculará completamente. E isto é correto - você não sabe o que exatamente mudou na história. Talvez, algum buraco tenha sido carregado, talvez os pinos tenham sido limpos em algum lugar. É obrigatório recalcular completamente. Em todos os outros casos, apenas uma última barra será recalculada (quandouma nova barra aparece, as duas últimas).

Não. Sem zeragem será o que as capturas de tela mostram.