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

 
Alexey Viktorov:

Eu dei um fractal como exemplo. E como você define o mínimo (no seu caso) é um segredo militar... ou um completo mal-entendido do que está sendo pedido.

Meu código consiste em várias cordas e você pode ver a olho nu como o mínimo é definido

O mínimo é definido nas linhas amarelas

void OnTick()//484
{
if (Bid<LoU)
LoU=Bid;
//**************************************************************||TimeCurrent()==1262568096
if (Bid-LoU>=0.0030&&Pr!=LoU)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0);
Print("---------------------КАЖДЫЙ ТИК ------Tick---------=     "    ,   Tick);
Pr=LoU;
LoU=Bid;
}
}
 
MakarFX:

você não precisa contar barras

Após a abertura do pedido, atribuir à variável o valor Baixo[0] (mínimo da barra atual), depois que a barra for fechada, se o valor Baixo[1] for menor que a variável, atribuir-lhe um novo valor,

caso contrário, o valor antigo é retido, ou seja, o mínimo.

Este algoritmo que há muito compreendo e utilizo.... ou seja, verifique os mínimos não no carrapato, mas no candelabro. Mas acho que existe um algoritmo muito mais econômico, a saber, aquele que descrevi da última vez, quando você verifica os mínimos não antes, mas depois. Mas eu não sei como contar rápida e economicamente o número de velas do BIDA até a quinquagésima vela. Sim à quinquagésima vela eu sei como contar o número de velas. Como contar o número de velas para a vela com o LOU mais baixo . Ou seja, da BIDA a esta vela

 
ANDREY:

Meu código consiste em várias linhas e mostra como o mínimo é definido a olho nu

O mínimo é definido nas linhas amarelas.

Então, qual é o problema? O que importa aqui é como a variável LoU é declarada. Se for a nível global, tudo bem. Se for uma variável local, ela deve ser estática. E verificando em cada tick a diferença do preço atual com o preço nesta variável, o custo do microssegundo será tão insignificante que não faz sentido falar sobre isso.

 
ANDREY:

Este é um algoritmo que há muito compreendo e utilizo.... ou seja, verifique os mínimos não no carrapato, mas no candelabro. Mas eu acho que existe um algoritmo muito mais econômico, ou seja, aquele que descrevi da última vez, quando você não verifica antes do mínimo, mas depois que ele aparece. Mas eu não sei como contar rápida e economicamente o número de velas do BIDA até a quinquagésima vela. Sim à quinquagésima vela eu sei como contar o número de velas. Como contar o número de velas para a vela com o LOU mais baixo . Ou seja, da BIDA para aquela vela.

Há alguma lógica anormal ... Por que contar cerca de 50 barras? E se não forem 50?

 
ANDREY:

Este é um algoritmo que há muito compreendo e utilizo.... ou seja, verifique os mínimos não no carrapato, mas no candelabro. Mas eu acho que existe um algoritmo muito mais econômico, ou seja, aquele que descrevi da última vez, quando você não verifica antes do mínimo, mas depois que ele aparece. Mas eu não sei como contar rápida e economicamente o número de velas do BIDA até a quinquagésima vela.

O que quer que você pense, a verificação será feita a cada tick - esta é uma característica da função OnTick().

 
MakarFX:

Seja qual for a verificação que você fizer, ela ainda será feita em cada tic - esta é uma característica da função OnTick().

Uma coisa é verificar e outra é encontrar o mínimo...

 
Alexey Viktorov:

Então, qual é o problema? O principal aqui é como a variável LoU é declarada. Se for a nível global, está bem. Se for uma variável local, ela deve ser estática. E verificar em cada tick a diferença do preço atual com o preço nesta variável será tão insignificante que não faz sentido falar sobre isso.

Obrigado pela nova e valiosa informação para mim..... Eu não sabia disso.

 
Alexey Viktorov:

Há alguma lógica anormal nisto... Por que contar qualquer 50 barras? E se não forem 50?

50 é para o caso abstrato. Pode ser 20 ou 150 ou 3 ou 1. O que se quer dizer é como saber quantos bares existem entre o atual BIDE e o baixo local .... caso haja 30 pontos entre este BIDE e o baixo local necessário para abrir o pedido. Para abrir um pedido se ( Licitação - Baixa[ 50] >= 30 pips)- para abrir um pedido.

 
MakarFX:

Seja qual for a verificação que você fizer, ela ainda será feita em cada tic - esta é uma característica da função OnTick().

Obrigado. Se eu soubesse que .... talvez eu não me tivesse incomodado tanto com isso.

Portanto, se eu verificar BAIXO não a cada carrapato, mas a cada candelabro, o programa ainda vai gastar tempo para processar cada carrapato, e vai parecer o mesmo que se fosse verificado a cada carrapato.

Não há maneira de evitar esta característica em seu código? Não deve ser realizado em cada carrapato, mas, por exemplo, em cada vela de baixo de um minuto.

 
ANDREY:

Obrigado. Se eu soubesse que .... Talvez eu não me tivesse incomodado tanto com isso.

Então, se eu verificar BAIXO não a cada carrapato, mas a cada vela, o programa ainda vai gastar tempo para processar cada carrapato, e o resultado será o mesmo que se eu tivesse verificado a cada carrapato?

Não há maneira de evitar esta característica em seu código? Não deve ser realizado em cada carrapato, mas por exemplo em cada LOU de uma vela de um minuto.

nulo()

Razão: