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

 
Alexey Viktorov:
Você já tentou normalizar para 2 dígitos?

E normalizar o quê? O preço atual, e depois comparar..... com o quê?

Eu não sei do que você está falando
.

 
Vyacheslav Kornev:

Eu tenho um livro Mac. Eu não posso nem mesmo copiar do meta-editor

Decifrar os valores e o tipo de variáveis no segundo caso.
 
Victor Nikolaev:

Decifrar os valores e o tipo de variáveis no segundo caso.





 
mila.com:

Olá.

Por favor, ajude a fixar o fato de que o preço atual cruza qualquer preço redondo, não um preço específico como no exemplo.

Por exemplo:

ou

static double prevBid=EMPTY_VALUE;

if (prevBid!=EMPTY_VALUE && prevBid<=levelPrice && Bid > levelPrice ) {

   /// цена пересекла уровень снизу вверх

}

prevBid=Bid;

 
mila.com:

Olá.

Por favor, ajude a consertar o fato de que o preço atual cruza qualquer preço redondo, não um preço específico como no exemplo.

Por exemplo:

ou

//===============================================================================================
//---------------------------- Возвращает ближайший круглый уровень ----------------------------+
//===============================================================================================
double GetUniversalLevel(int ne=100, string symb="0") {
 if(symb=="0") symb=Symbol();
 static double LastBid;
 double _Level=0, PriceStep=0, bid=0, point=0;
 bid=SymbolInfoDouble(symb,SYMBOL_BID);
 point=SymbolInfoDouble(symb,SYMBOL_POINT);
  if(LastBid<point) LastBid=bid;
   PriceStep=ne*point;
   _Level=MathRound(bid/PriceStep)*PriceStep;
  LastBid=bid;
  return(_Level);
 }

Ligando para

//double R_Level = GetUniversalLevel(100, Symbol()); // круглые 100
double R_Level = GetUniversalLevel(50, Symbol()); // круглые 50
// дальше надеюсь разберётесь
Comment(R_Level );
 
Vyacheslav Kornev:






Vamos tentar substituir os valores na fórmula

if (St==7)
  {
     double Pris_Lin=0;
     Lots0=(L(OP_SELL)+(Bid-0)/10*Lotsc;  
     // Для Евро 
     // Lots0=(L(OP_SELL)+(1.10890-0)/10*0.1;
     // Lots0=(L(OP_SELL)+0.0110890;
     
     .....................
     if (Op_Pr>=Bid)
        Lots0=L(OP_SELL);
     if (Lotsc>Lots0) Loys0=Lotsc;
  }

Se o tamanho do lote for arredondado de acordo com as exigências do CD, o lote ou aumentará 0,01 ou permanecerá inalterado.

Mas não há arredondamento, portanto há apenas um erro - volume de lote inválido.

 
Victor Nikolaev:


Vamos tentar substituir os valores na fórmula

Se o tamanho do lote for arredondado de acordo com as exigências do CD, o lote ou aumentará 0,01 ou permanecerá inalterado.

Mas não há arredondamento, portanto há apenas um erro - volume de lote inválido.


Na verdade, Pris_lin é um preço, e nunca é igual a zero
 
Vyacheslav Kornev:

Na verdade, Pris_lin é um preço e nunca é zero.

Veja cuidadosamente o código que você postou na página anterior.
 
Victor Nikolaev:

Veja cuidadosamente o código que você postou na página anterior.

Sim, posso ver isso. É por isso que estou pedindo ajuda.
 
Victor Nikolaev:

Veja cuidadosamente o código que você postou na página anterior.

Preciso pegar o preço e depois o modulo calcular a diferença e pronto( Bid - Pris_lin)
Razão: