Rejoignez notre page de fans
- Publié par:
- Michael Schoen
- Vues:
- 50
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Je suis tombé par hasard sur MQL5 et j'ai été forcé de créer une bibliothèque MySQL. Comme pour toute bibliothèque, j'espère que les exemples montrent comment la bibliothèque peut être utilisée. Comme pour toute bibliothèque, les choses les plus importantes sont les exemples d'utilisation ;)
Exemples :
Lecture de données
#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); }
Alimenter des données
#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); // Ajouter un nouveau jeu de données pour la table Ticks db.AddNew("Ticks"); // le remplir avec des valeurs... db.set("symbol", _Symbol); // Vous pouvez envoyer des chiffres dans les champs de la base de données des chiffres si MySQL peut les convertir. 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() { // nettoyer la mémoire delete db; }
Interagir avec les données
EAX_Mysql *db = new EAX_Mysql(); db.connect("myhost.mydomain.com", "myusername", "mypassword", "metatrader", "mytable") // Sélectionner la table AgentsOnline (nécessaire pour identifier la clé primaire correcte) db.select("AgentsOnline"); // Lecture de l'ensemble de données avec la clé primaire 5 db.read("5"); // modifier n'importe quelle colonne, db.set("lastupdate", (string) TimeLocal()); // le réécrire db.write();
Installation :
- Identifiez votre répertoire de données MQL5 (MQL5).
- Téléchargez Connector/C (libmysql) pour votre environnement MetaTrader (32 ou 64bit) et mettez libymsql.dll dans "MQL5\Libraries".
- Créez un dossier EAX sous Include.
- Placez EAX_Mysql.mqh dans "MQL5\Include\EAX".
Problèmes :
- Comme elle utilise en interne un pointeur de connexion partagé, la bibliothèque ne peut pas gérer plus d'une connexion DB à la fois (je n'ai pas eu besoin d'ajouter/migrer un pool de connexion).
- Pas de gestion d'erreur réelle (mysql), abandon de la connexion à la base de données.
- pas de gestion des erreurs/reconnexion à la base de données (=> pooling de la base de données).
- pas de support pour les clés primaires à colonnes multiples.
- encore en beta - merci de m'envoyer un email si vous voulez beta/tester.
- Les types de données ne sont pas gérés (en interne, juste des chaînes), ce qui doit être fait dans le code/la base de données.
- La communication avec la base de données est ISO - trop paresseux pour ajuster l'arithmétique des pointeurs/chaînes pour UTF-8.
Crédits :
- http://mqlmagazine.com/mql-programming/mql5-connecting-to-mysql/
- https://www.mql5.com/fr/articles/364
Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/855
ExtObjects
Fonctions dédiées à la lecture et à l'écriture des propriétés des objets.
Candle ZigZag
Candle ZigZag est un indicateur qui change de jambe si la couleur d'un chandelier change.
Geo_ShowOpenDayLevel
Indicateur qui affiche le niveau d'ouverture du jour sur n'importe quel TF
iMy
Dans la représentation graphique, la techanalyse représente la ligne de tendance à droite des bougies sur la rupture (en vert). Après la rupture, le mouvement le long de la ligne rouge est supposé.