Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Librerías

EAX_Mysql - Biblioteca de MySQL - librería para MetaTrader 5

Publicado por:
Michael Schoen
Visualizaciones:
2443
Ranking:
(40)
Publicado:
2014.02.27 07:41
Actualizado:
2016.11.22 07:33
eax_mysql.mqh (29.79 KB) ver
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Me topé accidentalmente con MQL5 y me vi obligado a utilizarlo conjuntamente con una biblioteca de MySQL.

Como para cualquier biblioteca espero que los ejemplos muestren cómo puede ser utilizada. Como para cualquier biblioteca en realidad la cosa más importante son los ejemplos de cómo utilizarla ;)

Ejemplos:

Lectura de datos

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

Añadir Datos

#include <EAX\EAX_Mysql.mqh>

// variable 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);
    // Añade un nuevo dataset para la tabla de Ticks
    db.AddNew("Ticks");
    // rellenamos con valores ..
    db.set("symbol", _Symbol);
    // Puede enviar dígitos a campos de dígitos de la Base de datos si MySQL los puede 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() {
   // limpia la memoria
   delete db;
}


Interactuar con datos

EAX_mysql *db = new EAX_Mysql();

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

// Selecciona tabla AgentsOnline (necesaria para identificar la clave primaria correcta)
db.select("AgentsOnline");
// Lee dataset con clave primaria 5
db.read("5");
// se puede modificar cualquier columna,
db.set("lastupdate", (string) TimeLocal());
// escribe de nuevo
db.write();

Instalación:

  • Identifique su directorio de datos de MQL5 (MQL5).
  • Descargue el Conector/C (libmysql) para su entorno (32 o 64 bits) y guarde libymsql.dll en "MQL5\Libraries".
  • Cree una carpeta EAX en Include.
  • Guarde EAX_Mysql.mqh en "MQL5\Include\EAX".

Problemas:

  • Como se utiliza internamente un puntero de conexión compartida, la biblioteca no puede manejar más de una conexión DB a la vez (yo no tenía necesidad de añadir/migrar una agrupación de conexiones).
  • no detecta ningún error (mysql), al caer la conexión de bases de datos.
  • no gestiona errores de reconexión a la DB (=> db pooling).
  • no hay soporte para claves primarias compuestas.
  • continua beta - por favor envíeme un correo electrónico si usted quiere probarla.
  • No se gestionan los tipos de datos (internamente son sólo cadenas) deben ponerse en el código de la base de datos.
  • Comunicación con la base de datos mediante ISO - demasiado perezoso para ajustar la aritmética de puntero/cadena para UTF-8.

Créditos:

Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/855

TimeSeries - Funciones de la librería para trabajar con Series Temporales TimeSeries - Funciones de la librería para trabajar con Series Temporales

Funciones de la Librería para Trabajar con Series Temporales: iTime, iOpen, iHigh, iLow, iClose, iHighest, iLowest, iBarshift. La versión corta de la invocación está disponible para todas las funciones (con el símbolo y el periodo de la gráfica actual).

BvsB BvsB

Osos vs Toros. Abejas vs miel. Rock vs drogas.

r_MaСrossing r_MaСrossing

Media móvil calculada como un promedio de todas las variantes del cálculo de la media móvil clásica con una línea de señal y la posibilidad de producir alertas y enviar notificaciones push.

BlauCSI_HTF_Signal BlauCSI_HTF_Signal

El indicador BlauCSI_HTF_Signal muestra la dirección de la tendencia como un objeto gráfico coloreado basado en los datos del indicador BlauCSI, da alertas o señales de audio y envía notificaciones push a su smartphone.