Errori, bug, domande - pagina 2971

 

È questo il comportamento corretto per le variabili statiche?

Quando si cambiano i timeframes o si cambiano i parametri, il loro valore non cambia:

int OnInit()
  {
   static int my_int=4444;
   Print(my_int);
   my_int=9999;
   return(INIT_SUCCEEDED);
  }

Il risultato dopo aver avviato l'EA e aver cambiato il timeframe:

2021.02.24 16:23:27.999 Test1 (EURUSD,M1)       4444
2021.02.24 16:23:29.913 Test1 (EURUSD,M5)       9999
Variabili statiche

Questo viene dall'aiuto:

Le variabili statiche esistono al momento dell'esecuzione del programma e sono inizializzate una volta prima della chiamata della funzione specializzata OnInit().

Quindi una volta prima di ogni chiamata a OnInit() o una volta prima dell'avvio, anche se la reinizializzazione è più simile a una seconda esecuzione.

Questo succede anche nel tester?

Anche le variabili globali si comportano in questo modo.

 

Quando si cambia timeframes, l'Expert Advisor non si riavvia, continua a lavorare

https://www.mql5.com/ru/docs/runtime/running

При смене символа или таймфрейма графика, к которому эксперт прикреплен, выгрузка и загрузка эксперта не производится. При этом последовательно вызываются обработчики OnDeinit() на старом символе/таймфрейме и OnInit() на новом символе/таймфрейме (если они есть), значения глобальных переменных и статических переменных не сбрасываются. Все события, поступившие для эксперта до завершения инициализации (функции OnInit()), пропускаются.


Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Выполнение программ - Программы MQL5 - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ilyas:

Quando si cambia timeframes, l'Expert Advisor non si riavvia, continua a lavorare

https://www.mql5.com/ru/docs/runtime/running

Ho notato una particolarità che non era presente in MetaTrader prima. Quando elimino un Expert Advisor da un grafico (usando il suo comando del menu contestuale), il grafico si chiude dopo di esso. In precedenza, il grafico non si chiudeva dopo aver eliminato un Expert Advisor.

 
Mihail Matkovskij:

Ho notato una particolarità che non era presente in MetaTrader prima. Quando rimuovo un Expert Advisor da un grafico (usando il suo comando del menu di contesto), il grafico si chiude dopo di esso. In precedenza, il grafico non veniva chiuso dopo aver eliminato un Expert Advisor.

Può essere programmato nell'EA stesso, controllare con un altro EA...

 

in win7 quando si esegue il debug sui dati storici le variabili aggiunte all'osservazione non mostrano i loro valori. quando si esegue il debug sui dati reali tutto funziona.ho specificato i parametri per il debug nelle impostazioni del meta-editor.

risulta che quando si aggiungono variabili, esse non vengono visualizzate immediatamente nella finestra, ma appaiono solo quando il debug viene avviato la prossima volta, ma i loro valori sono già <non implementati>. per favore ditemi cosa impostare per far funzionare il debug

 
Vladimir Pastushak:

Potrebbe essere programmato nell'EA stesso, controlla con un altro EA...

Infatti, ha lanciato l'EA standard sul grafico. L'ho cancellato senza problemi. Ho provato a trovare ChartClose nelle fonti del mio Expert Advisor. Non l'ho trovato da nessuna parte. Non era mia intenzione fin dall'inizio chiudere il grafico quando si cancella un Expert Advisor. Uso elementi standard dell'interfaccia utente, come CAppDialog. Forse, la chiusura del grafico è stata scritta da qualche parte nelle classi standard...

 
Mihail Matkovskij:

Infatti, ha lanciato un EA standard sul grafico. L'ho cancellato senza problemi. Ho provato a trovare ChartClose nelle fonti del mio Expert Advisor. Non l'ho trovato da nessuna parte. La mia idea iniziale era di non chiudere il grafico quando si cancella un Expert Advisor. Uso elementi standard dell'interfaccia utente, come CAppDialog. Forse, la chiusura del grafico è stata scritta da qualche parte nelle classi standard...

Trovato. La classe CAppDialog ha un campo CChart m_chart.

class CAppDialog : public CDialog
  {
...
protected:
   CChart            m_chart;               // object to access chart

QuandoCAppDialog viene cancellato (il suo discendente è usato nel mio Expert Advisor),il distruttore m_chart probabilmente chiuderà il grafico.

//+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CChart::~CChart(void)
  {
   if(m_chart_id!=-1)
      Close();
  }
//+------------------------------------------------------------------+
//| Chart close                                                      |
//+------------------------------------------------------------------+
void CChart::Close(void)
  {
   if(m_chart_id!=-1)
     {
      ChartClose(m_chart_id);
      m_chart_id=-1;
     }
  }

Sfortunatamente, questo processo non può essere tracciato usando il debugger. Ma dopo aver esaminato il codice sorgentedi CAppDialog, così come diCChart, tutto diventa chiaro. Richiamo l'attenzione degli sviluppatori su questo.

 
Mihail Matkovskij:

Trovato. La classe CAppDialog ha il campo CChart m_chart.

QuandoCAppDialog viene rimosso (il suo discendente,CDialog, è usato nel mio Expert Advisor),il distruttore m_chart molto probabilmente chiude il grafico.

Sfortunatamente, questo processo non può essere tracciato usando il debugger. Ma dopo aver esaminato il codice sorgentedi CAppDialog, così come diCChart, tutto diventa chiaro. Vorrei attirare l'attenzione degli sviluppatori su questo.

void CAppDialog::Destroy(const int reason)

Staccandosi dal grafico, tra le altre cose.

 

Potete dirmi perché SignalBaseTotal() restituisce sempre 1000.

Il servizio di segnali di mql5.com ha più di mille segnali trasmessi, ma il terminale ne ha solo mille disponibili. Perché?

Può essere che ci sia un insieme di segnali in questo migliaio, mentre può essere diverso in un'ora?
Документация по MQL5: Управление сигналами / SignalBaseTotal
Документация по MQL5: Управление сигналами / SignalBaseTotal
  • www.mql5.com
SignalBaseTotal - Управление сигналами - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alain Verleyen :

Errore con la struttura derivata in cui non vengono aggiunti nuovi dati quando si salva/carica da file.

@Ilyas Sistemerai questo?
Motivazione: