Diskussion zum Artikel "Anlegen eines mehrwährungsfähigen Indikators unter Verwendung zahlreicher Indikatorzwischenspeicher"
wäre es für solche Indikatoren sinnvoll, auch diese zu sortieren

abhängig von ihren Werten zu sortieren. Wenn es eine solche Funktion gibt, teilen Sie sie bitte mit, damit wir nicht ein Fahrrad erfinden müssen.
es wäre sinnvoll, dies auch in solche Indikatoren aufzunehmen
abhängig von ihren Werten. Wenn es eine solche Funktion gibt, teilen Sie sie bitte mit, damit wir nicht ein Fahrrad erfinden müssen.
Es gibt keine fertige Funktion, aber ich denke, es wird nicht schwierig sein, sie zu skizzieren.
19.05.2010
Hier ist realisiert
Ich danke Ihnen.
Ich möchte nur darauf hinweisen, dass die Synchronisationsmethode nicht immer funktioniert. Hier ist ein Bild. Ein Loch in Anführungszeichen für 24 Stunden, aber alles ist synchronisiert (((.
Das ist sehr schlecht. Warum ist das so, kann ich nicht verstehen, und vor allem, was kann man dagegen tun?
Ich danke Ihnen.
Ich möchte nur darauf hinweisen, dass die Synchronisationsmethode nicht immer funktioniert. Hier ist ein Bild. Ein Loch in Anführungszeichen für 24 Stunden, aber alles ist synchronisiert (((.
Das ist sehr schlecht. Warum ist das so, kann ich nicht verstehen, und vor allem, was kann man dagegen tun?
Der Indikator verwendet 2 Arten der Synchronisation
1 durch die Anzahl der Balken (es sollten mehr Balken auf dem Chart sein als die erforderliche Historie von standardmäßig 500 Balken) - diese Bedingung ist offensichtlich erfüllt.
2 nach dem Zeitpunkt der Eröffnung des Nullbalkens für jedes Währungspaar - diese Bedingung ist anscheinend ebenfalls erfüllt.
Ich denke, es lohnt sich, eine dritte Art der Synchronisation hinzuzufügen, um die Eröffnungszeit jedes Balkens für jedes Paar analog zur zweiten Art der Synchronisation zu überprüfen.
Da ich etwas mehr Zeit haben werde, werde ich auch diesen Typ erstellen.
....
Ich denke, es lohnt sich, eine dritte Art der Synchronisation hinzuzufügen, um die Eröffnungszeit jedes Balkens für jedes Paar analog zur zweiten Art der Synchronisation zu überprüfen.
In Ihrem Bild und Ihrer Ähnlichkeit habe ich die Funktion bool init_tf(...) erstellt.
//+------------------------------------------------------------------+ //| Initialisierung der Charts der beteiligten Währungspaare | //| und Prüfung der Datensynchronisation| //+------------------------------------------------------------------+ //| in.| //| mas[] ist ein Array von Namen der benötigten Zeichen. //| time_0 - aktuelle Taktzeit[0]| //| count_Bars - gewünschte Anzahl von Balken | //+------------------------------------------------------------------+ bool init_tf(string &mas[], datetime time_0, int count_Bars) { bool rez=false; // Erfolgsflagge int copied=0, // Anzahl der kopierten Daten counter=0, // Fehlerzähler tmp_bars=0; // um die Anzahl der verfügbaren Takte zu prüfen datetime tmp_time[1]; // Array zur Überprüfung der Taktzeit f_comment("Es findet gerade eine Synchronisation statt."); for(int i=0; i<count_symbol; i++) { //Drucken("i=",i," ",count_symbol," ",mas[i]); tmp_bars=Bars(mas[i],PERIOD_CURRENT); if(tmp_bars<count_Bars) { // Überprüfung der Anzahl der Balken Print("i=",i," Nicht genug Balken (", mas[i],"-",fTimeFrameName(_Period),") MaxBars=",MaxBars," > Bars=",tmp_bars); counter++; } ResetLastError(); copied = CopyTime(mas[i],PERIOD_CURRENT,0,1,tmp_time); if(copied < 1) { // Kopierfehler Print("i=",i," Kopierfehler (", mas[i],"-",fTimeFrameName(_Period),") №",_LastError," (",ErrorDescription(_LastError),")"); counter++; } if(tmp_time[0]!=time_0) { // die Zeit stimmte nicht überein Print("i=",i,"Keine Zeitsynchronisation (", mas[i],"-",fTimeFrameName(_Period),") delta ="",(long)(time_0-tmp_time[0])/60," min"); counter++; } }// Ende for(int i=0; i<k; i++) if(counter==0) { // alles ist in Ordnung. keine Fehler rez=true; f_comment("Alles. Okay."); } else f_comment("Es gibt keine Synchronisation."+(string)counter); ChartRedraw( ); return(rez); }
Ich habe 12 Paare ausgewählt, die an der Meisterschaft teilnehmen werden. Ich habe einen Indikator RVI_ALL nur zum Zweck der Untersuchung der Synchronisation erstellt. Ich habe ihn gestartet. Ergebnis.
2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 10 Keine Zeitsynchronisation ( GBPJPY - M1 ) delta = 1 min
2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 5 Keine Zeitsynchronisation ( AUDUSD - M1 ) delta = 1 min
2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 1 Keine Zeitsynchronisation ( GBPUSD - M1 ) delta = 1 min
Es ist Sonntag, es gibt keine Balken (letzter Balken) auf diesen Symbolen. Der nächste Tick, nur am Montag. Dann erinnerte ich mich an diesen Artikel Chart ohne Löcher https://www.mql5.com/de/articles/1407.
Und es wird Löcher geben. Es wird sie geben. Wir müssen sie irgendwie bekämpfen. Im Prinzip kann man das auch so machen, wie in dem Artikel beschrieben. Aber ich habe eine Frage.
Der Indikator hängt an einem einzigen Chart. Und wenn es einen History Swap auf diesem Symbol gibt, kann ich das herausfinden, prev_calculated wird auf Null zurückgesetzt.
Aber woher weiß ich, dass die anderen Symbole einen History Swap hatten oder die Daten nur mit einer langen Verzögerung kamen?
Und es wird Löcher geben. Es wird Löcher geben. Mit denen muss irgendwie umgegangen werden. Im Prinzip kann man das so machen, wie in dem Artikel beschrieben. Aber ich habe eine Frage.
Der Indikator hängt ja an einem einzigen Chart. Und wenn es einen History Swap auf diesem Symbol gab, kann ich das herausfinden, prev_calculated wird auf Null zurückgesetzt.
Aber woher weiß ich, dass bei den anderen Symbolen ein History Swap stattgefunden hat oder die Daten nur mit einer langen Verzögerung kamen?
1 Entweder ich lasse nicht zu, dass der Indikator gezeichnet wird, wenn es eine Lücke in der Historie gibt, und frage die Historie regelmäßig im Moment des "Flickens" der Lücke ab. (Ein neuer Tick im aktuellen Chart oder ein Timer).
2. oder den Indikator nur bis zum Loch zeichnen, vorausgesetzt, das Loch in der Historie ist weit genug.
und diese Funktion leicht abändern
bool init_tf(string &mas[], datetime time_0, int count_Bars, int shift) и далее по тексту copied = CopyTime(mas[i],PERIOD_CURRENT,shift,1,tmp_time);
Dann rufen Sie diese Funktion in einer Schleife auf (von 0 bis Shiftbars).
In diesem Fall
shift
ist es die Bar-Position auf dem aktuellen Instrument und TF, die wir auf Synchronisation mit anderen Instrumenten prüfen.
Ich kann nicht wissen, dass es eine Lücke in der Geschichte gibt.
https://www.mql5.com/ru/forum/1111/8747#comment_8747
Der einzige Ausweg besteht darin, die Zeit zu kopieren und eine Schleife durch das gesamte Array zu ziehen, aber auch das kann zu einem Teufelskreis führen ( ((
Wenn die Entwickler das Konzept von https://www.mql5.com/de/articles/1407 nicht ändern, um Diagramme ohne Löcher zu erstellen, kann es sich herausstellen, dass es unmöglich ist, alles zu synchronisieren.
Ich kann nicht wissen, dass es eine Lücke in der Geschichte gibt.
https://www.mql5.com/ru/forum/1111/8747#comment_8747
Der einzige Ausweg besteht darin, die Zeit zu kopieren und eine Schleife durch das gesamte Array zu ziehen, aber auch das kann zu einem Teufelskreis führen ( ((
Wenn die Entwickler das Konzept von https://www.mql5.com/de/articles/1407 nicht ändern, um Diagramme ohne Löcher zu erstellen, kann es sich herausstellen, dass es unmöglich ist, alles zu synchronisieren.
Verwenden Sie die Synchronisation durch time[]-Puffer und es wird keine Verwirrung geben.
Nur ein Zitataufruf sollte von einer Vorabprüfung durch die Zeit begleitet werden, und dann wird alles synchronisiert sein.
Obwohl ich zustimme, dass der Weg nicht einfach ist und es viele Fehler geben kann.
Hallo!
Ich habe Zweifel an der Korrektheit der Dollar-Index-Formel, vielleicht sind sie falsch

Könnte mir jemand diese Formel genauer erklären und wie sie zustande gekommen ist?
"Der Dollar-Index ist ein Wert vom Typ double, der nach einer Formel berechnet wird, die mir freundlicherweise von Neutron zur Verfügung gestellt wurde.
Warum zitieren Sie Formeln und verweisen auf den Namen eines anderen? Hat er sieben Augen in seinem Kopf? Es stellt sich heraus, dass man zuerst den Artikel lesen und dann die Autoren der Formeln fragen muss? Wenn er der Autor ist, dann geben Sie den Link an, woher er sie hat.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Anlegen eines mehrwährungsfähigen Indikators unter Verwendung zahlreicher Indikatorzwischenspeicher :
Seit Kurzem erfreut sich die Clusteranalyse am Devisenmarkt zunehmenden Interesses. MQL5 eröffnet neue Möglichkeiten zur Untersuchung der Bewegungstendenzen von Währungspaaren (Kürzeln). Eine wesentliche Eigenschaft von MQL5, die diese Programmiersprache von ihrer Vorgängerin MQL4 abhebt, ist die Möglichkeit der Verwendung einer unbegrenzten Zahl von Zwischenspeichern (Puffern) für Indikatoren. In diesem Beitrag wird ein Beispiel für die Erstellung eines mehrwährungsfähigen Indikators vorgestellt.
Autor: Alexey Klenov