Errori, bug, domande - pagina 659

 
antt:
Quale punto di accesso?
Cipro.
 

La situazione è la seguente. Per esempio, ci sono posizioni aperte il venerdì. Abbiamo impostato Stop Loss e Take Profit. Senza aspettare la fine della sessione di trading, lasciamo queste posizioni, disabilitiamo la comunicazione e mettiamo il computer a dormire (modalità Hibernate). Ci accendiamo il giorno dopo. La connessione a Internet è stabilita. C'è la connessione al server. Sabato. Il mercato è chiuso. Possiamo vedere che le posizioni sono state chiuse, alcune con Stop Loss e altre con Take Profit. Queste operazioni possono essere viste nella scheda Storia del terminale di trading:

Richiediamo la storia degli ultimi tre scambi:

   datetime Start=0;
//---
   if(!HistorySelect(Start,TimeCurrent())) // Загрузим историю сделок
     {
      Print("Ошибка при загрузке истории!"); return;
     }
   else
     {
      ulong ticket=0;
      datetime time=0;
      string symbol="",comment="";
      //---
      int total_deals=HistoryDealsTotal();
      //---
      for(int d=total_deals-1; d>=total_deals-3; d--)
        {
         if((ticket=HistoryDealGetTicket(d))>0) // Если сделка выбрана
           {
            symbol=HistoryDealGetString(ticket,DEAL_SYMBOL);
            comment=HistoryDealGetString(ticket,DEAL_COMMENT);
            time=(datetime)HistoryDealGetInteger(ticket,DEAL_TIME);
            //---
            Print("<-- symbol: ",symbol,"; comment: ",comment,"; time: ",time," -->");
           }
        }
     }

E vediamo che la storia non corrisponde. Cioè, possiamo vederlo nel terminale, ma non possiamo ottenerlo programmaticamente.

//---

È un bug o così è stato progettato e ora è possibile ottenere queste offerte programmaticamente solo quando il mercato si apre?

P.S. Ho anche provato in questo modo, ma non aiuta:

#define Milliseconds_Ahead 200
//---
datetime TimeCurrentAhead()
  {
   return(TimeCurrent()+Milliseconds_Ahead);
  }
 

tol64:

...

P.S. Ho provato anche io, non funziona:

Ho trovato una via d'uscita. Nella finestra di Market Watch puoi vedere il tempo di uscita. Cioè, l'ultima volta in cui c'è stata una connessione al server e il tick è arrivato (last tick time):

Cioè, nel mio caso 18:43:30.

Si scopre che ancora usando questa funzione...:

#define Milliseconds_Ahead 10000
//---
datetime TimeCurrentAhead()
  {
   return(TimeCurrent()+Milliseconds_Ahead);
  }

...puoi risolvere la situazione, ma devi fare la richiesta con un margine significativo. Oppure potete fare a meno di questa stampella e dimenticarvene per sempre e usare la funzione TimeLocal() quando fate richieste di cronologia, se viene usata in tempo reale. Nel tester, usate TimeCurrent() o TimeCurrentAhead(). Qualcosa del genere:

datetime ChoiceTimeFunction()
  {
   if(NotTest())
     { return(TimeLocal()); }
   else
     { return(TimeCurrent()+Milliseconds_Ahead); }
//---
   return(TimeLocal());
  }

Allora questo punto dovrebbe essere coperto nell'aiuto o qualcosa del genere...

 

È possibile recuperare la grafica cancellata nel terminale:

Aprire cancellato

Apri un sottomenu di grafici cancellati da ripristinare. I grafici cancellati vengono salvati se "Save deleted windows for reopening" è selezionato nelle impostazioni del terminale. Tutti i modelli dei grafici cancellati sono salvatinella directory/Profiles/Deleted. Quando questo comando viene eseguito, si accede a questi modelli e si apre il grafico corrispondente. Qualsiasi modello di grafico cancellato può essere eliminato usando il comando corrispondente in questo menu.

La situazione è la seguente. L'Expert Advisor è appeso al grafico e vengono visualizzati i suoi pannelli informativi. Nella funzione OnDeinit(), specifico che se il grafico viene chiuso, i pannelli informativi devono essere cancellati, in modo da salvare il modello per il ripristino senza oggetti. Chiudo il grafico. Usando l'opzione Open Deleted, lo ripristino, ma viene ripristinato con oggetti, e in modo errato (alcuni ci sono, altri no). L'Expert Advisor ripristina tutto dopo l'inizializzazione. Lascia un residuo sgradevole e una sensazione di lavoro scadente. Lo valuto dal punto di vista degli utenti di Expert Advisor, non da quello del terminale. In qualsiasi altro evento di deinizializzazione tutto funziona correttamente. Capisco che il salvataggio del template avviene prima della deinizializzazione, perché durante la deinizializzazione gli oggetti sono ancora cancellati, ma hanno il tempo di essere salvati nel template.

 

Ecco il problema...

Per quanto ne so, il terminale "nota" la cronologia aggiuntiva sul server e una sorta di "vuoti" nella cronologia locale e inizia freneticamente a pomparla automaticamente per riempire questi vuoti. Tutto questo è fantastico, naturalmente, ma...

Esiste un fenomeno come i tempi non standard, la cui storia sembra non essere scaricata da nessuna parte ma costruita automaticamente "nella mente" dal terminale. Ed ecco cosa ho notato. Se tutto va bene con l'annotazione dei "vuoti" nella storia e l'autoscaricamento, la situazione con la ricostruzione della storia costruita e poi danneggiata (sia sul disco che nella memoria) di tempi non standard è davvero fuori questione. Bene, il mio terminale ha scaricato tutta la storia, poi ho saltato tutti gli intervalli di tempo e ho scoperto che qualcuno ha rubato un intero segmento di storia recente su H2 e H3 che il terminale non ha mai nemmeno pensato di scaricare o ricreare in locale. È stato utile scaricare il terminale e cancellare manualmente i file dei timeframe appropriati da C:\Program Files\MetaTrader 5\Bases\MetaQuotes-Demo\history\NZDUSD\cache con un ulteriore lancio del terminale, passare aH2 e H3 e aspettare che ricostruisca correttamente la sua storia da zero.

Ovviamente, ci piacerebbe avere un terminale più intelligente che "senta" questi segmenti morsi in qualsiasi momento, compresi quelli non standard, e cerchi immediatamente di riempirli.

---------------

Addendum: anche se, per essere onesti, il terminale non vede proprio nulla. Sono stato seduto per un anno con una curva di storia di minuti, che in realtà inizia con MetaQuotes dal 1999, mentre il mio timeframe era nel 2009 per qualche motivo - e cosa? Dove sono i download automatici? Avevo abbastanza spazio per scaricarli, ma non c'erano download fino ad oggi, finché non ho disinstallato e reinstallato tutto (ho fatto lo stesso prima, ma non ha avuto effetto). Naturalmente, non si tratta nemmeno di riprendere, ma di scaricare completamente tutta la storia da zero dal terminale. Beh, almeno questo è il pane e il burro.

A questo proposito, voglio dare a tutti i programmatori MQL, che fanno il debug dei loro programmi e contano sul consumo dei loro programmi da parte di altri utenti, un avvertimento importante: state attenti alla disponibilità della cronologia, per la quale il vostro prodotto è calcolato: durante i test con cronologia incompleta o sostituita da quella più alta, la velocità di elaborazione sarà buona, ma può succedere che voi o gli utenti dei vostri programmi ruggiscano per il 100% di carico della CPU sui computer moderni e messaggi di errore "infiniti".

 

'f0_34' - espressione di confronto attesa

Puoi dirmi cosa significa questo avvertimento?

 

Di nuovo, un errore di questo tipo è emerso:

L'area problematica è stata identificata. Descrizione dettagliata in Service Desk.

//---

P.S. Completato una richiesta esistente, con un problema simile una volta risolto. Dopo un po' ho visto una notifica vicino al mio profilo. Mi sono collegato a Service Desk e la richiesta è completamente scomparsa. Devo rifare tutto da capo? )))

 
tol64:

Di nuovo, un errore di questo tipo è emerso:

L'area problematica è stata identificata. Descrizione dettagliata in Service Desk.

//---

P.S. Completato una richiesta esistente, con un problema simile una volta risolto. Dopo un po' ho visto una notifica vicino al mio profilo. Mi sono collegato a Service Desk e la richiesta è completamente scomparsa. Devo rifare tutto da capo? )))

L'applicazione e i commenti sono a posto, ma per qualche motivo non è visibile nel profilo.

Ce ne occuperemo sicuramente.

 
MetaQuotes:

La domanda insieme ai commenti sono a posto, ma per qualche motivo non sono visibili nel profilo.

Ci assicureremo di dare un'occhiata.

Per favore, risolvete il problema, perché anche alcune delle mie applicazioni sono sparite del tutto. né in quelle aperte né in quelle chiuse.
 
MetaQuotes:

La domanda insieme ai commenti sono a posto, ma per qualche motivo non sono visibili nel profilo.

Ci assicureremo di dare un'occhiata.

Grazie. Non vedo l'ora che ci siano chiarimenti. Il problema non sta solo iniziando a presentarsi dove ho indicato. L'area di occorrenza è ormai onnipresente.