Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Einige DCs in echten Konten weisen den Symbolnamen alle möglichen Präfixe wie "." oder "FXF" zu.
Wie kann ich diese Präfixe verwenden?
Das habe ich getan:
#define DEF_SPEC "FXF"
string SymbolsTrade[] = {"AUDCAD "DEF_SPEC ... -funktioniert nicht
string SymbolsTrade[] = {"AUDCAD "+DEF_SPEC ... -auch das funktioniert so nicht
Ich erhalte nur FXF anstelle des erforderlichen AUDCADFXF.
Können Sie mir sagen, wie ich das umsetzen kann?
Erstens ist das Füllen eines Arrays mit Aufzählungen nur im globalen Bereich möglich, so dass dort kein + funktioniert, sondern nur Stringkonstanten.
Zweitens haben Sie ein statisches Array, das nicht verteilt ist, während ein dynamisches Array nicht mit einer Aufzählung gefüllt werden kann.
Am einfachsten ist es, eine Funktion zu schreiben, die ein dynamisches Array verteilt und füllt, sie kann alles tun, Definitionen zu Konstanten hinzufügen, usw.
Erstens ist das Füllen eines Arrays mit einer Aufzählung nur im globalen Bereich möglich, daher funktioniert dort kein +, sondern nur Stringkonstanten.
Zweitens haben Sie kein statisches Array verteilt, und ein dynamisches Array kann nicht durch Aufzählung gefüllt werden.
Am einfachsten ist es, eine Funktion zu schreiben, die das dynamische Array verteilt und füllt, sie kann alles tun, Definitionen mit Konstanten hinzufügen, usw.
Sie können auch versuchen, alle in BC/BROKER vorhandenen Währungspaare zu durchsuchen und die darin enthaltenen zusammengesetzten Währungen zu analysieren.
Danach können Sie ein dynamisches Array von Währungspaaren erstellen und dabei alle Präfixe berücksichtigen.
Soweit ich mich erinnere, ist dies eine der universellen Optionen für MT5.
Erstens ist das Füllen eines Arrays mit einer Aufzählung nur im globalen Bereich möglich, daher funktioniert dort kein +, sondern nur Stringkonstanten.
Zweitens haben Sie kein statisches Array verteilt, und ein dynamisches Array kann nicht durch Aufzählung gefüllt werden.
Am einfachsten ist es, eine Funktion zu schreiben, die das dynamische Array verteilt und füllt, sie kann alles tun, Definitionen zu Konstanten hinzufügen usw.
Kurz gesagt, wenn ich Sie richtig verstanden habe, können Sie nicht eine statische Zeichenfolge Array von zusammengesetzten Konstanten im globalen Bereich erstellen, richtig?
Sie können den Code im Quellcode sehen. Zur Ermittlung der Divergenz werden zwei Methoden verwendet:
1. Die Methode bool CSignalMACD::ExtState(int ind) bereitet die Daten für die Suche vor;
2. Die Methode bool CSignalMACD::CompareMaps(int map,int count,bool minimax,int start) sucht nach einem Marktmodell mit den angegebenen Parametern.
Wenn es hilft, hier sind Kommentare zu den Methoden auf Russisch:
Für die Methode bool CSignalMACD::ExtState(int ind)
Für die Methode bool CSignalMACD::CompareMaps(int map,int count,bool minimax,int start)
Ich habe auch eine Frage: Wie kann man die Divergenzvariante bei der Erstellung eines Expert Advisors mit MACD-Signal festlegen? Im Handbuch sind mehrere Varianten von Signalen aufgeführt.
Wie jeder bereits festgestellt hat, kann jedes Signal mehrere Marktmuster erkennen. Um die Verwendung von Mustern zu kontrollieren, rufen Sie die Methode PatternsUsage(int value) auf, wobei value die Bitmap der Musterverwendung ist (Bitnummer und Musternummer sind gleich). Bit ist 1 - Modell wird verwendet, Bit ist 0 - Modell wird nicht verwendet (standardmäßig sind alle Bits 1). Die Nummerierung der Modelle sowie der Bits beginnt bei 0.
Wenn Sie also nur Divergenz verwenden wollen, sollten Sie PatternsUsage(16); verwenden. Warum 16? 16 ist binär 10000b (d. h. Bit 4 ist 1, alle anderen Bits sind 0). Und nur Modell 4 "Divergenz des Oszillators und Preis".
Das einzige "aber" ist, dass Sie es "manuell" machen müssen.
Nach Abschluss des Assistenten wird der Quellcode im Editor geöffnet. Finden Sie eine Stelle wie diese im Editor:
und fügen Sie eine Zeile hinzu
filter0.PatternsUsage(16);
werden Sie es bekommen:
Das ist alles für den Moment. Wenn Sie Fragen haben, können Sie mich gerne kontaktieren.
Wie jeder bereits festgestellt hat, kann jedes Signal mehrere Marktmuster erkennen. Um die Verwendung von Mustern zu kontrollieren, rufen Sie die Methode PatternsUsage(int value) auf, wobei value eine Bitmap der Musterverwendung ist (die Bitnummer und die Musternummer sind identisch). Bit ist 1 - Modell wird verwendet, Bit ist 0 - Modell wird nicht verwendet (standardmäßig sind alle Bits 1). Sowohl die Modellnummerierung als auch die Bits beginnen bei 0.
Wenn Sie also nur die Divergenz verwenden wollen, müssen Sie PatternsUsage(16); verwenden. Warum 16? 16 ist 10000b im Binärformat (d.h. Bit 4 ist 1, die anderen Bits sind 0). Und nur Modell 4 "Divergenz von Oszillator und Preis".
Das einzige "aber" ist, dass Sie es "manuell" machen müssen.
Nach Abschluss des Assistenten wird der Quellcode im Editor geöffnet. Finden Sie eine Stelle wie diese im Editor:
und fügen Sie eine Zeile hinzu
filter0.PatternsUsage(16);
Sie bekommen es:
Das ist alles für den Moment. Wenn Sie Fragen haben, können Sie mich gerne kontaktieren.
Ich danke Ihnen. Es hat funktioniert. Und schon gibt es weitere Fragen. Welcher zeitliche Abstand zwischen benachbarten Höchstständen (Tiefstständen) wird bei dieser Variante der Divergenz berücksichtigt?
Ich habe einen Experten, mit dem ich versuche, die Ereignisse zu verarbeiten.
Ich erhalte Ereignisse, die nicht mit Aktionen übereinstimmen.
Entspricht genau einem Klick auf das Diagramm und einem Klick auf eine Schaltfläche
Ein umstrittenes Ereignis id=9(CHARTEVENT_CUSTOM), das erzeugt wird, wenn z.B. das Diagramm verschoben wird und es etwa 10 ähnliche Ereignisse gibt.
Das EreignisCHARTEVENT_OBJECT_ENDEDIT wurde nicht geprüft.
Alles andere ist unklar. Entweder stimmt die Beschreibung nicht mit der Ereignisnummer überein oder das Ereignis zum Anlegen eines Objekts wird beim manuellen Anlegen eines Objekts falsch erzeugt.
Bitte helfen Sie allgemein.
Ich habe einen Experten, mit dem ich versuche, die Ereignisse zu verarbeiten.
Ich erhalte Ereignisse, die nicht mit Aktionen übereinstimmen.
Entspricht genau einem Klick auf das Diagramm und einem Klick auf eine Schaltfläche
Ein umstrittenes Ereignis id=9(CHARTEVENT_CUSTOM), das erzeugt wird, wenn z.B. das Diagramm verschoben wird und es etwa 10 ähnliche Ereignisse gibt.
Das EreignisCHARTEVENT_OBJECT_ENDEDIT wurde nicht geprüft.
Bei allen anderen ist nicht alles klar. Entweder stimmt die Beschreibung nicht mit der Ereignisnummer überein oder das Ereignis zum Erstellen eines Objekts wird beim manuellen Erstellen des Objekts falsch generiert.
Alles in allem: Bitte helfen Sie.
Sie ordnen zunächst numerische Korrespondenzen zu bereits zugeordneten numerischen Konstanten CHARTEVENT_XXXXXXXX...
Das Problem ist folgendes:
müssen Sie:
Der Rest ist unklar. Entweder stimmt die Beschreibung nicht mit der Ereignisnummer überein, oder das Ereignis z.B. der Objekterstellung wird nicht korrekt erzeugt, wenn das Objekt manuell erstellt wird.
Leider ist Ihre Frage nicht klar. Was genau läuft schief?