Errori, bug, domande - pagina 347

 
Quindi è un bug nel terminale o nella storia del server. Ma più probabilmente il terminale, dato che è più probabile che i rapporti della storia del server siano stati recuperati.
 

Urain:
Так что это или баг терминала, или серверной истории. Но скорее терминала, тк отчёты на чемпе скорее с серверной истории восстанавливались.

Questo è forte. Non stavo prestando attenzione. Spiegato chiaramente.
 
Yedelkin:
È divertente. Non stavo prestando attenzione. Spiegato chiaramente.
Questo è tutto, chi si diverte e chi ha due settimane per prendere l'insetto :o)
 
Trovato, è predefinito per l'ordinamento in base al tempo e ha bisogno di ordinare per numero di transazione. Allora è tutto a posto.
 
Urain:
Trovato, è predefinito per l'ordinamento in base al tempo e ha bisogno di ordinare per numero di transazione. Allora tutto è corretto.

Quindi non ci sono errori? Il punto è contare/ordinare gli scambi per numero di biglietto, non per tempo.

Stavo solo esaminando superficialmente i rapporti, non calcolando gli stati di posizione.

 
Renat:

Quindi non ci sono bug? Il punto è contare/ordinare le transazioni per ticket e non per tempo.

Stavo solo esaminando superficialmente i rapporti, non calcolando gli stati di posizione.

Esattamente, è solo che quando si salva un rapporto non c'è automazione di questo processo e deve essere attentamente monitorato. Non credo che tutti gli utenti faranno attenzione a questo e di conseguenza ci saranno dei bug durante l'analisi del rapporto.

ZS Ho aggiunto l'ordinamento dopo aver analizzato il rapporto. Come risultato, tutto ha funzionato per me, ma prevedo che più di un programmatore avrà difficoltà con questa funzione.

 

Durante l'ottimizzazione, il nome del parametro di ottimizzazione viene visualizzato nell'angolo superiore destro del grafico di ottimizzazione.


Quando si osserva l'ottimizzazione, questa iscrizione è fastidiosa perché il nuovo massimo è sempre nascosto dietro questa iscrizione.

Renat, spostiamolo nell'angolo in alto a sinistra! O in basso a destra. O in basso a sinistra... Ovunque, basta che lo tolga dall'angolo in alto a destra, per l'amor di Dio. per favore! :)

// O almeno impallidire e metterlo sullo sfondo in modo che non oscuri le informazioni.

 
MetaDriver:

Durante l'ottimizzazione, il nome del parametro di ottimizzazione viene visualizzato nell'angolo superiore destro del grafico di ottimizzazione.

Quando si osserva l'ottimizzazione, questa iscrizione è fastidiosa perché il nuovo massimo è sempre nascosto dietro questa iscrizione.

Renat, spostiamolo nell'angolo in alto a sinistra! O in basso a destra. O in basso a sinistra... Ovunque, basta che lo tolga dall'angolo in alto a destra, per favore! :)

// O almeno impallidire e metterlo sullo sfondo in modo che non oscuri le informazioni.

In basso a sinistra, e come sfondo.
 

Per favore, ditemi dove ho sbagliato. Sto cercando di scrivere un semplice script che cancelli le posizioni e gli ordini pendenti sullo strumento corrente. Qui:

//+------------------------------------------------------------------+
//|                                                        clean.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   MqlTick current_tick;
   MqlTradeRequest close_request;
   MqlTradeResult  close_result;
   SymbolInfoTick(_Symbol,current_tick);
   int counter01;
   while(check_position()==true);
     {
      PositionSelect(_Symbol);
      close_request.action=TRADE_ACTION_DEAL; close_request.symbol=_Symbol; close_request.volume=PositionGetDouble(POSITION_VOLUME); close_request.type_filling=ORDER_FILLING_AON;
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         close_request.price=current_tick.bid; close_request.type=ORDER_TYPE_SELL;
        }
      else
        {
         close_request.price=current_tick.ask; close_request.type=ORDER_TYPE_BUY;
        }
      OrderSend(close_request,close_result);
     }
   do
     {
      for(counter01=1; counter01<=OrdersTotal(); counter01++)
        {
         close_request.order=OrderGetTicket(counter01-1);
         if(OrderGetString(ORDER_SYMBOL)==_Symbol)
           {
            close_request.action=TRADE_ACTION_REMOVE;
            OrderSend(close_request,close_result);
           }
        }
     }
   while(check_order()==true);
   if(GetLastError()!=0)
      Print("ошибка код ",GetLastError()," функция ",__FUNCTION__," строка ",__LINE__);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool check_position() // функция проверяет наличие позиции
  {
   int counter01;
   bool position_exsist=false;
   for(counter01=0; counter01<PositionsTotal(); counter01++)
     {
      if(PositionGetSymbol(counter01)==_Symbol)
        {
         position_exsist=true;
         break;
        }
     }
   return(position_exsist);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool check_order() // функция проверяет наличие ордеров
  {
   int counter01;
   bool order_exsist=false;
   for(counter01=0; counter01<OrdersTotal(); counter01++)
     {
      OrderGetTicket(counter01);
      if(OrderGetString(ORDER_SYMBOL)==_Symbol)
        {
         order_exsist=true;
         break;
        }
     }
   return(order_exsist);
  }
//+------------------------------------------------------------------+
Lo script si blocca quando c'è una posizione. Durante il debug, ho scoperto che si blocca quando controlla la posizione. Quando la condizione del ciclo while(check_position()==true) inizia ad essere controllata, il controllo viene passato a check_position() e la prima volta che la funzione viene eseguita normalmente, restituisce true. Ma poi il corpo del ciclo non viene eseguito; ricomincia a controllare la condizione e il controllo arriva a check_position() e dopo return(order_exsist) l'operatore non torna alla condizione del ciclo; va all'inizio della funzione check_position(). Per favore, ditemi dove ho sbagliato.
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Основы языка / Операторы / Оператор возврата return - Документация по MQL5
 
molotkovsm:

Per favore, ditemi dove ho sbagliato. Sto cercando di scrivere un semplice script che cancelli le posizioni e gli ordini pendenti sullo strumento corrente. Ecco qui:

Lo script si blocca quando c'è una posizione. Durante il debug, ho scoperto che si blocca quando controlla la posizione. Quando la condizione del ciclo while(check_position()==true) inizia il controllo, il controllo viene passato alla funzione check_position() e alla prima volta la funzione viene eseguita normalmente, restituisce true. Ma poi il corpo del ciclo non viene eseguito; ricomincia a controllare la condizione e il controllo arriva a check_position() e dopo return(order_exsist) l'operatore non torna alla condizione del ciclo; va all'inizio della funzione check_position(). Per favore, ditemi dove devo essermi sbagliato.

Se c'è una posizione, si otterrà un ciclo infinito perché

while(check_order()==true);

Uguale a

while(check_order()==true)
{
 //  пустой оператор
}
Non c'è modo di uscire dal ciclo nel codice perché non c'è nessuna pausa nel corpo dell'operatore;
Motivazione: