Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 330

 
ramis866:
Kann mir jemand sagen, wie man EAs verwendet?
Siehe Hilfe: Einrichten und Ausführen von EAs.
 
Leute! Wenn der Zeitrahmen geändert wird, wird der EA neu gestartet. Infolgedessen werden alle gezeichneten Grafiken an die Standardansicht zurückgegeben. Wie kann ich verhindern, dass er neu gestartet wird, wenn ich den Zeitrahmen ändere?
 
net:
Leute! Wenn wir den Zeitrahmen ändern, wird der EA neu gestartet. Infolgedessen werden alle gezeichneten Diagramme auf ihr Standardbild zurückgesetzt. Wie kann ich den Neustart deaktivieren, wenn ich den Zeitrahmen ändere?

Wäre es besser, eine Nuance im Expert Advisor zu korrigieren, so dass das von ihm gezeichnete Diagramm nach dem Wechsel der TF korrekt angezeigt wird?

 
net:
Leute! Wenn Sie den Zeitrahmen ändern, wird der Expert Advisor neu gestartet. Infolgedessen werden alle gezeichneten Diagramme wieder in der Standardansicht angezeigt. Wie kann ich den Neustart deaktivieren, wenn ich den Zeitrahmen ändere?

Man kann es nicht verbieten. Und ist es notwendig, die Karte zu speichern? Schließlich können alle Konstruktionen für jeden Zeitrahmen des Charts stark variieren.Nehmen Sie den MACD-Indikator auf verschiedenen Zeitrahmen des Charts als Beispiel.Und wenn die Chartdarstellung notwendig ist, müssen Sie die Logik des Expert Advisors ändern.

Der Expert Advisor und der Indikator müssen nach dem Wechsel der Chartperiode neu gestartet werden - das ist die Logik der Funktion OnInit() - Handler des Init-Ereignisses:

Init

Unmittelbar nachdem das Client-Terminal ein Programm (Expert Advisor oder benutzerdefinierter Indikator) geladen und mit der Initialisierung der globalen Variablen begonnen hat, wird ein Init-Ereignis gesendet, das von der Funktion OnInit() verarbeitet wird, sofern sie eine solche hat. Dieses Ereignis wird auch nach einem Wechsel des Wertpapiers und/oder der Chartperiode, nach einer Neukompilierung des Programms in MetaEditor, nach einer Änderung der Eingabeparameter eines Expert Advisors oder eines benutzerdefinierten Indikatoreinstellungsfensters erzeugt. Der Expert Advisor wird auch initialisiert, nachdem das Konto geändert wurde. Das Ereignis Init wird nicht für Skripte erzeugt.

 
barabashkakvn:

Man kann es nicht verbieten. Und ist es notwendig, die Karte zu speichern? Schließlich können alle Konstruktionen für jeden Zeitrahmen des Charts stark variieren.Nehmen Sie den MACD-Indikator auf verschiedenen Zeitrahmen des Charts als Beispiel.Und wenn die Chartdarstellung notwendig ist, müssen Sie die Logik des Expert Advisors ändern.

Der Expert Advisor und der Indikator müssen nach dem Wechsel der Chartperiode neu gestartet werden - das ist die Logik der Funktion OnInit () - Handler des Init-Ereignisses:

Dem kann ich nicht ganz zustimmen. Natürlich ist es notwendig, neu zu starten, aber es ist notwendig für die Einsparung von Ressourcen, vor allem für multitemporale Indikatoren / Berater mit einer großen Anzahl von grafischen Objekten - Sie können einige Teile der Initialisierung zu umgehen, insbesondere, Neuberechnung der bereits gebaut. D.h. wenn nach der Logik (die ich persönlich für richtig halte) nach der Deinitialisierung die grafischen Konstruktionen gelöscht werden, dann sollte der Grund der TF-Änderung verarbeitet werden (ohne die Konstruktionen zu löschen). Wenn Sie wollen, ist es besser, die Sichtbarkeit von Objekten durch TF anzupassen, ohne die Objekte selbst neu zu erstellen.
 
Tapochun:
Dem kann ich nicht ganz zustimmen. Natürlich ist es notwendig, neu zu starten, aber um Ressourcen zu sparen, gerade bei multitemporalen Indikatoren/Advisoren mit einer großen Anzahl von grafischen Objekten - können Sie einige Teile der Initialisierung umgehen, insbesondere die Neuberechnung der bereits erstellten. D.h. wenn nach der Logik (die ich persönlich für richtig halte) nach der Deinitialisierung die grafischen Konstruktionen gelöscht werden, dann sollte der Grund der TF-Änderung verarbeitet werden (ohne die Konstruktionen zu löschen). Wenn Sie wollen, ist es besser, die Sichtbarkeit von Objekten durch TF anzupassen, ohne die Objekte selbst neu zu erstellen.
Alles liegt in den Händen des Programmierers.
 

Können Sie mir sagen, wie ich den Mindestwert einer Variablen vom Typ double aus iCustom-Puffern ermitteln kann, von denen es 8 gibt?

Ich denke, das Problem wird durch das Array gelöst, aber wie man es schreibt, weiß ich nicht.

Bitte um Hilfe!

 

Hallo an alle, sowohl Trittbrettfahrer als auch Profis, ich habe keine Zeit, alle Memoiren des Forums neu zu lesen, ruhig durch das Prinzip des Parkour lernen wir MQ.............

Vobsobschestvya aktuelles Problem: Ich habe das Panel aus dem Beispiel heruntergeladen, angepasst es in meinem EA, jetzt ist die Aufgabe zu aktivieren und deaktivieren Sie dieses Panel in den Einstellungen

also im Code

Ich schreibe in Variablen:

input bool vkl =false;//Panel löschen

Ich erkläre weiter

wenn //

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

DeleteInfoPanel();

wenn (vkl=false);

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

dann einen Fehler oder etwas anderes, das er nicht versteht))

Wenn Sie wissen, wie man es richtig macht, oder mir zeigen können, wo ich eine Datei mit einem Beispiel finden kann

 
alhoya:

Können Sie mir sagen, wie ich den Mindestwert einer Variablen vom Typ double aus iCustom-Puffern ermitteln kann, von denen es 8 gibt?

Ich denke, das Problem wird durch das Array gelöst, aber wie man es schreibt, weiß ich nicht.

Bitte um Hilfe!

Nachdem Sie mit iCustom ein Handle des benutzerdefinierten Indikators erhalten haben, kopieren Sie den Wert aus dem analysierten Puffer des benutzerdefinierten Indikators in Ihren Puffer mit CopyBuffer in OnCalculate(). Es bleibt, um den minimalen Wert in Ihrem Puffer mit ArrayMinimum zu finden.
 
aleks557:

...

Um etwas zu löschen, muss es zunächst erstellt werden.

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

Und noch etwas: Wenn Sie die EA-Eigenschaften ändern (in den Eingabeparametern haben Sie die Bedingung true gesetzt - Sie wollen den EA löschen), lässt diese Bedingung Sie das Panel nicht löschen:

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

  }

Diese Bedingung funktioniert nur, wenn Sie den Expert Advisor aus dem Diagramm löschen.

Grund der Beschwerde: