und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
- Veröffentlicht:
- Michael Schoen
- Ansichten:
- 1334
- Rating:
- Veröffentlicht:
- 2016.06.13 10:58
- Aktualisiert:
- 2016.11.22 07:34
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Ich kam zufällig zu MQL5 und war gezwungen eine MySQL Bibliothek zu erstellen. Ich hoffe, dass die Beispiele zur Verwendung der Bibliothek - wie für jede Bibliothek - zeigen. Wie bei jeder Bibliothek sind das wichtigste die Beispiele für ihre Verwendung ;)
Beispiele:
Lesen von Daten
#include <EAX\EAX_Mysql.mqh> EAX_Mysql *db = new EAX_Mysql(); db.connect("myhost.mydomain.com", "myusername", "mypassword", "mydatabase", "mytable"); int iResults = db.read_rows("SELECT password, COUNT(*) as Hits FROM users GROUP BY password"); for (int i=0; i < iResults; i++) { string password = (string) db.get("password",i); int hits = (int) db.get("Hits", i); }
Daten schreiben
#include <EAX\EAX_Mysql.mqh> // global EAX_Mysql *db = new EAX_Mysql(); void OnInit() { db.connect("myhost.mydomain.com", "myusername", "mypassword", "metatrader", "Ticks"; } void OnTick() { MqlTick tick; SymbolInfoTick(_Symbol,tick); // Neues Dataset für Tabelle Ticks hinzufügen db.AddNew("Ticks"); // mit Werten füllen.. db.set("symbol", _Symbol); // Sie können Zahlen in Datenbank-Zahlenfelder senden, wenn MySQL sie konvertieren kann db.set("ask", tick.ask); db.set("bid", tick.bid); db.set("last", tick.last); db.set("time", TimeToString(tick.time,TIME_DATE) + " " + TimeToString(tick.time,TIME_SECONDS)); db.set("volume", tick.volume); db.write(); } void OnDeinit() { // Speicher aufräumen delete db; }
Interaktion mit Daten
EAX_Mysql *db = new EAX_Mysql(); db.connect("myhost.mydomain.com", "myusername", "mypassword", "metatrader", "mytable") // Tabelle AgentsOnline auswählen (benötigt, um den richtigen Primary Key zu identifizieren) db.select("AgentsOnline"); // Dataset mit Primary Key 5 lesen db.read("5"); // eine Spalte modifizieren, db.set("lastupdate", (string) TimeLocal()); // zurückschreiben db.write();
Installation:
- Stellen Sie das MQL5 Datenverzeichnis (MQL5) fest.
- Laden Sie Connector/C (libmysql) für Ihre MetaTrader Umgebung (32 oder 64bit) hertunter und speichern Sie libymsql.dll nach "MQL5\Libraries".
- Erstellen Sie einen Ordner EAX unter Include.
- Kopieren Sie EAX_Mysql.mqh nach "MQL5\Include\EAX".
Probleme:
- Das es intern einen Shared Connection Pointer der Bibliothek verwendet kann die Bibliothekt nicht mehr als eine Datenbankverbindung gleichzeiti verwalten (ich hatte keinen Bedarf ein Verbindungspooling hinzuzufügen/migrieren).
- kein echtes Fehlerhandlung (mysql), Ausfall der DB-Verbindung.
- keine Fehlerbehandlung/Neuverbindung zur DB (=> db pooling).
- Keine Unterstützung für mehrspaltige Primary Keys.
- noch Beta - bitte senden Sie mir eine E-Mail, wenn Sie Betatester sein wollen.
- DataTypes werden nicht verwaltet (intern nur Strings) - das muss mit Code in der Datenbank gelöst werden.
- Die Database Kommunikation ist ISO - zu faul Pointer/String Arithmetik für UTF-8 anzupassen.
Impressum:
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/855

Der Indikator zeichnet (in einem separaten Fenster) die Bollinger Bänder relativ zum gleitenden Durchschnitt und eine Projektion der Preisbalken.

CFastFile macht das sofortige Schreiben von Daten in physische Plattendateien überflüssig. Das bietet eine signifikante Beschleunigung bei der Arbeit mit Daten.

Die Bibliothek enthält verschiedene statistische Funktionen einschließlich zur Berechnung von durchschnittlichem Wert, Varianz, Asymmetrie, Exzess, Kovariation, Korrelation etc.

Ermöglicht Nicht-Programmierern die "Chart Objekt Beschreibung" for non-programmers. Für jedes beliebige offene Chart-Fenster.