Guarda come scaricare robot di trading gratuitamente
Ci trovi su Facebook!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Librerie

EAX_Mysql - MySQL library - libreria per MetaTrader 5

Pubblicati da::
Michael Schoen
Visualizzazioni:
17
Valutazioni:
(42)
Pubblicato:
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

Per caso mi sono imbattuto in MQL5 e sono stato costretto a mettere insieme una libreria MySQL. Come per ogni libreria, spero che gli esempi mostrino come la libreria può essere utilizzata. Come per ogni libreria in realtà la cosa più importante sono gli esempi di utilizzo ;)

Esempi:

Lettura dei dati

#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);
}


Alimentazione dei dati

#include <EAX\EAX_Mysql.mqh>

// globale
EAX_Mysql *db = new EAX_Mysql();

void OnInit() {
    db.connect("myhost.mydomain.com", "myusername", "mypassword", "metatrader", "Ticks";
}

void OnTick() {
    MqlTick tick;
    SymbolInfoTick(_Symbol,tick);
    // Aggiungere un nuovo set di dati per la tabella Ticks
    db.AddNew("Ticks");
    // riempire con valori...
    db.set("symbol", _Symbol);
    // È possibile inviare le cifre ai campi del DB se MySQL è in grado di convertirle.
    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() {
   // pulire la memoria
   delete db;
}


Interazione con i dati

EAX_Mysql *db = new EAX_Mysql();

db.connect("myhost.mydomain.com", "myusername", "mypassword", "metatrader", "mytable")

// Selezionare la tabella AgentiOnline (necessario per identificare la chiave primaria corretta)
db.select("AgentsOnline");
// Leggere l'insieme di dati con la chiave primaria 5
db.read("5");
// modificare qualsiasi colonna,
db.set("lastupdate", (string) TimeLocal());
// scriverlo di nuovo
db.write();

Installazione:

  • Identificare la directory dei dati MQL5 (MQL5).
  • Scaricare Connector/C (libmysql) per il vostro ambiente MetaTrader (32 o 64 bit) e inserire libymsql.dll in "MQL5\Libraries".
  • creare una cartella EAX sotto Include.
  • Inserire EAX_Mysql.mqh in "MQL5\Include\EAX".

Problemi:

  • Poiché utilizza internamente un puntatore di connessione condiviso, la libreria non può gestire più di una connessione DB alla volta (non avevo bisogno di aggiungere/migrare un pooling di connessioni).
  • nessuna gestione di errori reali (mysql), che facciano cadere la connessione al db.
  • nessuna gestione degli errori/riconnessione al DB (=> db pooling).
  • nessun supporto per le chiavi primarie a più colonne.
  • Ancora in fase beta - inviatemi un'email se volete fare un beta/test.
  • I tipi di dati non sono gestiti (internamente sono solo stringhe), ma devono essere gestiti dal codice/dal database.
  • La comunicazione con il database è ISO - troppo pigro per adattare l'aritmetica dei puntatori e delle stringhe all'UTF-8.

Crediti:

  • http://mqlmagazine.com/mql-programming/mql5-connecting-to-mysql/
  • https://www.mql5.com/it/articles/364

Tradotto dall’inglese da MetaQuotes Ltd.
Codice originale https://www.mql5.com/en/code/855

ExtObjects ExtObjects

Funzioni dedicate per leggere e scrivere le proprietà degli oggetti.

Candle ZigZag Candle ZigZag

Candle ZigZag è un indicatore che cambia la sua gamba se cambia il colore di una candela.

Mostra livello giorno aperto Mostra livello giorno aperto

Indicatore che visualizza il livello di apertura del giorno su qualsiasi TF

iMio iMio

Nella rappresentazione grafica, la techanalysis rappresenta la linea di tendenza a destra delle candele sul breakdown (in verde). Dopo il breakdown, si ipotizza il movimento lungo la linea rossa.