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

 
ANDREY:
Pr é uma variável para que apenas 1 pedido seja aberto após 30 pips. Sem esta variável eles abrem em cada carrapato
if(OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0))
{LoU=Bid;}

Então você não precisa desta variável...e já há menos carga)

 
MakarFX:
Pior ainda... ainda precisa saber o número de bares


Eu afinei ...tente

Eu fiz. É a mesma coisa.
Seu código.

double LoU,Pr;
int OnInit()
  {
   LoU=Low[0];
  }
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Low[1]<LoU) {LoU=Low[1];}
   if ((Bid-30*Point)>=LoU)
     {
      if(OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0)) LoU=Low[0];
     }
  }


 
MakarFX:

Então você não precisa desta variável...e já a carga é menor)

Talvez eu não precise disso. Mas não é com ele que estou me debatendo.....

 
ANDREY:

Provavelmente, não é necessário. Mas não é com ele que estou me debatendo.....

1) Se você estiver lutando com velocidade, qualquer otimização de código é uma vantagem.

2) A diferença nos resultados porque você não tem inicialização do LoU na partida não é nada... VAZIO

 
MakarFX:
Pior ainda...ainda precisa saber o número de bares


Eu afinei ...tente

Se Bid - Low[ ] >= 30 pips, abra um pedido. Mas como sabemos o número desteBaixo[ ] depois que o Bid ultrapassar este Baixo[ ] em 30 pips?
 
ANDREY:
Alternativamente, se Bid - Low[? ] >= 30 p. devemos abrir um pedido. Mas como sabemos que o número de Low[ ] depois de Bid vai mais alto que Low[ ] em 30 pontos?

E se a licitação cair, isso significa uma nova baixa... e a partir de qual baixa deve ser feito o cálculo?

 
MakarFX:

1) Se você estiver lutando com velocidade, qualquer otimização de código é uma vantagem.

2) A diferença nos resultados porque você não tem a inicialização do LoU - na inicialização não equivale a nada... VAZIO

Então, se eu atribuir um valor ao LoU quando eu o declarar, o código será executado muito mais rápido ?

Atribuí-lhe o preço de abertura do primeiro bar a partir de 04.01.2010.

double LoU = 1.6121,Pr;
void OnTick()//531
{
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);
Pr=LoU;
LoU=Bid;

}
}
 
MakarFX:

E se a licitação cair, isso significa um novo mínimo... e qual é o mínimo a partir do qual calcular?

Deixe descer, o principal é que a ordem abre em 30 pips. E depois de aberto, deixe o preço descer para encontrar o novo mínimo. Imagine que temos a Licitação atual e está a 30 pontos de Low[ 50] e podemos abrir uma ordem. Se ( Licitação - Low[ 50] > 30 pontos ) - abrir uma ordem, como saberemos que é a 50ª vela baixa? Portanto, neste caso, devemos verificar não o que estava antes do mínimo local, mas o que estava depois dele.
E, neste caso, não importa o quanto o preço cairá depois que o pedido for aberto.

 
ANDREY:

Acho que o indicador fractal não é o ideal para mim. Vai perder muitos pedidos.

O pedido aberto pelo meu código com verificação de preço em cada carrapato é destacado em azul. Parece-me que um fractal não me diz nada necessário neste caso.

Eu dei um fractal como exemplo. E como você determina o mínimo (no seu caso) é um segredo militar... ou você não entende o que eu estou pedindo.

 
ANDREY:

Deixe cair, o principal é que o pedido será aberto em 30 pips. E depois de aberto, deixe o preço descer para encontrar um novo mínimo. Imagine que temos a Licitação atual e está a 30 pontos de Low[ 50] e podemos abrir uma ordem. se ( Licitação - Low[ 50] > 30 pontos ) - abrir uma ordem. Mas como verificar se é a 50ª vela baixa? Portanto, neste caso, devemos verificar não o que estava antes do mínimo local, mas o que estava depois dele.

você não precisa contar as barras

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

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

Razão: