MetaEditor: Dem MQL5 Wizard wurde ein neuer Link zum Video Tutorial "Wie man einen Handelsroboter im MQL5 Wizard erstellt" hinzugefügt. Schauen Sie sich das dreiminütige Video an und erstellen Sie einen Handelsroboter, ohne eine einzige Codezeile zu schreiben.
Die Dokumentation wurde aktualisiert.
2015.10.14 14:48:18.486 Data Folder: C:\Program Files\MetaTrader 5 2015.10.14 14:48:18.486 Windows 7 Professional (x64 based PC), IE 11.00, UAC, 8 x Intel Core i7 920 @ 2.67GHz, RAM: 8116 / 12277 Mb, HDD: 534262 / 753865 Mb, GMT+03:00 2015.10.14 14:48:18.486 MetaTrader 5 build 1190 started (MetaQuotes Software Corp.)
struct MqlTick { datetime time; // Zeit der letzten Preisaktualisierung double bid; // Aktueller Bid-Preis double ask; // Aktueller Ask-Preis double last; // Aktueller Preis des letzten Trades (Last) ulong volume; // Volumen für den aktuellen Last-Preis long time_msc; // Zeit der letzten Aktualisierung der Preise in Millisekunden uint flags; // Tick-Flags };Für jeden Tick werden alle Parameter ausgefüllt, unabhängig davon, ob sich die Daten im Vergleich zum vorherigen Tick geändert haben oder nicht. Dies erlaubt es, immer aktuelle Kurse zu jedem Zeitpunkt zu haben, ohne nach vorherigen Werten der Tickhistorie suchen zu müssen. Mit dem Eintreffen eines Ticks könnte sich z.B. nur der Bid-Preis ändern, aber die anderen Parameter werden neben dem neuen Preis auch in der Struktur angegeben: vorheriger Ask-Preis, Positionsgröße usw. Um festzustellen, welche Daten sich mit dem aktuellen Tick geändert haben, analysieren Sie seine Flags:
//+------------------------------------------------------------------+ //| TemplTest.mq5 | //| Copyright 2015, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Deklarieren einer Template-Klasse | //+------------------------------------------------------------------+ template<typename T> class TArray { protected: T m_data[]; public: bool Append(T item) { int new_size=ArraySize(m_data)+1; int reserve =(new_size/2+15)&~15; //--- if(ArrayResize(m_data,new_size,reserve)!=new_size) return(false); //--- m_data[new_size-1]=item; return(true); } T operator[](int index) { static T invalid_index; //--- if(index<0 || index>=ArraySize(m_data)) return(invalid_index); //--- return(m_data[index]); } }; //+---------------------------------------------------------------------+ //| Template-Klasse eines Arrays von Pointers, im Destruktor löscht er | //| Objekte, deren Pointers in diesem Array gespeichert wurden. | //| | //| Beachten Sie die Vererbung von der Template-Klasse TArray | //+---------------------------------------------------------------------+ template<typename T> class TArrayPtr : public TArray<T *> { public: void ~TArrayPtr() { for(int n=0,count=ArraySize(m_data);n<count;n++) if(CheckPointer(m_data[n])==POINTER_DYNAMIC) delete m_data[n]; } }; //+---------------------------------------------------------------------------------------+ //| Deklarieren wir die Klasse, die Pointers auf ihre Objekte werden im Array gespeichert | //+---------------------------------------------------------------------------------------+ class CFoo { int m_x; public: CFoo(int x):m_x(x) { } int X(void) const { return(m_x); } }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ TArray<int> ExtIntArray; // das Template TArray instanziieren (das Template TArray durch den Typ int spezialisieren) TArray<double> ExtDblArray; // das Template TArray instanziieren (das Template TArray durch den Typ double spezialisieren) TArrayPtr<CFoo> ExtPtrArray; // das Template TArrayPtr instanziieren (das Template TArrayPtr durch den Typ CFoo spezialisieren) //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- die Arrays mit Daten füllen for(int i=0;i<10;i++) { int integer=i+10; ExtIntArray.Append(integer); double dbl=i+20.0; ExtDblArray.Append(dbl); CFoo *ptr=new CFoo(i+30); ExtPtrArray.Append(ptr); } //--- den Inhalt der Arrays ausgeben string str="Int:"; for(int i=0;i<10;i++) str+=" "+(string)ExtIntArray[i]; Print(str); str="Dbl:"; for(int i=0;i<10;i++) str+=" "+DoubleToString(ExtDblArray[i],1); Print(str); str="Ptr:"; for(int i=0;i<10;i++) str+=" "+(string)ExtPtrArray[i].X(); Print(str); //--- die über new erstellten CFoo-Objekte müssen nicht gelöscht werden, sie werden im Destruktor des Objekts TArrayPtr<CFoo> gelöscht }Das Ergebnis der Ausführung:
int ObjectsDeleteAll( long chart_id, // Chart-ID const string prefix, // Präfix des Objektnamens int sub_window=-1, // Index des Fensters int object_type=-1 // Typ des zu löschenden Objekts );
Verbesserungen anhand Crash-Logs.
Die Dokumentation wurde aktualisiert.
Aktualisieren Sie Ihre Anwendung, um von den neuen Möglichkeiten in Ihrem MetaTrader 5 iOS zu profitieren.
Den Volltext der Nachricht können Sie hier lesen.
Nun kann man jede Anwendung im Market in einem Schritt ohne Registrierung direkt im MetaTrader 4/5 kaufen. Dafür klicken Sie einfach auf "Kaufen" und wählen Sie das gewünschte Zahlungssystem aus.
Sie werden auf die Seite des Zahlungssystems weitergeleitet, wo Sie den Kauf abschließen können. PayPal, WebMoney, Neteller oder Kreditkarte - bezahlen Sie Ihre Käufe im Market für Handelsroboter und Indikatoren, wie es Ihnen am besten passt.
Nach dem Kauf empfehlen wir Ihnen, ein Benutzerkonto in MQL5.community anzulegen. Ihr Kauf wird automatisch an den Account gebunden. Auf diese Weise bekommen Sie die Möglichkeit, das Produkt zu aktualisieren und es auf anderen PCs zu installieren. Darüber hinaus bietet ein MQL5.community Account Ihnen Zugang zu einer Vielzahl von Services für die MetaTrader Plattformen, dazu gehören Signale für das Kopieren von Trades erfolgreicher Händler, virtuelles Hosting für eine ununterbrochene Arbeit Ihrer Anwendungen und der Freelance-Service für das Bestellen von Handelsroboter bei Entwicklern.
Nun kennen Sie die einfachste und schnellste Weise, einen Handelsroboter zu bekommen. Über 5 000 verschiedene Anwendungen für MetaTrader warten auf Sie im Market - einfach auswählen und kaufen!
Assets werden zu Equity addiert und erhöhen die freie Margin, was es erlaubt, das Volumen von Transaktionen auf dem Konto zu erhöhen.
Auf diese Weise gibt es die Möglichkeit, Konten mit verschiedenen Typen der Margin-Berechnung zu eröffnen.
ulong GetMicrosecondCount();
Diese Funktion kann für ein zusätzliches Profiling der Ausführung eines Programms und das Identifizieren von "Engpässen" verwendet werden.Verbesserungen anhand Crash-Logs.
Die Dokumentation wurde aktualisiert.
Die Aktualisierung wird über LiveUpdate verfügbar sein.
Testen Sie diese Änderungen selbst — aktualisieren Sie den MetaTrader 5 iOS jetzt.
Fehlerbehebungen und Verbesserungen im Strategietester. Die Zeitverlust bei vorbereitenden Operationen und Netzwerklatenz wurden erheblich reduziert. Das Testen und die Optimierung wurden in allen Modi beschleunigt: bei der Arbeit mit lokalen Testagenten, mit Agenten in einem lokalen Netz und bei der Verwendung des MQL5 Cloud Netzwerkes.
Verbesserungen anhand Crash-Logs.
Die Dokumentation wurde aktualisiert.
Die Aktualisierung wird über LiveUpdate verfügbar sein.
Auf diese Weise können Sie jederzeit die Anzahl der Charts und Symbole, den Set der laufenden Programme und deren Eingabeparameter, Einstellungen des Terminals und Signalabos ändern.
Bei der Durchführung der Migration werden die ganzen Informationen ins Journal des Handelsterminals geschrieben.
Testagenten arbeiten nun in nur 64-Bit-Systemen. Diese Entscheidung geht mit der Notwendigkeit einher, mit der Entwicklung der IT-Branche Schritt zu halten. Der Verzicht auf alte Technologien erlaubt es, die Performance der Berechnungen zu erhöhen und MQL5 Cloud Network weiterzuentwickeln.
Änderungen in den Komponenten der Plattform:
int WebRequest (string method, string url,string headers,int timeout, const char &data[], int data_size,char &result[], string &result_headers)
Diese Funktion erlaubt es, den Inhalt des Headers einer HTTP-Anfrage explizit zu bilden, indem sie einen flexiblen Mechanismus für die Interaktion mit verschiedenen Web-Services bietet. Beispiel - Automatische Veröffentlichung mit WebRequest()
Verbesserungen anhand Crash-Logs.
Die Dokumentation wurde aktualisiert.
Die Aktualisierung wird über LiveUpdate verfügbar sein.
int CopyTicks( const string symbol_name, // Symbolname MqlTick &ticks_array[], // Array, in welchem die Ticks gespeichert werden uint flags=COPY_TICKS_ALL, // Flag, das den Typ der Ticks festlegt ulong from=0, // Datum, von welchem die Ticks erhalten werden; in Millisekunden vom 01.01.1970 uint count=0 // Anzahl der letzten Ticks, die erhalten werden müssen );Die Ticks können nach Datum abgefragt werden, indem man den Wert from angibt oder nach Anzahl, indem man count angibt. Wenn keiner der Parameter angegeben wurde, werden alle verfügbaren Ticks übergeben, aber höchstens 2000. Ticks können auch nach Typ über den Parameter flags abgefragt werden. Verfügbare Werte:
Verbesserungen anhand Crash-Logs.
Die Dokumentation wurde aktualisiert.
Die Aktualisierung wird über LiveUpdate verfügbar sein.
Updates für Android 4.0 und höher. Die Anwendung kann für ältere Android Versionen installiert werden, aber sie wird nicht mehr unterstützt.
Entdecken Sie die neuen Möglichkeiten des MetaTrader 5 für Android jetzt. Laden Sie unsere Anwendung bei Google Play herunter!