Errori, bug, domande - pagina 1506

 
DV2010:

Si prega di perdonare qualsiasi informazione incompleta.

1. le informazioni sono nella scheda Log:

2. L'indicatore testato per la rimozione è il Bollinger Bands standard:

- il file dell'indicatore si trova in C:\Program Files\Alpari Limited MT5\MQL5\Indicators\Examples\BB.ex5;

- Il file compilato viene aggiunto manualmente al grafico;

- entrambi i file sono allegati a questo post.

3. Codice completo di Expert Advisor che rimuove l'indicatore e sul quale viene rilevato il bug:

   void OnInit(){
      ChartIndicatorDelete(0,0,"Bollinger Bands");
   } 

Risultato del test:

Dopo aver trascinato un tale "Expert Advisor" (nell'applicazione - DeleteInd.ex5) sul grafico

Le Bande di Bollinger aggiunte manualmente al grafico vengono cancellate, ma il grafico non viene più scalato quando le dimensioni del grafico cambiano.

Grazie per una domanda così dettagliata e ben formattata (nessuno ha scritto così da molto tempo!).

Quello che ho in mente è questo:

  1. Aggiungo manualmente l'indicatore BB dal file ...\MQL5\Indicators\Examples\BB.mq5.
  2. Eseguo l'Expert Advisor sullo stesso grafico. Ho aggiunto l'Expert Advisor stesso:
    //+------------------------------------------------------------------+
    //|                                                      ProjectName |
    //|                                      Copyright 2012, CompanyName |
    //|                                       http://www.companyname.net |
    //+------------------------------------------------------------------+
    void OnInit()
      {
       ResetLastError();
       if(!ChartIndicatorDelete(0,0,"Bollinger Bands"))
          Print("Error delete BB ",GetLastError());
      }
    //+------------------------------------------------------------------+
    Ottengo un errore

    ERRARE_INDICATORE_CARTOGRAFIA_CANNOT_DEL

    4115

    Errore quando si cancella l'indicatore dal grafico


Questo errore si verifica perché dopo la cancellazione dell'indicatore dall'EA, la finestra del grafico dove BB era, anche se possiamo vederlo, ma in realtà è già cancellato. Per verificarlo, dopo aver eseguito l'Expert Advisor, passate ad un altro profilo nel terminale e poi tornate indietro (al vecchio profilo) e trovate che il grafico si è sciacquato come una mucca.

La mia configurazione:

2016.02.11 18:47:04.915 Terminal        MetaTrader 5 x64 build 1241 started (MetaQuotes Software Corp.)
2016.02.11 18:47:04.915 Terminal        Windows 10 Pro (x64 based PC), IE 11.63, UAC, Intel Core i3-3120 M  @ 2.50 GHz, RAM: 785 / 3981 Mb, HDD: 68822 / 233310 Mb, GMT+02:00
2016.02.11 18:47:04.915 Terminal        C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\43 B472C43247368C5B97C7F22A1AE963
File:
DeleteInd.mq5  1 kb
 
Karputov Vladimir:

Grazie per una domanda così dettagliata e ben scritta (è passato molto tempo da quando qualcuno ha scritto così!).

Ecco cosa sta succedendo:

  1. Aggiungo manualmente l'indicatore BB dal file ...\MQL5\Indicators\Examples\BB.mq5.
  2. Sto eseguendo l'Expert Advisor sullo stesso grafico. Ho aggiunto alcune modifiche all'Expert Advisor:
    Ottengo un errore

    ERRARE_INDICATORE_CARTOGRAFIA_CANNOT_DEL

    4115

    Errore quando si cancella l'indicatore dal grafico


Questo errore si verifica perché dopo la cancellazione dell'indicatore dall'EA, la finestra del grafico dove BB era, anche se possiamo vederlo, ma in realtà è già cancellato. Per verificarlo, dopo aver eseguito l'Expert Advisor, passate ad un altro profilo nel terminale e poi tornate indietro (al vecchio profilo) e trovate che il grafico si è sciacquato come una mucca.

La mia configurazione:

Quando eseguo il tuo codice nel log ottengo solo:

2016.02.11 20:14:01.996    Experts    expert DeleteInd (XAUUSD,M1) loaded successfully

Ma dopo che sono passato ad un altro profilo e sono tornato indietro la finestra è assente (anche se le citazioni in essa stavano cambiando dopo l'aggiunta di un Expert Advisor).

Significa che si tratta di un bug? Per quanto ho capito, la funzione ChartIndicatorDelete() non dovrebbe portare a questo comportamento anomalo di un grafico. È possibile ripararlo?

 
DV2010:

Quando eseguo il tuo codice, lo ottengo solo nel registro:

2016.02.11 20:14:01.996    Experts    expert DeleteInd (XAUUSD,M1) loaded successfully

Ma dopo essere passato a un altro profilo e dopo essere tornato indietro la finestra è assente (anche se le quotazioni in essa stavano cambiando dopo aver aggiunto l'Expert Advisor).

Significa che si tratta di un bug? Per quanto ho capito, la funzione ChartIndicatorDelete() non dovrebbe portare a questo comportamento anomalo di un grafico. È possibile ripararlo?

L'ho già segnalato al Service Desk.
 
Ci hanno suggerito di cambiare la modalità dell'Expert Advisor tra Expert Advisor e Indicatore per avere un unico file. Lo stesso prodotto sarà installato su terminali diversi.

Ho fatto uno scambio. Ma quello che è successo è il seguente: se compilo il file mq4 nella cartella Experts, il programma funziona solo come EA, come indicatore (quando lo copio nella cartella Indicators) non è nemmeno impostato sul grafico. Ma se lo ricompilo in questa cartella, tutto va bene. Lo stesso vale per l'EA, non sarà installato se è stato compilato nella cartella Indicators. Per favore, ditemi qual è la ragione di questo? La modalità di compilazione è rigorosa, non ci sono errori.

 

Nell'ultima build di MT5 1241 la funzione ChartIndicatorDelete "incasina" il grafico. Il grafico non viene ridisegnato quando si ridimensiona, il grafico non viene salvato quando si chiude il terminale, ecc.

Questo è già stato risolto. Si prega di attendere la prossima build

 
Igor Ramensky:
Lo sportello ha avvertito che ci dovrebbe essere un solo file,
Puoi chiedere il numero di applicazione al service desk?
 
Cari sviluppatori, potreste dirmi se la ricorsione di funzioni e metodi di classe è permessa in MQL? Faccio una chiamata ricorsiva al metodo e ottengo uno stack overflow.
 
coderex:
Cari sviluppatori, potreste consigliarmi se la ricorsione di funzioni e metodi di classe è permessa in MQL? Sto facendo una chiamata ricorsiva al metodo e ottengo uno stack overflow.

Certo che è permesso. Altrimenti non si otterrebbe uno stack overflow.

E cosa vi aspettavate?

Controlla la profondità di ricorsione in qualche modo?

 
Slawa:

Certo che è permesso. Altrimenti non si otterrebbe uno stack overflow.

Cosa vi aspettavate?

Controlla la profondità della ricorsione in qualche modo?

L'ho già capito :) naturalmente mi dispiace di essere inciampato, non uso la ricorsione da molto tempo e ho dimenticato il controllo della profondità della ricorsione...
 
Quanto spesso si possono fare le attivazioni? O dopo un'attivazione, quanto tempo prima può avvenire l'attivazione successiva?
Motivazione: