Ich danke Ihnen. Sehr informativ.
Ich versuche zu verstehen, was dieser Code in diesem Artikel bedeutet, warum wir ein * in der Nähe des CINDICATOBUFFER haben und dann at verwenden.
((CIndicatorBuffer*)At(0)).Name("ZIGZAG");
((CIndicatorBuffer*)At(1)).Name("HIGH");
((CIndicatorBuffer*)At(2)).Name("LOW");
Ich bitte um eine detaillierte Erklärung
Danke
Ich versuche zu verstehen, was dieser Code in diesem Artikel bedeutet, warum wir ein * in der Nähe des CINDICATOBUFFERs haben und dann at verwenden.
((CIndicatorBuffer*)At(0)).Name("ZIGZAG");
((CIndicatorBuffer*)At(1)).Name("HIGH");
((CIndicatorBuffer*)At(2)).Name("LOW");
Ich bitte um eine detaillierte Erklärung
Danke
string
m_handle=iCustom(symbol,period,zigzag,depth,deviation_create,backstep);
Ich kann den Pfad zu dem Indikator nicht finden.
Was ist der richtige Weg, um hier anzugeben, die Indikatoren, die ich aufzurufen versuche, liegen im Standardordner.
Standard Zigzag liegt im Ordner Examples - Sie müssen den Namen des Ordners zum Pfad hinzufügen

2017.07.12 10:38:05.703 Proba2 (EURUSD.m,M1) kann den benutzerdefinierten Indikator 'Examples\ZigZag' nicht laden[4302]
Wer schaut sich den Fehlercode an?
ERR_MARKET_NOT_SELECTED | 4302 | Symbol nicht in MarketWatch ausgewählt |
Wer wird sich den Fehlercode ansehen?
ERR_MARKET_NOT_SELECTED | 4302 | Symbol in MarketWatch nicht ausgewählt |
Ich gebe NULL ein - es funktioniert, ich gebe "EURUSD" ein - es funktioniert nicht!!!!
bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- Verlauf prüfen if(!SetSymbolPeriod(symbol,period)) return(false); //--- erstellen //m_handle=iCustom(symbol,period, "Examples\\\ZigZag",depth,deviation_create,backstep); //m_handle=iCustom("EURUSD",period, "Examples\\\ZigZag",depth,deviation_create,backstep); - funktioniert NICHT m_handle=iCustom(NULL,period,"Examples\\ZigZag",depth,deviation_create,backstep); - работает //--- Prüfung des Ergebnisses if(m_handle==INVALID_HANDLE) return(false); //--- Indikator erfolgreich erstellt if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- Initialisierungsfehler IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); } IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); }
//+------------------------------------------------------------------+ //|| Erstellen Sie den "Zig Zag"-Indikator| //+------------------------------------------------------------------+ bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- Verlauf prüfen if(!SetSymbolPeriod(symbol,period)) return(false); //--- erstellen m_handle=iCustom(symbol,period,"zigzag",depth,deviation_create,backstep); //--- Prüfung des Ergebnisses if(m_handle==INVALID_HANDLE) return(false); //--- Indikator erfolgreich erstellt if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- Initialisierungsfehler IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); }
bool CiZigZag::Initialize(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_init,const int backstep) { if(CreateBuffers(symbol,period,3)) { //--- Rendering-Statuszeile m_name ="ZigZag"; m_status="("+symbol+","+PeriodDescription()+","+ IntegerToString(depth)+","+IntegerToString(deviation_init)+","+ IntegerToString(backstep)+") H="+IntegerToString(m_handle); //--- Einstellungen speichern m_depth=depth; m_deviation=deviation_init; m_backstep=backstep; //--- Puffer erstellen ((CIndicatorBuffer*)At(0)).Name("ZIGZAG"); ((CIndicatorBuffer*)At(1)).Name("HIGH"); ((CIndicatorBuffer*)At(2)).Name("LOW"); //--- ok return(true); } //--- Fehler return(false); }
Helfen Sie mir zu verstehen, wie die Indizierung Richtung des Indikators Puffer Array hier festgelegt ist, d.h. das gleiche wie ArraySetAsSeries. Die Standardrichtung ist von der Gegenwart zur Vergangenheit, aber ich muss es von der Vergangenheit zur Gegenwart machen. Seit gestern kämpfe ich mit dieser Frage! Hilfe!
- 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 Erweiterung der MQL5-Standardbibliothek und Wiederverwendung von Code :
Die MQL5-Standardbibliothek erleichtert Ihnen das Leben als Entwickler. Dennoch geht sie nicht auf die Bedürfnisse aller Entwickler auf der Welt ein. Wenn Sie also das Gefühl haben, dass Sie mehr benutzerdefinierte Funktionen brauchen, können Sie einen Schritt weitergehen und die Bibliothek erweitern. Dieser Beitrag begleitet Sie durch die Integration des technischen Indikators ZigZag von MetaQuotes in die Standardbibliothek. Wir lassen uns durch die Designphilosophie von MetaQuotes inspirieren, um unser Ziel zu erreichen.
Die MQL5-Standardbibliothek ist ein objektorientiertes Framework aus gebrauchsfertigen Klassen, die Ihnen das Leben als Entwickler erleichtern. Dennoch geht sie nicht auf die Bedürfnisse aller Entwickler auf der Welt ein. Wenn Sie also das Gefühl haben, dass Sie mehr benutzerdefinierte Funktionen brauchen, können Sie einen Schritt weitergehen und die Bibliothek erweitern. Dieser Beitrag begleitet Sie durch die Integration des technischen Indikators ZigZag von MetaQuotes in die Standardbibliothek. Wir lassen uns durch die Designphilosophie von MetaQuotes inspirieren, um unser Ziel zu erreichen.
Kurz gesagt, ist die MQL5-API dafür vorgesehen, Sie in den Genuss von wiederverwendbaren Codes, Zuverlässigkeit, Flexibilität und einfacher Wartung kommen zu lassen. Soweit die Theorie. Doch darüber hinaus müssen Sie dazu in der Lage sein, Codes auf die Art der Standardbibliothek zu schreiben, sodass der Erfolg Ihrer Anwendungen garantiert werden kann, wenn Sie Ihre MQL5-Kenntnisse erweitern und ausgeklügeltere Anwendungen entwickeln möchten, beispielsweise mehrwährungsfähige Expert Advisors.
Mit der steigenden Komplexität Ihrer EAs und Indikatoren wird es immer wichtiger, die Konzepte hinter der Entwicklung eines Frameworks vollständig zu begreifen. Ein konkretes Beispiel ist mein persönliches Bestreben, einen komplexen, mehrwährungsfähigen EA zu entwickeln, das mich dazu zwingt, die Grundlagen meines Projekts von Grund auf durchzudenken.
Abbildung 1. Regelmäßige Polyeder sind perfekte Objekte und veranschaulichen die Idee hinter der Ausarbeitung von Anwendungen auf Basis eines soliden Konzepts
Autor: Jordi Bassaganas