Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Telegram !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Bibliothèque

EAX_Mysql - MySQL library - bibliothèque pour MetaTrader 5

Publié par:
Michael Schoen
Vues:
50
Note:
(42)
Publié:
eax_mysql.mqh (29.79 KB) afficher
MQL5 Freelance 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 ExtObjects

Fonctions dédiées à la lecture et à l'écriture des propriétés des objets.

Candle ZigZag Candle ZigZag

Candle ZigZag est un indicateur qui change de jambe si la couleur d'un chandelier change.

Geo_ShowOpenDayLevel Geo_ShowOpenDayLevel

Indicateur qui affiche le niveau d'ouverture du jour sur n'importe quel TF

iMy 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é.