Errori, bug, domande - pagina 3178

 
Andrei Sokolov #:

Ora mi sono imbattuto in un algoritmo in cui dopoOrderSelect() ci sono più chiamate OrderSelect(), quindi penso che sia necessario un avvertimento se dopoOrderSelect() ci sono più chiamate OrderSelect() e la OrderSelect() allegata "seleziona" un altro ordine.

Supponiamo che scriviate un ciclo:
for(int i=...; ....; i++) {
...
}
E all'interno del ciclo, l'iteratore i cambia il suo valore sotto una certa condizione.
Bisogna anche mostrare un avvertimento, non credi?

 
Sergey Gridnev #:
Supponiamo che scriviate un ciclo:
for(int i=...; ....; i++) {
...
}
E all'interno del ciclo, l'iteratore i cambia il suo valore sotto una certa condizione.
Pensi che debba essere generato anche un avvertimento?

+++ Controllo di un biglietto o di una variabile di funzione in una matrice della stessa funzione o struttura, o temperatura e pressione nella x del paziente, non y.

Controllo ZY di x o igc)))) piuttosto che la temperatura))
 
Sergey Gridnev #:
Supponiamo che scriviate un ciclo:
for(int i=...; ....; i++) {
...
}
E all'interno del ciclo, l'iteratore i cambia il suo valore sotto una certa condizione.
Pensi che dovrebbe essere generato anche un avvertimento?

Sì.
Ma penso che non abbia senso discuterne ulteriormente dato che non credo che l'avvertimento sarà implementato con tali condizioni.

 
Andrei Sokolov #:

Sì.
Ma penso che non abbia senso discuterne ulteriormente, perché non credo che l'avvertimento sarà implementato con tali condizioni.

In bayscore è un danno in generale, e anche qui il top-down con i loop non migliorerà l'ambiente di programmazione e l'algorimizzazione.

È solo il rigore e la correttezza degli algoritmi. Non di più. e una comprensione delle regole e delle possibilità della lingua.

 
Andrei Sokolov #:

Sì.
Ma non credo che abbia senso discuterne ulteriormente perché non credo che l'avvertimento sarà attuato con queste condizioni.

Fin dall'inizio il punto di discussione di questa questione era completamente assente. Stai scrivendo di un problema con mql4, nel thread dove si discutono i problemi di mql5. Se avessi detto dall'inizio che la domanda riguarda mql4, nessuno ti avrebbe risposto.

 
Alexey Viktorov #:

Tu scrivi di un problema in mql4, in un thread dove si discutono problemi di mql5.

Dove si dice questo?

 
Alexey Viktorov #:

Fin dall'inizio, il punto di discussione di questo argomento è stato completamente assente.

Alexei, prima hai cercato di indicare, ora stai cercando di decidere per gli altri dove ha senso e dove no.

Se non c'è una risposta costruttiva, non si potrebbe provocare una corrispondenza così inutile.

 
Andrei Sokolov chiamate di funzione.

Ieri tutta la notte alla ricerca del bug, e questa è la seconda volta per questo 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;
}
Hai già ricevuto molte risposte costruttive. Resta solo che il batterista presti attenzione alla discussione sui problemi di mql4 in questo thread...
 
Alexey Viktorov #:

Questo codice rende chiaro che si tratta di mql4. Vorrei averci prestato attenzione all'inizio.

Hai già ricevuto molte risposte costruttive. A Tumblr non resta che prestare attenzione alla discussione sui problemi di mql4 in questo thread...

Dove sta scritto chevengono discussi solo i problemi di mql5?

 
Andrei Sokolov #:

Dove sta scritto chesi discute solo dei problemi di mql5?

mql4 è in riserva - c'è una sezione separata sul forum per esso. Tutto il resto è mql5
Motivazione: