Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1177

 

Olá!

Você pode aconselhar como configurar o indicador para funcionar apenas na abertura da barra, e não em cada tic e como fazer com que não funcione sempre (em cada nova barra) em toda a história?

Gostaria de usar o indicador como um indicador de abertura de barra, e lhe agradecerei antecipadamente.

Rostislav


 
Rost17: Você pode aconselhar como configurar o indicador para funcionar apenas na abertura da barra e não em cada tic e como fazer com que não funcione sempre (em cada nova barra) ao longo de toda a história?
Datetime t;
Primeiro, sobre os bares. Quando uma nova barra é formada, um novo valor é escrito no Tempo[0] - o tempo em que a barra se abre.
OnCalculate(...)
{
if(Time[0] == t) return(0); // Se esta barra for processada --> sair
t = Time[0];

Agora para toda a história: ela vai diminuir
 
STARIJ:
data/hora t;
Primeiro, sobre as barras. Quando formamos uma nova barra, escrevemos um novo valor no Tempo[0] - o tempo em que a barra se abre.
OnCalculate(...)
{
if(Time[0] == t) return(0); // se esta barra for processada --> exit
t = Tempo[0];

Agora para toda a história: vai diminuir a velocidade

Obrigado pela resposta rápida. O que eu estou perguntando é como fazer com que NÃO abrande e passe pela história quando uma nova barra aparece, mas apenas processe a nova barra...

Agora está organizado da seguinte forma: for(int i=limit-1; i>=0; i--) e como eu entendo, significa que a cada abertura de uma barra, todos os valores de toda a história serão recalculados novamente, enquanto você deve trabalhar apenas com a última barra...

 
Rost17: Estou perguntando como fazer para que NÃO abrande e não passe por toda a história quando uma nova barra aparece, mas apenas processe a nova barra...

É assim que ele calcula na última barra:

//| Bears Power                                                      |
//+------------------------------------------------------------------+
int OnCalculate(.....)
  {
   int limit=rates_total-prev_calculated; // Количество баров, которые будем считать = ВсегоБаров - РанееПросчитано
   if(rates_total<=InpBearsPeriod) return(0);

   if(prev_calculated>0) limit++; // Если давно считаем, то захватим и предыдущий бар для точности
   for(int i=0; i<limit; i++)
     {
      ExtTempBuffer[i]=iMA(NULL,0,InpBearsPeriod,0,MODE_EMA,PRICE_CLOSE,i);
      ExtBearsBuffer[i]=low[i]-ExtTempBuffer[i];
     }
   return(rates_total);
  }
 
STARIJ:

Vamos ver a linha primeiro

para tornar isso mais claro para mim, eu o reescrevi desta maneira.

Aha!!! Agora estou começando a entender... No loop, a variável uma muda de 1 para 6. Com valores desta variável 1, 5 e 6, não há ação. Então apenas

Ou no seu estilo.

O resultado será o mesmo, mas será mais rápido!

Agora você precisa se livrar da função estatística, escrever seu corpo três vezes seguidas, substituir os parâmetros formais em cada uma das três partes por parâmetros reais e remover as declarações de variáveis duplicadas. O código total será um pouco mais longo, mas a execução será mais rápida. Faz sentido jogar fora a impressão() - quem exatamente neste momento vai olhar através do log de mensagens? - Ou substitua-o por Alert() para exibi-lo na tela. Além disso, há uma variável namZz2 - seu valor muda?


Eu preciso usar stats() em vez de stats(). Estupidamente, sei que posso reescrever três vezes, como você disse, mas o problema é que muito provavelmente o resultado da coleta de estatísticas terá que adicionar mais matrizes e, mais cedo ou mais tarde, voltarei às originais. É por isso que eu lhes ofereço formas simples, que eu já conheço, e que infelizmente me levarão ao início. É por isso que estou olhando para o futuro, para que eu não tenha que voltar a ele no futuro!

for(int a=1;a<6;a++)
{
   if(a==2){Statistic(mZz2,namZz2);}
   if(a==3){Statistic(mZz3,namZz3);}
   if(a==4){Statistic(mZz4,namZz4);}
}

como colocar este código no estatístico!? para ser um procedimento único você no início, como eu disse a pergunta, por favor olhe!

 
STARIJ:

Eis como é calculado na última barra:

Muito obrigado! Eu tenho uma fonte de indicadores muito antiga. Você poderia consertá-lo para que ele não recalcule toda a história toda vez, funcione apenas na barra de fechamento e coloque a seta apenas na barra, depois do que o sinal apareceu? Bem, e no novo estilo, com a OnCalculate... Estou disposto a compensar o custo do seu tempo... Se você concordar, qual é a melhor maneira de fazer isso? Posso enviá-lo em uma mensagem particular ou onde?
 
Игорь:

Aqui está um extrato do código de trabalho ! Como recolhê-la em um único vazio Estatística sem vazio intermediário Stat ! Eu teria que refazer todo o código para reunir todas as matrizes em uma só e tentar arranhá-lo dali para fora!

O trecho citado de seu código de trabalho ou está errado ou sua função Statistic() não faz nada além de imprimir quando chamado de Stat().

De qualquer forma, parará logo após o retorno;.

Por favor, nos dê o código completo para entender o que você quer.

 

Para o registro. Demasiados tópicos no fórum para ajudar os novatos na MQL4.

Esta linha não é mais suportada e está fechada.


Favor dirigir todas as perguntas a qualquer uma das seguintes linhas ativas:

https://www.mql5.com/ru/forum/160683

https://www.mql5.com/ru/forum/160587

Todos os outros posts neste tópico serão excluídos.


 
ajuda pode um pedido já comprado alterar seu preço de compra em 2 horas
 
Quero uma foto de um personagem Minecraft e uma picareta nas minhas mãos quando sou rentável. como faço isso ?
Razão: