Diskussion zum Artikel "Der Einsatz von MQL5 Standard Library Handelsklassen beim Schreiben eines Expert Advisors"
Sehr nützlicher Artikel für mich. Alles ist viel einfacher, wenn man Bibliotheken verwendet!
Bitte an die Entwickler: Schreiben Sie eine Klasse, die mit High[i] , Low[i] arbeitet. Open[i], Close[i]. Ich denke, diese Klasse wird für jeden nützlich sein! Ich habe dieses Problem für mich selbst gelöst, aber ich bin mir nicht sicher, ob es korrekt ist, da das Testen viel Zeit in Anspruch nimmt....
#include <Indicators\Series.mqh> double High[]; CiHigh z;
warum dieser Code einen Fehler verursacht
1.mq5' 1.mq5 1 1
Reihe.mqh' Reihe.mqh 1 1
'ArrayObj.mqh' ArrayObj.mqh 1 1
'Array.mqh' Array.mqh 1 1
'Objekt.mqh' Objekt.mqh 1 1
'StdLibErr.mqh' StdLibErr.mqh 1 1
'ArrayDouble.mqh' ArrayDouble.mqh 1 1
'CiHigh' - Deklaration ohne Typ 1.mq5 12 2
1 Fehler, 0 Warnung(en) 2 1
wenn es nicht schwierig ist, zu schreiben, wie man
Print High[2], zum Beispiel.
warum dieser Code einen Fehler verursacht
wenn es nicht schwierig ist, schreiben Sie bitte, wie man
High[2] drucken, zum Beispiel.
es gibt einen Druckfehler in der Dokumentation. Diese Klasse befindet sich in der Datei TimeSeries.mqh.
Anwendungsbeispiel (das Skript druckt die letzten drei Highs des aktuellen Charts):
#include <Indicators\TimeSeries.mqh> //+------------------------------------------------------------------+ //| Skript-Programmstartfunktion| //+------------------------------------------------------------------+ void OnStart() { //--- double High[]; CiHigh z; int count=3; if(z.Create(_Symbol,_Period)==true) { if(z.GetData(0,count,High)==count) { for(int i=0; i<count; i++) Print(i,"=",High[i]); } else Print("Abruf fehlgeschlagen",count,"Zeitreihendaten".); } else Print("Fehler beim Erstellen von Zeitreihen".); } //+------------------------------------------------------------------+
Es gibt einen Druckfehler in der Dokumentation. Diese Klasse befindet sich in der Datei TimeSeries.mqh.
Anwendungsbeispiel (das Skript gibt die letzten drei Highs des aktuellen Charts aus):
Ich verstehe, dass jeder für sich selbst und seine Bedürfnisse programmiert, aber ich mag die Gruppe der Zeitserienklassen grundsätzlich nicht, weil sie im Grunde alle aus einer Methode und einem beschreibenden Teil mehr als Funktionalität bestehen, und normalerweise ist es notwendig, alle Zeitserien für ein bestimmtes Tool zu haben, ich habe eine Klasse gemacht, in der es alle Zeitserien für das notwendige Tool gibt, in den Methoden wird durch Paging History gemacht, ungefähr so:
struct str_bars{ datetime time[]; // Zeitreihen-Array, das die Eröffnungszeit jedes Balkens des aktuellen Charts enthält double open[]; // Zeitreihen-Array mit den Eröffnungskursen der einzelnen Balken des aktuellen Diagramms. double close[]; // Zeitreihen-Array mit den Schlusskursen jedes Balkens des aktuellen Diagramms. double high[]; // Zeitreihen-Array mit den Höchstpreisen der einzelnen Balken des aktuellen Diagramms. double low[]; // Ein Zeitreihen-Array, das die Mindestpreise jedes Balkens des aktuellen Diagramms enthält. }; struct str_info{ double point; // Aktuelle Instrumentenpunktgröße in Kurswährung int spread; // Aktuelle Spanne }; //____________________________________________________________________ class currency { public: //---- данные MqlTick TICK; // Tickdaten str_bars BAR; // Zeitreihendaten str_info INFO; // Informationen zum Werkzeug int error; //---- методы int create(string sym,ENUM_TIMEFRAMES period, int numbars); int refresh(void); private: string symbol; ENUM_TIMEFRAMES per; int num; datetime lastbar_time; int tmpint1,tmpint2; int ch_load(void); }; //____________________________________________________________________
Ich arbeite mit meiner Klasse nur in dem Teil der bereits vorbereiteten Daten, und natürlich erhält die Klasse selbst Daten durch den Aufruf der refresh()-Methode
der Artikel enthält eine Ungenauigkeit
double lot_price = myaccount.MarginCheck(_Symbol,otype,Lot); // Preis der Partie/Anzahl der erforderlichen Marge
sollte sein
double lot_price=myaccount.MarginCheck(_Symbol,otype,Lot,price); //--- Preis der Partie/Anzahl der erforderlichen Marge
Toller Artikel. Vielen Dank an den Autor. Ich möchte auch eine Überprüfung der Stop_Level vor der Platzierung einer Bestellung zu schreiben, und eine Überprüfung der Spread-Wert. Die Sache ist die, dass, wenn der Spread schwebend ist, dann bei hohen Werten kann man nicht in den Markt einsteigen, weil es nicht profitabel ist. Dies wird dem Expert Advisor helfen, nicht während der Nachrichten zu handeln. Ich würde auch gerne die Abweichung überprüfen - die Argumentation ist ähnlich. Und noch eine Frage zur Bibliothek: Was ist eine Funktion (welche Art von Prozess bezeichnet und beschreibt sie)?
FreezeLevel
Ermittelt den Abstand der Freeze-Handelsoperationen in Punkten.
| int FreezeLevel() const |
in einfacher Sprache - bitte erklären Sie es, wenn Sie es wissen.
Und noch eine Frage. Wir können die Limits herausfinden, z.B. das Stop_Level im aktuellen Moment (sagen wir 10 Punkte). Wir platzieren eine Pending Order mit SL=10 Punkten. Nach z.B. einer Stunde erreicht der Preis den in der Order angegebenen Preis, aber Stop_Level ist zu diesem Zeitpunkt z.B. gleich 15 Pips. Was wird passieren - wird die Pending Order funktionieren oder wird sie abgelehnt? Wenn der Kurs den in der Order angegebenen Kurs erreicht, aber der Spread sich geändert hat - bedeutet dies, dass ein Ein- oder Ausstieg zu einem schlechteren Kurs als dem erwarteten Kurs zum Zeitpunkt der Ordereröffnung möglich ist, oder wird die Order überhaupt nicht funktionieren?
Was mache ich falsch, warum wird das Angebot nicht gedruckt?
Hier ist das Log der Arbeit
2011.01.31 20:20:18 00(EURUSD,M1) EURUSD 0
Hier ist der Code
#include <Trade\SymbolInfo.mqh> //--- CSymbolInfo-Klasse CSymbolInfo my_symbol; //--- Objekt der Klasse CSymbolInfo //+------------------------------------------------------------------+ //| Experteninitialisierungsfunktion| //+------------------------------------------------------------------+ int OnInit() { return(0); } //+------------------------------------------------------------------+ //| Experten-Deinitialisierungsfunktion| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Experten-Tick-Funktion| //+------------------------------------------------------------------+ void OnTick() { my_symbol.Name(_Symbol); my_symbol.Refresh(); Print(_Symbol," ",my_symbol.Bid()); } //+------------------------------------------------------------------+
- 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 Der Einsatz von MQL5 Standard Library Handelsklassen beim Schreiben eines Expert Advisors :
Dieser Beitrag beschreibt die Verwendung der Hauptfunktionalitäten der MQL5 Standard Library Handelsklassen beim Schreiben des Expert Advisors, die das Schließen und die Änderung von Positions, Platzierung und Löschung von pending Orders sowie die Prüfung nach Margen vor dem Platzieren eines Handels implementieren. Es wird auch gezeigt, wie man mit Hilfe von Handelsklassen Details zu Orders und Abschlüssen bekommen kann.
Das neue MQL5 Programm besitzt eine Menge eingebauter Standardklassen-Libraries, mit deren Hilfe Trader und Entwickler MQL5 Expert Advisors, Indikatoren und Skripts sehr leicht weiterentwickeln können.
Diese Klassen-Libraries sind im \Include\ Ordner, innerhalb des MQL5 Ordners im MetaTrader 5 Client-Terminal Ordner zu finden. Die Klassen-Libraries sind in vier Kategorien unterteilt – Arrays, ChartObjekte, Charts, Dateien, Indikators, Strings und Handelsklassen.
Dieser Beitrag beschreibt en detail wie man die eingebauten Handelsklassen zum Schreiben eines Expert Advisors verwenden kann. Der Expert Advisor beruht dabei auf einer Strategie, die das Schließen und Ändern von geöffneten Positions umfasst, sobald eine vorgeschriebene Bedingung erfüllt ist.
Wenn Sie bereits eine Vorstellung davon haben, was Klassen sind und wie man mit ihnen arbeitet, dann finden Sie hier eine andere Welt an Möglichkeiten, die Ihnen die neue MQL5 Programmiersprache bietet.
Sollten Sie allerdings ein kompletter Neuling bzgl. MQL5 sein, dann empfehle ich Ihnen zunächst diese beiden Beiträge zu lesen: Schrittweiser Leitfaden zum Schreiben eines Expert Advisors MQL5 für Anfänger, Einen Expert Advisor mit Hilfe des MQL5 Objekt-orientierten Programmierungsansatzes schreiben. Oder jeden anderen Beitrag, der Ihnen eine ausreichende Einführung in die neue MQL5 Sprache bietet. Zu diesem Thema sind eine Menge Beiträge verfasst worden, die Ihnen alle das erforderliche Grundlagenwissen vermitteln werden.
Autor: Samuel Olowoyo