Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 330

 
ramis866:
Qualcuno può dirmi come usare gli EA?
Vedere Aiuto: impostazione ed esecuzione degli EA.
 
Ragazzi! Quando il timeframe viene cambiato, l'EA viene riavviato. Di conseguenza, restituisce tutta la grafica disegnata alla vista predefinita. Come posso evitare che si riavvii quando cambio l'orario?
 
net:
Ragazzi! Quando cambiamo il timeframe, l'EA viene riavviato. Come risultato, restituisce tutto il suo grafico disegnato al suo aspetto predefinito. Come posso disabilitare il riavvio quando cambio l'intervallo di tempo?

Sarebbe meglio correggere una sfumatura nell'Expert Advisor, in modo che il grafico disegnato da esso venga visualizzato correttamente dopo il cambiamento del TF?

 
net:
Ragazzi! Quando si cambia timeframe, l'EA viene riavviato. Di conseguenza, restituisce tutto il suo grafico disegnato alla vista predefinita. Come posso disabilitare il riavvio quando cambio l'intervallo di tempo?

Non si può proibire. Ed è necessario salvare il grafico? Dopo tutto, per ogni timeframe del grafico, tutte le costruzioni possono variare drasticamente.Prendiamo come esempio l'indicatore MACD su diversi timeframe del grafico.E se il tracciato del grafico è necessario, è necessario cambiare la logica dell'Expert Advisor.

L'Expert Advisor e l'indicatore devono essere riavviati dopo il cambiamento del periodo del grafico - questa è la logica della funzione OnInit() - gestore dell'evento Init:

Init

Subito dopo che il terminale client carica un programma (Expert Advisor o indicatore personalizzato) e inizia l'inizializzazione delle variabili globali, viene inviato un evento Init, che viene gestito dalla funzione OnInit(), se ne ha una. Questo evento viene generato anche dopo un cambio di titolo e/o periodo del grafico, dopo aver ricompilato il programma in MetaEditor, dopo un cambio di parametri di input da un Expert Advisor o da una finestra di impostazione dell'indicatore personalizzato. Anche l'Expert Advisor viene inizializzato dopo il cambio del conto. L'evento Init non viene generato per gli script.

 
barabashkakvn:

Non si può proibire. Ed è necessario salvare il grafico? Dopo tutto, per ogni timeframe del grafico, tutte le costruzioni possono variare drasticamente.Prendiamo come esempio l'indicatore MACD su diversi timeframe del grafico.E se il tracciato del grafico è necessario, è necessario cambiare la logica dell'Expert Advisor.

L'Expert Advisor e l'indicatore devono essere riavviati dopo il cambiamento del periodo del grafico - questa è la logica della funzione OnInit () - gestore dell'evento Init:

Non sono del tutto d'accordo. Naturalmente, è necessario riavviare, ma è necessario per il risparmio di risorse, soprattutto per gli indicatori/consiglieri multitemporali con un gran numero di oggetti grafici - è possibile bypassare alcune parti dell'inizializzazione, in particolare, il ricalcolo del già costruito. Cioè se per logica (che personalmente ritengo corretta) dopo la deinizializzazione le costruzioni grafiche vengono cancellate, allora il motivo del cambiamento TF dovrebbe essere elaborato (senza cancellare le costruzioni). Se volete, è meglio regolare la visibilità degli oggetti da TF senza ricostruire gli oggetti stessi.
 
Tapochun:
Non sono del tutto d'accordo. Naturalmente, è necessario riavviare, ma per il bene del risparmio di risorse, solo per indicatori/consiglieri multitemporali con un gran numero di oggetti grafici - è possibile bypassare alcune parti dell'inizializzazione, in particolare, il ricalcolo dei già costruiti. Cioè se per logica (che personalmente ritengo corretta) dopo la deinizializzazione le costruzioni grafiche vengono cancellate, allora il motivo del cambiamento TF dovrebbe essere elaborato (senza cancellare le costruzioni). Se volete, è meglio regolare la visibilità degli oggetti da TF senza ricostruire gli oggetti stessi.
Tutto è nelle mani del programmatore.
 

Potete dirmi come trovare il valore minimo della variabile di tipo doppio dai buffer iCustom, ce ne sono 8.

Penso che si risolva con l'array, ma come scriverlo non lo so.

Aiuto plz!

 

Ciao a tutti, sia scrocconi che professionisti, non ho tempo di rileggere tutte le memorie del forum, tranquillamente dal principio del parkour impariamo MQ.............

Vobsobschestvya problema attuale: ho scaricato il pannello dall'esempio, l'ho adattato nel mio EA, ora il compito è di abilitare e disabilitare questo pannello nelle impostazioni

quindi nel codice

Scrivo in variabili :

input bool vkl =false;//cancella pannello

Spiego ulteriormente

se //

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Вывести в журнал причину деинициализации
   Print(GetDeinitReasonText(reason));
//--- При удалении с графика
   if(reason==REASON_REMOVE)
      //--- Удалить все объекты с графика, которые относятся к информационной панели   
      DeleteInfoPanel();
      
     
  }

DeleteInfoPanel();

se (vkl=falso);

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

poi un errore o qualcos'altro che non mi capisce))

Se sapete come farlo correttamente con un esempio, o mi mostrate dove trovare un file con un esempio

 
alhoya:

Potete dirmi come trovare il valore minimo della variabile di tipo doppio dai buffer iCustom, ce ne sono 8.

Penso che si risolva con l'array, ma come scriverlo non lo so.

Aiuto plz!

Dopo aver ottenuto un handle dell'indicatore personalizzato usando iCustom, copiate il valore dal buffer analizzato dell'indicatore personalizzato al vostro buffer usando CopyBuffer in OnCalculate(). Resta da trovare il valore minimo nel vostro buffer usando ArrayMinimum.
 
aleks557:

...

Per cancellare qualcosa, deve essere prima creato.

void DeleteInfoPanel()
  {
   DeleteObjectByName("InfoPanelBackground");   // Удалить фон панели
   DeleteObjectByName("InfoPanelHeader");       // Удалить заголовок панели
//--- Удалить свойства позиции и их значения

E un'altra cosa: quando cambi le proprietà dell'EA (nei parametri di input hai impostato la condizione true - vuoi cancellare l'EA), questa condizione non ti permetterà di cancellare il pannello:

void OnDeinit(const int reason)
  {
//--- Вывести в журнал причину деинициализации
   Print(GetDeinitReasonText(reason));
//--- При удалении с графика
   if(reason==REASON_REMOVE)
      //--- Удалить все объекты с графика, которые относятся к информационной панели   
      DeleteInfoPanel();

  }

Questa condizione funziona solo se si elimina l'Expert Advisor dal grafico.