PostgreSQL Client

Ein vollständiger PostgreSQL-Client, implementiert in reinem MQL5 über native MetaTrader 5 TCP-Sockets.

Die Bibliothek implementiert den PostgreSQL-Client mit MD5- und SCRAM-SHA-256-Authentifizierung, SSL/TLS, dem Simple Query Protocol und expliziten Transaktionen.

Keine DLLs, keine externen Abhängigkeiten, keine Dienste von Drittanbietern.

Merkmale

Direkte TCP-Verbindung zu jeder PostgreSQL-kompatiblen Datenbank
MD5- und SCRAM-SHA-256-Authentifizierung, automatische Erkennung
SSL/TLS über den SSLRequest-Flow von PostgreSQL
Vollständige Transaktionsunterstützung
Typisierte Ergebnis-Accessoren mit NULL-Erkennung
Bad-Handle-Safe - bringt Ihren EA nicht zum Absturz

Kompatibilität

Entwickelt für PostgreSQL > 7.4 bis 18

RDS PostgreSQL
Amazon Aurora PostgreSQL
Supabase (Cloud und selbstgehostet)
CockroachDB
CrateDB
YugabyteDB
Google Cloud SQL für PostgreSQL
Azure Database für PostgreSQL


Erste Schritte

Übergeben Sie useSSL = true an Pg_Connect . Die Bibliothek führt die standardmäßige PostgreSQL SSLRequest-Verhandlung durch und aktualisiert auf TLS über SocketTlsHandshake . Wenn der Server die Anfrage ablehnt, gibt der Client eine Warnung aus und setzt die Verbindung unverschlüsselt fort.

Führen Sie jede SQL-Anweisung - INSERT , UPDATE , DELETE , DDL - durch einen einzigen Pg_Query-Aufruf aus. Jeder Aufruf gibt ein Ergebnis-Handle zurück, dessen Lebenszyklus vom Client verwaltet wird: Das vorherige Ergebnis auf demselben Client wird automatisch freigegeben, wenn die nächste Abfrage ausgeführt wird.

Pg_Begin , Pg_Commit und Pg_Rollback bieten Ein-Aufruf-Verschalungen um die Standard-SQL-Transaktionsbefehle. Für verschachtelte Fehlerbehebung verwenden Sie Savepoints ( SAVEPOINT name / ROLLBACK TO name ) über Pg_Query .

Client-Funktionen
Funktion Beschreibung
Pg_Version() Gibt den String der Bibliotheksversion zurück.
Pg_Create() Weist ein neues Client-Handle zu. Gibt im Fehlerfall 0 zurück.
Pg_Destroy(h) Gibt das Client-Handle und sein aktuelles Ergebnis frei.
Pg_Connect(h, host, port, db, user, pass, ssl, app) Stellt eine Verbindung her und authentifiziert sich gegenüber dem Server.
Pg_Disconnect(h) Sendet eine Terminate-Nachricht und schließt den Socket sauber.
Pg_IsConnected(h) Nur wahr, wenn die Verbindung im Zustand READY ist.
Pg_IsAlive(h) True, wenn der Socket offen ist und das Protokoll mindestens READY ist.
Pg_Ping(h) Führt SELECT 1 aus, um zu überprüfen, ob die Verbindung in Ordnung ist.
Pg_Query(h, sql) Führt eine beliebige SQL-Anweisung aus und gibt ein Ergebnis-Handle zurück.
Pg_Begin(h) Startet eine Transaktion und gibt ein Ergebnis-Handle zurück.
Pg_Commit(h) Setzt die aktuelle Transaktion fest.
Pg_Rollback(h) Rollt die aktuelle Transaktion zurück.
Pg_LastError(h) Gibt die letzte Fehlermeldung auf Protokoll- oder Socket-Ebene zurück.
Ergebnis-Funktionen
Funktion Beschreibung
Res_IsOk(r) True, wenn die Abfrage erfolgreich war.
Res_HasRows(r) Wahr, wenn das Ergebnis mindestens eine Zeile enthält.
Res_CommandTag(r) Server-Befehls-Tag, zum Beispiel INSERT 0 1 oder UPDATE 3.
Res_AffectedRows(r) Von INSERT, UPDATE oder DELETE betroffene Zeilen.
Res_NumRows(r) Anzahl der Zeilen im Ergebnis.
Res_NumFields(r) Anzahl der Spalten im Ergebnis.
Res_FieldName(r, col) Spaltenname am angegebenen Index.
Res_FieldIndex(r, name) Spaltenindex für einen gegebenen Namen. Gibt -1 zurück, wenn nicht gefunden.
Res_Next(r) Bringt den Zeilen-Iterator weiter. Gibt true zurück, solange Zeilen übrig sind.
Res_ResetIterator(r) Setzt die Iteration vor die erste Zeile zurück.
Res_IsNull(r, col) True, wenn der Wert der aktuellen Zeile bei col NULL ist.
Res_GetValue(r, col) Aktueller Zeilenwert als String nach Spaltenindex.
Res_GetValueByName(r, name) Aktueller Zeilenwert als String nach Spaltenname.
Res_GetInt(r, col) Analysiert den aktuellen Wert als int.
Res_GetLong(r, col) Analysiert den aktuellen Wert als Long.
Res_GetDouble(r, col) Analysiert den aktuellen Wert als Double.
Res_GetBool(r, col) Analysiert den aktuellen Wert als bool.
Res_GetDatetime(r, col) Analysiert den aktuellen Wert als datetime.
Res_ErrorMessage(r) Text der Server-Fehlermeldung, wenn Res_IsOk falsch ist.
Res_ErrorSQLState(r) 5-stelliger PostgreSQL SQLSTATE-Code.


#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);
}
Weitere Produkte dieses Autors
Crypto Charts
Romeu Bertho
4.11 (9)
Crypto Charts ist ein Service, der sich mit Kryptowährungsbörsen verbindet und drei Arten von Marktdaten in einem einzigen Paket liefert: historische und Live-OHLCV-Kerzen, Echtzeit-Tickdaten und Depth of Market (Orderbuch). Alle Daten werden in MT5 als benutzerdefinierte Symbole eingefügt, die sich wie native Instrumente verhalten und auf Charts, in Indikatoren, Expert Advisors und dem Strategy Tester zugänglich sind. Händler, die die Analyseumgebung von MT5 bevorzugen, können Crypto Charts nut
Percent Crosshair ist ein leistungsstarkes und einfaches Werkzeug zur Messung von Prozentsätzen. Messen Sie schnell den Prozentsatz im Diagramm! Verschwenden Sie nicht mehr Ihre Zeit! Hängen Sie einfach den Prozent-Fadenkreuz-Indikator in den Chart ein, wählen Sie den Fadenkreuz-Modus in der Symbolleiste oder drücken Sie Strg+F und schon können Sie das Fadenkreuz wie gewohnt verwenden! Das Prozentmaß wird neben dem indikativen Preis angezeigt. Passen Sie Ihren Indikator an, wie Sie wollen! Es gi
Percent Crosshair ist ein leistungsfähiges und einfaches Werkzeug zur Messung von Prozenten. Messen Sie den Prozentsatz im Diagramm sehr schnell! Verschwenden Sie nicht länger Ihre Zeit! Hängen Sie einfach den Prozent-Fadenkreuz-Indikator in den Chart ein, wählen Sie den Fadenkreuz-Modus in der Symbolleiste oder drücken Sie "Strg+F" und schon können Sie das Fadenkreuz wie gewohnt verwenden! Das Prozentmaß wird neben dem indikativen Preis angezeigt. Passen Sie Ihren Indikator an, wie Sie wollen!
Order Flow Balance ist ein leistungsstarker Indikator für Tape Reading (Time & Sales). Er hilft Ihnen, den Order Flow Markt zu analysieren, herauszufinden, wo sich die Spieler bewegen, Marktungleichgewicht, mögliche Umkehrpunkte und vieles mehr! Der Indikator funktioniert auf MOEX, BM&FBOVESPA, CME, etc. Er verfügt über 5 verschiedene Indikatortypen Kumulatives Delta: Auch bekannt als Cumulative Volume Delta, ist es eine fortgeschrittene Methode der Volumenanalyse, bei der Händler den täglichen
Die Analyse von Kryptowährungen war mit Crypto Charts für MetaTrader 5 noch nie so einfach. Der Handel an der BitMEX war noch nie so einfach wie mit der BitMEX Trading API für MetaTrader 5. Die BitMEX Trading API Bibliothek wurde so entwickelt, dass sie so einfach wie möglich zu benutzen ist. Binden Sie die Bibliothek einfach in Ihren Expert Advisor oder Ihr Script ein, rufen Sie die entsprechenden Methoden auf und beginnen Sie mit dem Handel! Eigenschaften Handeln Sie auf BitMEX und BitMEX Te
Auswahl:
Keine Bewertungen
Antwort auf eine Rezension