Erros, bugs, perguntas - página 3178

 
Andrei Sokolov #:

Agora me deparei com um algoritmo onde apósOrderSelect() há mais chamadas OrderSelect(), então eu acho que um aviso é necessário se apósOrderSelect() houver mais chamadas OrderSelect() e a OrderSelect() "seleciona" outra ordem.

Suponha que você escreva um laço:
for(int i=...; ....; i++) {
...
}
E dentro do laço, o iterador i muda seu valor sob uma determinada condição.
Você também precisa exibir um aviso, não acha?

 
Sergey Gridnev #:
Suponha que você escreva um laço:
for(int i=...; ....; i++) {
...
}
E dentro do laço, o iterador i muda seu valor sob uma determinada condição.
Você acha que um aviso também deve ser gerado?

+++ Controle de um bilhete ou de uma variável de função em uma matriz da mesma função ou estrutura, ou temperatura e pressão no x do paciente, não y.

ZY control X ou igc)))) não temperatura))))
 
Sergey Gridnev #:
Suponha que você escreva um laço:
for(int i=...; ....; i++) {
...
}
E dentro do laço, o iterador i muda seu valor sob uma determinada condição.
Você acha que também deveria ser gerado um aviso?

Sim.
Mas acho que não faz sentido discutir mais a questão, pois não creio que a advertência seja implementada com tais condições.

 
Andrei Sokolov #:

Sim.
Mas acho que não adianta discutir mais a questão, pois não creio que a advertência seja implementada com tais condições.

No Bayscore é um dano em geral, e aqui de cima para baixo com loops também não vai melhorar o ambiente de programação e a algoritmização.

É apenas o rigor e a exatidão dos algoritmos. Não mais. e uma compreensão das regras e possibilidades do idioma.

 
Andrei Sokolov #:

Sim.
Mas acho que não adianta discutir mais a questão, pois não creio que a advertência seja implementada com estas condições.

Desde o início, o ponto de discussão desta questão estava completamente ausente. Você está escrevendo sobre um problema com mql4, na linha em que os problemas de mql5 são discutidos. Se você tivesse dito desde o início que a pergunta diz respeito ao mql4, ninguém lhe teria respondido.

 
Alexey Viktorov #:

Você escreve sobre um problema em mql4, em uma linha onde problemas de mql5 são discutidos.

Onde isso é dito?

 
Alexey Viktorov #:

Desde o início, o ponto de discussão desta questão tem estado completamente ausente.

Alexei, primeiro você tentou apontar, agora você está tentando decidir por outros onde faz sentido e onde não faz.

Se não houver uma resposta construtiva, você não poderia provocar tal correspondência inútil.

 
Andrei Sokolov chamadas de função.

Ontem toda a noite procurando o bug, e esta é a segunda vez por este motivo.

void Trailing()
{
   for(int i=OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber()==magic)
         {
            if(OrderType() == OP_BUY)
            {
               if(Bid >= GetAveragePrice(OP_BUY)+start_tral_level*Point)//OrderOpenPrice()
               {
                  if(Bid >= OrderStopLoss()+(tral_stop+tral_step)*Point || OrderStopLoss()==0)
                  {
                     if(!OrderModify(OrderTicket(), OrderOpenPrice()
                     , NormalizeDouble(Bid-tral_stop*Point, Digits), OrderTakeProfit(), OrderExpiration())) 
                     {
                        Print("Trailing buy err ", GetLastError());
                     }
                  }
               }
            }
            if(OrderType()==OP_SELL)
            {
               if(Ask <= GetAveragePrice(OP_SELL)-start_tral_level*Point)//OrderOpenPrice()
               {
                  if(Ask <= OrderStopLoss()-(tral_stop+tral_step)*Point || OrderStopLoss()==0)
                  {
                     if(!OrderModify(OrderTicket(), OrderOpenPrice()
                     , NormalizeDouble(Ask+tral_stop*Point, Digits), OrderTakeProfit(), OrderExpiration())) 
                     {
                        Print("Trailing sell err ", GetLastError());
                     }
                  }   
               }   
            }   
         }
      }
   }
}
double GetAveragePrice(int in_type)//расчет средней цены позиций
{
   double dRes=-1;
   double dSum=0;
   double dLot=0;
   double dComission=0;
   double dSwap=0;
   int iTotalPos=OrdersTotal();
   for(int cnt=0;cnt<iTotalPos;cnt++)
   {
      if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) Print( "Error Select Order");
      {
         if(OrderType()==in_type && OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
         {
            dSum+=OrderOpenPrice()*OrderLots();
            dLot+=OrderLots();
            dSwap+=OrderSwap();
            dComission+=OrderCommission();
         }
      }    
   }     
   if(in_type==OP_BUY && dLot!=0) dRes=dSum/dLot-dSwap/dLot*Point-dComission/dLot*Point;
   if(in_type==OP_SELL && dLot!=0) dRes=dSum/dLot+dSwap/dLot*Point+dComission/dLot*Point;
   
   return dRes;
}
Você já recebeu muitas respostas construtivas. Resta apenas ao baterista prestar atenção à discussão dos problemas de mql4 nesta linha...
 
Alexey Viktorov #:

Este código deixa claro que se trata de mql4. Gostaria de ter prestado atenção a ele no início.

Você já recebeu muitas respostas construtivas. Resta apenas à Tumblr prestar atenção à discussão dos problemas de mql4 neste tópico...

Onde se diz queapenas problemas de mql5 são discutidos?

 
Andrei Sokolov #:

Então, onde diz queapenas os problemas de mql5 são discutidos?

O mql4 está em reserva - há uma seção separada no fórum para isso. Tudo o resto é mql5