PostgreSQL Client

Un cliente PostgreSQL completo implementado en MQL5 puro sobre sockets TCP nativos de MetaTrader 5.

La librería implementa el cliente PostgreSQL con autenticación MD5 y SCRAM-SHA-256, SSL/TLS, el Simple Query Protocol, y transacciones explícitas.

Sin DLLs, sin dependencias externas, sin servicios de terceros.

Características

Conexión TCP directa a cualquier base de datos compatible con PostgreSQL
Autenticación MD5 y SCRAM-SHA-256, autodetectada
SSL/TLS a través del flujo SSLRequest de PostgreSQL
Soporte completo de transacciones
Accesores de resultado tipificados con detección NULL
A salvo de mal manejo - nunca bloquea su EA

Compatibilidad

Diseñado para PostgreSQL > 7.4 a 18

RDS PostgreSQL
Amazon Aurora PostgreSQL
Supabase (en la nube y autoalojado)
CockroachDB
CrateDB
YugabyteDB
Google Cloud SQL para PostgreSQL
Azure Database para PostgreSQL


Primeros pasos

Pase useSSL = true a Pg_Connect . La librería realiza la negociación estándar PostgreSQL SSLRequest y actualiza a TLS vía SocketTlsHandshake . Si el servidor rechaza la petición el cliente registra una advertencia y continúa sin cifrar.

Ejecuta cualquier sentencia SQL - INSERT , UPDATE , DELETE , DDL - a través de una única llamada a Pg_Query . Cada llamada devuelve un manejador de resultado cuyo ciclo de vida es gestionado por el cliente: el resultado anterior en el mismo cliente se libera automáticamente cuando se ejecuta la siguiente consulta.

Pg_Begin , Pg_Commit , y Pg_Rollback proporcionan envolturas de una llamada alrededor de los comandos de transacción SQL estándar. Para la recuperación de errores anidados, utilice puntos de guardado ( SAVEPOINT nombre / ROLLBACK TO nombre ) a través de Pg_Query .

Funciones cliente
Función Descripción
Pg_Version() Devuelve la cadena de versión de la librería.
Pg_Create() Asigna un nuevo manejador de cliente. Devuelve 0 en caso de fallo.
Pg_Destroy(h) Libera el manejador del cliente y su resultado actual.
Pg_Connect(h, host, port, db, user, pass, ssl, app) Conecta y autentica contra el servidor.
Pg_Disconnect(h) Envía un mensaje Terminate y cierra el socket limpiamente.
Pg_IsConnected(h) True sólo cuando la conexión está en estado READY.
Pg_IsAlive(h) Verdadero si el socket está abierto y el protocolo está al menos LISTO.
Pg_Ping(h) Ejecuta SELECT 1 para verificar que la conexión está en buen estado.
Pg_Query(h, sql) Ejecuta cualquier sentencia SQL y devuelve un manejador de resultado.
Pg_Begin(h) Inicia una transacción y devuelve un manejador de resultado.
Pg_Commit(h) Compromete la transacción actual.
Pg_Rollback(h) Retrocede la transacción actual.
Pg_LastError(h) Devuelve el último mensaje de error a nivel de protocolo o socket.
Funciones de resultado
Función Descripción
Res_IsOk(r) Verdadero si la consulta se ha realizado correctamente.
Res_HasRows(r) True si el resultado contiene al menos una fila.
Res_CommandTag(r) Etiqueta del comando del servidor, por ejemplo INSERT 0 1 o UPDATE 3.
Res_AffectedRows(r) Filas afectadas por INSERT, UPDATE o DELETE.
Res_NumRows(r) Número de filas en el resultado.
Res_NumFields(r) Número de columnas del resultado.
Res_FieldName(r, col) Nombre de la columna en el índice dado.
Res_FieldIndex(r, nombre) Índice de columna para un nombre dado. Devuelve -1 si no se encuentra.
Res_Siguiente(r) Avanza el iterador de filas. Devuelve true mientras queden filas.
Res_ResetIterator(r) Restablece el iterador a antes de la primera fila.
Res_IsNull(r, col) True si el valor de la fila actual en col es NULL.
Res_GetValue(r, col) Valor de la fila actual como cadena por índice de columna.
Res_GetValueByName(r, nombre) Valor de la fila actual como cadena por nombre de columna.
Res_GetInt(r, col) Analiza el valor actual como int.
Res_GetLong(r, col) Analiza el valor actual como long.
Res_GetDouble(r, col) Analiza el valor actual como double.
Res_GetBool(r, col) Analiza el valor actual como bool.
Res_GetDatetime(r, col) Analiza el valor actual como datetime.
Res_ErrorMessage(r) Texto del mensaje de error del servidor cuando Res_IsOk es false.
Res_ErrorSQLState(r) Código SQLSTATE de PostgreSQL de 5 caracteres.


#include <PostgresLib.mqh>

void OnStart()
{
   long h = Pg_Create();
   Pg_Connect(h, "127.0.0.1", 5432, "postgres", "postgres", "postgres", false, "MQLPgClient");

   long r = Pg_Query(h, "SELECT symbol, price, timestamp FROM trades LIMIT 10");
   while(Res_Next(r))
      Print(Res_GetValueByName(r, "symbol"), " @ ", Res_GetDouble(r, Res_FieldIndex("price")), " at ", Res_GetValue(r, 2));

   Pg_Disconnect(h);
   Pg_Destroy(h);
}
Otros productos de este autor
Crypto Charts
Romeu Bertho
4.11 (9)
Crypto Charts es un servicio que se conecta a las bolsas de criptomonedas y ofrece tres tipos de datos de mercado en un solo paquete: velas OHLCV históricas y en vivo, datos de tick en tiempo real y profundidad de mercado (libro de órdenes). Todos los datos se introducen en MT5 como símbolos personalizados que se comportan como instrumentos nativos, accesibles en gráficos, indicadores, Asesores Expertos y el Probador de Estrategias. Los operadores que prefieran el entorno de análisis de MT5 pued
Percent Crosshair es una potente y sencilla herramienta de medición de porcentajes. ¡Mida el porcentaje del gráfico rápidamente! ¡No pierda más su tiempo! Sólo tiene que colocar el indicador de porcentaje de retícula en el gráfico, seleccionar el modo de retícula en las barras de herramientas o pulsar Ctrl+F y empezar a utilizar la retícula como siempre. La medida del porcentaje aparecerá junto al precio indicativo. ¡Personalice su indicador como desee! Hay cuatro parámetros de entrada: Color %
Percent Crosshair es una potente y sencilla herramienta de medición de porcentajes. ¡Mida el porcentaje del gráfico muy rápidamente! ¡No pierda más su tiempo! Simplemente coloque el indicador Percent Crosshair en el gráfico, seleccione el modo crosshair en las barras de herramientas o presione "Ctrl+F" y comience a utilizar el crosshair como siempre lo hace. La medida porcentual aparecerá junto al precio indicativo. ¡Personalice su indicador como desee! Hay 4 parámetros de entrada: Color % posit
Order Flow Balance es un potente indicador para la Lectura de Cintas (Tiempo y Ventas). Le ayuda a analizar el Mercado de Flujo de Órdenes, encontrar dónde se mueven los jugadores, el desequilibrio del mercado, posibles puntos de reversión y ¡mucho más! El indicador funciona en MOEX, BM&FBOVESPA, CME, etc. Tiene 5 tipos de indicadores diferentes Delta Acumulativo: También conocido como Delta de Volumen Acumulado, es un método avanzado de análisis de volumen donde los operadores pueden ver la dif
El análisis de criptodivisas nunca ha sido tan fácil con Crypto Charts para MetaTrader 5. Ahora, el comercio en BitMEX nunca ha sido más fácil con BitMEX Trading API para MetaTrader 5. La librería BitMEX Trading API fue construida para ser lo más fácil de usar posible. Simplemente incluya la librería en su Asesor Experto o Script, llame a los métodos correspondientes y ¡empiece a operar! Características Opere en BitMEX y BitMEX Testnet. Construye y automatiza tus estrategias. Preocúpate más de
Filtro:
No hay comentarios
Respuesta al comentario