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

 
Vladimir Karputov:

Ich hoffe, Sie erstellen Indikator-Handles EINMAL in OnInit()?

Die Rechentiefe hängt vom Indikator ab. Seltene Indikatoren schränken die Tiefe zwangsweise ein - in der Regel berechnen sie alle die gesamte Historie. Daher kann die folgende Variante sinnvoll sein: die für die Tiefe verantwortliche Variable in den Indikator einzuführen und diesen Parameter dann über iCustom im Expert Advisor zu übergeben.

1. Ja, ich verstehe, dass es gut ist, dies einmal in der Initiation zu tun. Das Problem ist jedoch, dass die Eingabeparameter der Indikatoren variieren können. Bei der Spektralanalyse werden zum Beispiel die Resonanzfrequenzen berechnet, und das Ergebnis der Berechnung ist die Periode des verwendeten MA. Und wenn Sie MA-Daten für eine neue Dimension anfordern, handelt es sich um einen neuen Handle. Praktisch ändern sich die Frequenzen nicht bei jedem Balken, so dass derselbe MA-Handle lange genug verwendet wird (~ Minuten). Doch irgendwann kommt der Zeitpunkt, an dem sich der Griff ändert. Und dann muss ich entweder eine Reihe von Handles verwenden oder ein einziges Handle verwenden, das aber regelmäßig neu berechnet wird. Hier kommt die Wirtschaft ins Spiel.

2. iCustom habe ich beherrscht. Aber wie lässt sich die Berechnungstiefe im Indikator begrenzen? Ich kann es nicht im technischen Bereich machen. Offensichtlich muss ich viele benutzerdefinierte Klone von technischen Indikatoren erstellen. Natürlich ist das lästig, aber es sollte wirksam sein. Danke für den Hinweis. Das ist eine gute Idee. Ich danke Ihnen.

 
User_mt5:

1. Ja, soweit ich weiß, wird dies normalerweise einmal im Unternehmen gemacht. Die Frage ist jedoch, dass sich die Eingabeparameter der Indikatoren ändern können.

Die Entwickler können SB schreiben, wo Indikatoren im MQL4-Stil gehandhabt werden können, ohne ihre Effizienz zu verlieren. D.h. alle Caches und Handles sind in SB versteckt.

 
User_mt5:

1. Ja, soweit ich weiß, wird dies normalerweise einmal im Unternehmen gemacht. Das Problem ist jedoch, dass die Eingabeparameter der Indikatoren variieren können. Bei der Spektralanalyse werden zum Beispiel die Resonanzfrequenzen berechnet, und das Ergebnis der Berechnung ist die Periode des verwendeten MA. Und wenn Sie MA-Daten für eine neue Dimension anfordern, handelt es sich um einen neuen Handle. Praktisch ändern sich die Frequenzen nicht bei jedem Balken, so dass derselbe MA-Handle lange genug verwendet wird (~ Minuten). Doch irgendwann kommt der Zeitpunkt, an dem sich der Griff ändert. Und dann muss ich entweder eine Reihe von Handles verwenden oder ein einziges Handle verwenden, das aber regelmäßig neu berechnet wird. Das ist der Punkt, an dem die Wirtschaft ins Spiel kommt.

2. iCustom habe ich beherrscht. Aber wie lässt sich die Berechnungstiefe im Indikator begrenzen? Ich kann es nicht im technischen Bereich machen. Offensichtlich muss ich eine Menge benutzerdefinierter Klone von technischen Indikatoren erstellen. Natürlich ist das lästig, aber es sollte wirksam sein. Danke für den Hinweis. Das ist eine gute Idee. Ich danke Ihnen.


1. In diesem Fall ist es wahrscheinlich besser, ein unbenutztes Handle zu löschen und ein neues zu erstellen (die Hauptsache ist, die Kontrolle, um nicht eine Million Handles in OnTick() zu schlagen :) ).

2. Erstellen Sie eine Kopie des eingebauten Indikators, aber mit einem anderen Namen (fügen Sie z. B. "depth of history" zu seinem Namen hinzu) und führen Sie einen neuen Parameter ein: InpDepthHistory. Das heißt, Sie müssen neue benutzerdefinierte Indikatoren schreiben.

 
User_mt5:

1. Ja, soweit ich weiß, wird dies normalerweise einmal im Unternehmen gemacht. Das Problem ist jedoch, dass die Eingabeparameter der Indikatoren variieren können. Bei der Spektralanalyse werden zum Beispiel die Resonanzfrequenzen berechnet, und das Ergebnis der Berechnung ist die Periode des verwendeten MA. Und wenn Sie MA-Daten für eine neue Dimension anfordern, handelt es sich um einen neuen Handle. Praktisch ändern sich die Frequenzen nicht bei jedem Balken, so dass derselbe MA-Handle lange genug verwendet wird (~ Minuten). Doch irgendwann kommt der Zeitpunkt, an dem sich der Griff ändert. Und dann muss ich entweder eine Reihe von Handles verwenden oder ein einziges Handle verwenden, das aber regelmäßig neu berechnet wird. Das ist der Punkt, an dem die Wirtschaft ins Spiel kommt.

2. iCustom habe ich beherrscht. Aber wie lässt sich die Berechnungstiefe im Indikator begrenzen? Ich kann es nicht im technischen Bereich machen. Offensichtlich muss ich eine Menge benutzerdefinierter Klone von technischen Indikatoren erstellen. Natürlich ist das lästig, aber es sollte wirksam sein. Danke für den Hinweis. Das ist eine gute Idee. Ich danke Ihnen.

Soweit ich verstehe, wollen Sie mit iCustom() wie in mql4 nur einen Wert erhalten, aber Sie berücksichtigen nicht, dass mql4 den Indikator bei der ersten Verwendung auch für die gesamte Historientiefe neu berechnet. Auf die gleiche Weise wird sie bei einer Änderung mindestens eines Parameters neu berechnet.

Daraus schließen wir: Sie sollten sich nicht darum kümmern. Wenn der "alte" Indikator nicht benötigt wird, können Sie ihn einfach löschen und ein Handle des Indikators mit anderen Parametern erhalten.

 
fxsaber:

Entwickler können eine SB schreiben, in der Indikatoren im MQL4-Stil gehandhabt werden können, ohne an Effizienz zu verlieren. D.h. alle Caches und Handles sind in der SB versteckt.

Tut mir leid, ich verstehe das nicht. Ist das Wort Entwickler hier derjenige, der MT geschaffen hat, oder bin ich eine sündige Anwendung? Und SB ist...?

 
Vladimir Karputov:

1. In diesem Fall ist es wahrscheinlich besser, ein unbenutztes Handle zu löschen und ein neues zu erstellen (die Hauptsache ist, dass Sie sicherstellen, dass Sie nicht eine Million Handles in OnTick() schlagen :)) ).

2. Erstellen Sie eine Kopie des eingebauten Indikators, aber mit einem anderen Namen (fügen Sie z. B. "depth of history" zu seinem Namen hinzu) und führen Sie einen neuen Parameter ein: InpDepthHistory. Das heißt, Sie sollten neue benutzerdefinierte Indikatoren schreiben.

1. Ja. Bisher habe ich ein 3-dimensionales Array, das nur Griffe enthält. Aber jetzt werde ich anscheinend alles neu ordnen.

2. Ja, es gibt fast alle Codes der technischen Indikatoren. Und Sie können Ihre eigenen Texte schreiben.

Ich danke Ihnen.

 
User_mt5:

Tut mir leid, ich versteh's nicht. Sind die Wortentwickler hier diejenigen, die MT geschaffen haben, oder bin ich ein sündiger Anwender? Und SB ist...?

MetaQuotes kann auf Wunsch eine solche Standardbibliothek erstellen. Die große Frage ist: Ist das notwendig?

 
Alexey Viktorov:

Wie ich es sehe, möchten Sie nur einen Wert mit iCustom() wie in mql4 erhalten, aber Sie berücksichtigen nicht, dass mql4 auch den Indikator für die gesamte Historientiefe bei der ersten Verwendung neu berechnet. Ebenso wird er neu berechnet, wenn mindestens ein Parameter geändert wird.

Daraus ergibt sich die Schlussfolgerung: Kein Grund zur Sorge. Wenn ein "veralteter" Indikator nicht mehr benötigt wird, können Sie ihn einfach löschen und einen gehandhabten Indikator mit anderen Parametern erhalten.

Vielleicht will ich das auch. Aber jetzt will ich das nicht mehr. Sie haben Recht. Wenn man keinen veralteten Indikator braucht, sollte man sie wie Kakerlaken zerquetschen :)

Eine gute Lösung besteht darin, die Tiefe der technischen Klone zu begrenzen. Das spart Ressourcen und Zeit. Das werde ich also jetzt tun.

Ich danke Ihnen.

 
fxsaber:

MetaQuotes kann auf Wunsch eine solche Standardbibliothek erstellen. Die große Frage ist: Ist das notwendig?

Dies ist für künftige Generationen. Ich habe mir einige Beispiele aus der Bibliothek angesehen. Tausende von Zeilen unkommentierten Codes. Ich weiß nicht, wie es anderen geht, aber ich kann das nicht tun. Also danke für die Idee, aber in meinem Fall ist das nicht akzeptabel.
 
User_mt5:
Dies ist für künftige Generationen. Ich habe mir einige Beispiele aus der Bibliothek angesehen. Tausende von Zeilen unkommentierten Codes. Ich weiß nicht, wie es anderen geht, aber ich weiß nicht, wie man das macht. Also danke für die Idee, aber in meinem Fall ist das nicht akzeptabel.

Dies funktioniert jetzt in MT5

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Merkmale der Sprache mql5, Feinheiten und Tricks

fxsaber, 2018.01.09 10:20

Für MQL4-Kenner gibt es eine alte Methode, TFs in MQL5 zu behandeln

Vielleicht findet jemand den MQL4-Ansatz auch bei der Arbeit mit der Tick-Historie nützlich

if (Tick[0].bid > Tick[100].bid) // сравниваем текущий и исторический тики
  Print("Hello World!");

if (High[0] > Close[100]) // https://www.mql5.com/ru/forum/42122/page24#comment_2904023
  Print("Hello World!");

Technisch gesehen hindert Sie nichts daran, dasselbe nur EINMAL mit Indikatoren zu tun (ohne Verlust an Effizienz) und die Lösung in SB zu speichern.