Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1451

 
Você pode me dizer como resumir todos os valores do texto?
void Hmin(){datetime   h = iBars(NULL,PERIOD_H1); 
       ObjectCreate(0,"Hmin"+h,OBJ_TEXT,1,TimeCurrent(),0);     
       double Hmin=ObjectDescription("Hmin"+h);     
       ObjectSetText("Hmin"+h,MathMin(Hmin,AccountEquity()-AccountBalance()),15,"Arial",clrWhite);
       ObjectSetInteger(0,"Hmin"+h,OBJPROP_ANCHOR,ANCHOR_RIGHT);  
           }
Este código só os cria
 
Дмитрий:

Boa tarde, por favor, ajude-me a entender...

MathMax retorna o máximo de dois valores numéricos, ou seja, ele retorna o valor numérico máximo de duas matrizes idênticas de alto[taxas_total] com uma diferença de -1 e -2 barras?

Em palavras simples: Na primeira matriz 12345 e na segunda 1234, esta função retornará 5?

Não. A função retornará 12345.

 
Дмитрий:

Boa tarde, por favor, ajude-me a entender...

MathMax retorna o máximo de dois valores numéricos, ou seja, ele retorna o valor numérico máximo de duas matrizes idênticas de alto[taxas_total] com uma diferença de -1 e -2 barras?

Em palavras simples: a primeira matriz tem 12345 e a segunda tem 1234, esta função retornará 5?

Ele retornará o valor máximo dos dois, que são altos[taxas_total-1] e altos[taxas_total-2].

Se o endereço high[rates_total-1] contém valor 12345, e o endereço high[rates_total-2] contém valor 1234, qual destes dois valores é maior?

12345 é claramente maior do que 1234 por uma ordem de grandeza. O valor 12345 de alta[taxas_total-1] será devolvido.

 
Artyom Trishkin:

O valor máximo das duas a altas[taxas_total-1] e altas[taxas_total-2] será devolvido.

Se high[rates_total-1] contém o valor 12345, e high[rates_total-2] contém o valor 1234, qual destes dois valores é maior?

12345 é claramente maior que 1234 por uma ordem de grandeza. O valor 12345 de alta[taxas_total-1] será devolvido.

Obrigado... Mas há uma questão sobre a racionalidade da corda se alta[taxas_total-1] já é uma barra maior do que alta[taxas_total-2].

Ou há aqui um significado diferente?

Obrigado.

 
Дмитрий:

Obrigado... mas isto levanta uma questão sobre a racionalidade da corda se alta[taxas_total-1] já é uma barra a mais do que alta[taxas_total-2].

Ou há algo mais que faz sentido aqui?

Obrigado.

O que as barras têm a ver com isso?

Você está comparando valores altos em duas barras da mesma matriz. As taxas_total-1 e taxas_total-2 indicam quais valores das duas barras que você está comparando.

Você está comparando os Altos valores das barras localizadas em rates_total-1 e rates_total-2, não os valores dos índices.

O que você está pensando seria assim: MathMax(rates_total-1, rates_total-2) - aqui é onde os rates_total-1 sempre serão devolvidos.

 
Rustam Bikbulatov:
Você pode me dizer como resumir todos os valores do texto? Este código só cria

você quer obter o saldo menos os valores patrimoniais?

 
Artyom Trishkin:

O que as barras têm a ver com isso?

Você está comparando os valores da Alta, que estão em...

Obrigado... Para o esclarecimento)
 

Bom dia a todos!

No MT4, no modelo ALL TIKES, em candelabros de minutos, estou testando o Expert Advisor. Minha tarefa é fazer com que o programa gaste o menor tempo possível na execução do código. Mas o que me surpreendeu!!!!

Neste código, o programa verifica cada tick e gasta 6 segundos para a execução do código. 375 milissegundos.

void OnTick()
{
Tick++;
if (Tick!=x3)
{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick);
x3=Tick;
}
}

Pareceu-me que o programa deveria verificar não cada tique, mas apenas o primeiro tique de cada vela de minuto e gastar muito menos tempo na execução do código.

 
void OnTick()
{
Tick++;

if (Minute()!=x3)//&&Seconds()==0

{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick, "  Bid  ",   Bid, "  LoY  ",   LoY);
x3=Minute();
}
}



Mas o programa passou 6 segundos. 219 msec. A partir disto cheguei à conclusão de que, embora o código diga ao programa para verificar a expressão entre parênteses apenas uma vez a cada 60 segundos, ele ainda verifica esta expressão a cada tick e gasta quase tanto tempo para execução como no código anterior.
Depois mudei o modelo para VALUABLE VALUES e corri a segunda variante. Mas o programa levou os mesmos6 segundos para executá-lo.219 milissegundos.


PERGUNTA . É possível fazer o programa em MT4 no modelo ALL TICK, não verificar cada tick, e apenas o primeiro tick de uma nova vela de minuto, que gastaria muito menos tempo para a execução do código. Se for possível, que função ou construção de linguagem pode ser usada?
Obrigado.

 
datetime current, last;

void OnTick()
   {
   current=iTime(symbol,frame,0);
   if(last==current) return;
   last=current;

   } 
 
Aleksei Stepanenko:

Alterei meu código para corresponder ao seu código

datetime current, last;
void OnTick()
{
Tick++;
current=iTime( NULL,0,0);
if(last==current) return;
last=current;
{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick);
}
}


Tempo gasto pelo programa para executar o código.... 6 , 235, ou seja, menos do que com meu código (6.375), mas não várias vezes menos
. Parece-me que deveria ser várias vezes menos, porque o programa só tem que verificar o valor do tick uma vez na abertura de cada vela de minuto.

Qual de nós está errado..... parece-me a mim.


Razão: