Strategierahmen und API-Funktionen
In den inJavaScript
, Python
undcpp
, dieSleep()
In Live-Trading wird es verwendet, um die Strategie-Polling-Intervalle zu steuern und auch die Anforderungsfrequenz des Zugriffs auf die API-Schnittstelle der Börse zu steuern.
function onTick(){
//Write strategy logic here, and it will be called constantly, such as printing ticker information
Log(exchange.GetTicker())
}
function main(){
while(true){
onTick()
// The function "Sleep" is mainly used to control the polling frequency of cryptocurrency strategies to prevent accessing the exchange API interafce too frequently
Sleep(60000)
}
}
def onTick():
Log(exchange.GetTicker())
def main():
while True:
onTick()
Sleep(60000)
void onTick() {
Log(exchange.GetTicker());
}
void main() {
while(true) {
onTick();
Sleep(60000);
}
}
Grundlegende Rahmenbeispiele für Kryptowährungsstrategien:
function onTick(){
// It is just an example; for all the assets will be used to place orders fast during backtest or in live trading, do not implement the example in live trading
exchange.Buy(100, 1)
}
function main(){
while(true){
onTick()
// The pause period can be customized in millisecond (1 second = 1000 milliseconds)
Sleep(1000)
}
}
def onTick():
exchange.Buy(100, 1)
def main():
while True:
onTick()
Sleep(1000)
void onTick() {
exchange.Buy(100, 1);
}
void main() {
while(true) {
onTick();
Sleep(1000);
}
}
Nehmen wir das einfachste Beispiel, wenn ich einen Kauf Auftrag mit einem Preis von 100 und einer Menge von 1 auf der Börse jede Sekunde platzieren möchte, kann ich es so schreiben:
Im Folgenden werden die häufig verwendeten API-Funktionen in der Strategieentwicklung und -gestaltung dargestellt.FMZ Quant Trading Plattform API Handbuch.
Globale Funktion
Funktionsname |
Kurze Einleitung |
Ausgabe |
Gibt die |
aktuelle Versionnummer des Systems |
|
Schlaf |
Schlaffunktion, |
Parameter ist der Wert von Millisekunden zum Pausieren |
|
Istvirtual |
Feststellung der |
Ausführungsumgebung, gibt einen wahren Wert zurück, um einen Backtest anzuzeigen
Umgebung
Das ist eine sehr schöne Idee.PostSenden Sie eine E-Mail.
Das ist eine sehr schöne Idee.E-Mail_GoEs ist asynchron.
Version derMail
Funktion.
Das ist eine sehr schöne Idee.SetErrorFilterFilterfehler
Logs, der Parameter ist eine regelmäßige Ausdrucksfolge, die Fehlerlogs
die mit diesem regulären Ausdruck übereinstimmt, wird nicht in die Protokollfassung hochgeladen.
Das System.
Das ist ein sehr gutes Beispiel.GetPid- Holen Sie den Roboter.
Prozess-ID.
Das ist eine sehr schöne Idee.GetLastErrorIch habe die letzte.
Fehlermeldung.
Das ist eine sehr schöne Idee.GetCommandMachen Sie sich eine Strategie.
Interaktionsbefehle, Strategie-Interaktionssteuerungen können
[Interaktionssteuerung]
Das ist ein sehr gutes Beispiel.GetMetaErhalten Sie den Wert von
Meta geschrieben beim Generieren des Strategie-Registrierungscodes.
Das ist eine sehr schöne Idee.WählenIch benutze es als Rohmaterial.
Socket-Zugriff.
Das ist eine sehr schöne Idee.HttpQuerySenden Sie eine HTTP-Anfrage.
Das ist eine sehr schöne Idee.HttpQuery_GoEs ist asynchron.
Version derHttpQuery
Funktion.
Das ist eine sehr schöne Idee.CodierenDatenkodierung.
Funktion.
Das ist eine sehr schöne Idee.UnixNanoErhalten Sie eine Nanosekunde.
Zeitstempel.
Das ist eine sehr schöne Idee.UnixErhalten Sie die zweite Ebene.
Zeitstempel.
Das ist eine sehr schöne Idee.GetOSIch werde ein System.
Informationen.
Das ist eine sehr schöne Idee.MD5Berechnen Sie MD5.
Das ist eine sehr schöne Idee.DBExecDatenbank.
Funktionen, mit denen SQL-Anweisungen ausgeführt und ausgeführt werden können
Datenbankoperationen.
Das ist eine sehr schöne Idee.UUIDErstellen Sie eine UUID.
Das ist eine sehr schöne Idee.EventLoopHör auf Ereignisse
und zurückkehren, nachdem jeder Websocket lesbar ist oder gleichzeitige Aufgaben wieexchange.Go
, HttpQuery_Go
, etc. abgeschlossen sind, wird diese Funktion
ist nur für Live-Trading verfügbar.
Das ist eine sehr schöne Idee._GPersistent Daten speichern.
Diese Funktion implementiert eine speicherbare globale Wörterbuchfunktion.
Struktur ist eine KV-Tabelle, die in der lokalen Datenbank des Docker gespeichert wird
Die Datei ist dauerhaft.
Das ist ein sehr gutes Beispiel._DZeitstempel-Handler, konvertiert
Ein Millisekundenzeitstempel oder Datum Objekt für eine Zeitkette.
Das ist ein sehr gutes Beispiel._NEin schwebender Punkt formatieren
Zahl, z. B._N(3.1415, 2)
wird der Wert von 3,1415 nach
Zwei Dezimalstellen, und die Funktion gibt 3,14 zurück.
Das ist eine sehr schöne Idee._CProbieren Sie die Funktion für
Siehe, dass zum Beispiel die Fehlerverträglichkeit für
Dieexchange.GetTicker
Funktion ist_C(exchange.GetTicker)
und nicht_C(exchange.GetTicker())
|
| _ KreuzungEine Kreuzurteilungsfunktion._Cross()
Funktions Rückgabewert ist eine positive Zahl
Die Periode des Aufwärtstrends wird durch eine negative Zahl angegeben.
Der aktuelle Preis der Eurozone ist der aktuelle Preis der Eurozone, und 0 bezieht sich auf den aktuellen Preis der Eurozone.
Das gleiche.
Das ist ein sehr gutes Beispiel.JSONParseJSON zu parsen, das
JSON-Strings, die größere Werte enthalten, werden größer analysiert
die Werte zu einem Zeichenfolge-Typ.JSONParse()
Funktion nicht unterstützt
in das Backtesting-System.
Logfunktionen
Funktionsname |
Kurze Einleitung |
Tagebücher |
Ausgangsprotokolle, Unterstützung für die Einstellung der Logtextfarbe, Unterstützung für die Einstellung von Push, Unterstützung für das Drucken von Bildern nach Base64-Codierung |
LogProfit |
Ausgangs-P&L-Daten, gedruckte P&L-Werte und Kurven der Ertragsgrößen auf der Grundlage von P&L-Werten |
LogProfitReset wird wiederhergestellt |
Entleeren Sie dieLogProfit Funktionsausgänge alle Gewinnprotokolle, Gewinndiagramme |
LogStatus |
Ausgabeinformationen in der Statusleiste, Unterstützung für die Gestaltung von Buttons in der Statusleiste, Unterstützung für die Ausgabe von Formularen |
AktivierenLog |
Ein- oder Ausschalten der Auftragsinformationsprotokollierung |
Schaubild |
Charting-Funktionen, basierend auf der Charting-Bibliothek Highcharts/Highstocks |
KLineChart |
Pine-Stil-Zeichnungsfunktion, die für die angepasste Zeichnung bei der Strategielaufzeit mit einem Pine-ähnlichen Zeichnungsstil verwendet wird |
LogReset wird wiederhergestellt |
Löschprotokolle, Unterstützung für die Speicherung einer bestimmten Anzahl aktueller Protokolle durch die Parameter-Einstellungen |
LogVacuum |
SQLite-Ressourcen zurückgewinnen, um Speicherplatz zurückzugewinnen, der von SQLite besetzt wird, wenn Daten gelöscht werden, nachdem das Protokoll gelöscht wurde.LogReset() Funktion |
console.log |
Ausgabe von Debug-Informationen in der Spalte Debug-Informationen auf der Live-Handelsseite |
console.error |
Fehlerinformationen werden in der Spalte Debug-Informationen der Live-Handelsseite ausgeführt |
Funktionen des Ticker
Transaktionsfunktionen
Funktionsname |
Kurze Einleitung |
exchange.Buy |
Einladen einer Bestellung, Futures-Kontrakte müssen darauf achten, dass die Richtung der Transaktion korrekt eingestellt ist, wenn die Richtung der Transaktion und die Transaktionsfunktion nicht übereinstimmen, wird der Fehler gemeldet! |
exchange.Sell |
Senden Sie Verkaufsaufträge, Futures-Kontrakte, wenn die Platzierung von Aufträgen müssen darauf achten, dass die Transaktionsrichtung richtig eingestellt ist, wenn die Transaktionsrichtung und die Transaktionsfunktion nicht übereinstimmen, wird es einen Fehler melden |
exchange.CreateOrder |
Übermittlung einer Bestellung und Angabe der Transaktionsart, Transaktionsrichtung, des Preises und der Menge durch Parameter |
exchange.CancelOrder |
Bestellung annullieren |
exchange.GetOrder |
Erhalten Sie Bestellinformationen, Datenstruktur istAufordnungStruktur |
exchange.GetOrders |
Nicht ausgefüllte Bestellungen mit Datenstruktur erhaltenAufordnungStruktur-Array (Liste) |
exchange.GetHistoryOrders |
Erhalten Sie die historischen Aufträge des aktuellen Handelspares und des aktuellen Handelsvertrags; Unterstützung bei der Angabe bestimmter Handelsprodukte |
exchange.SetPrecision |
Setzen Sie die Präzision des Preises und der Bestellmenge des Austauschobjekts, nachdem das System eingestellt wurde, ignoriert das System automatisch die Datenredundanz. |
exchange.SetRate |
Festlegen des Wechselkurses |
exchange.IO |
Für andere Schnittstellenanrufe im Zusammenhang mit Austauschobjekten |
exchange.Log |
Ausgabe, Aufzeichnung von Transaktionsprotokollen und keine Bestellungen |
exchange.Encode |
Berechnung der Signaturverschlüsselung |
exchange.Go |
Mehrthreaded asynchrone Stützfunktionen |
exchange.GetAccount |
Erhalten Sie Kontoinformationen |
exchange.GetAssets |
Anforderung von Informationen zu den Vermögenswerten eines Umtauschkontos |
exchange.GetName |
Erhalten Sie den Namen des Austauschobjekts |
exchange.GetLabel |
Erhalten Sie das Etikett des Austauschobjekts |
exchange.GetCurrency |
Holen Sie sich das aktuelle Handelspaar |
exchange.SetCurrency |
Wechseln von Handelsparen |
exchange.GetQuoteCurrency |
Erhalten Sie den Namen der Währung des aktuellen Handelspaares |
Zukunftsfunktionen
Funktionsname |
Kurze Einleitung |
[exchange.GetPositions(/Syntax-Guide#fun_exchange.getpositions] |
Futures-Positionen mit Datenstruktur erhaltenPositionStruktur-Array (Liste) |
exchange.SetMarginLevel |
Setzen Sie den Hebel |
exchange.SetDirection |
Funktion zur Einstellung derexchange.BuyFunktion,exchange.SellFunktion zur Ausführung der Bestellrichtung des Futures-Kontrakts |
exchange.SetContractType |
Stellen Sie zum Beispiel den Vertragskode ein:exchange.SetContractType("swap") Funktion setzt den Vertragskode aufswap , der den Vertrag für den laufenden Betrieb als dauerhaften Vertrag festlegt |
exchange.GetContractType |
Holen Sie sich den aktuellen Vertragskode |
exchange.GetFundings |
Holen Sie sich die aktuellen Futures-Börse dauerhaften Vertrag Finanzierung Rate Daten |
Netzwerkfunktionen
JavaScript-Mehrthreading
Die FMZ Quant Trading Plattform unterstützt wirklich die Mehrthread-Funktion derJavaScript
Das System setzt eine Sprachstrategie von Grund auf ein und verfolgt folgende Ziele:
Gegenstände |
Anweisungen |
Anmerkungen |
Schleiffaden |
Mehrthreadedes globales Objekt |
Funktionen der Mitglieder:Thread , getThread , mainThread , usw. |
Faden |
Thread-Objekt |
Funktionen der Mitglieder:peekMessage , postMessage , join , usw. |
ThreadLock |
Thread-Sperrobjekt |
Funktionen der Mitglieder:acquire , release . Sie können als Parameter der Thread-Ausführungsfunktion in die Thread-Umgebung übergeben werden. |
ThreadEvent |
Ereignisobjekt |
Funktionen der Mitglieder:set , clear , wait , isSet . Sie können als Parameter der Thread-Ausführungsfunktion in die Thread-Umgebung übergeben werden. |
ThreadBedingung |
Objekt der Bedingung |
Funktionen der Mitglieder:notify , notifyAll , wait , acquire , release . Sie können als Parameter der Thread-Ausführungsfunktion in die Thread-Umgebung übergeben werden. |
ThreadDict |
Wörterbuchobjekt |
Funktionen der Mitglieder:get , set . Sie können als Parameter der Thread-Ausführungsfunktion in die Thread-Umgebung übergeben werden. |
FMZ Quant Trading Plattform Syntax-HandbuchJavaScript-Mehrthreading
Web3
TA-Indikatorenbibliothek
Funktionsname |
Kurze Einleitung |
TA.MACD |
Berechnen Sie den exponentiell glätteten Divergenzdurchschnitt |
TA.KDJ |
Berechnung der stochastischen Indikatoren |
TA.RSI |
Berechnen Sie den Stärkeindikator |
TA.ATR |
Berechnung des durchschnittlichen tatsächlichen Volatilitätsindikators |
TA.OBV |
Berechnung der Energiemasseindikatoren |
TA.MA |
Berechnung der gleitenden Durchschnittsindikatoren |
TA.EMA |
Berechnung von Indikatoren für exponentielle Durchschnittswerte |
TA.BOLL |
Berechnung des Bollinger-Band-Indikators |
TA.Alligator |
Berechnen Sie den Alligator Line Indicator |
TA.CMF |
Berechnung des Indikators Chaikin Cashflow |
TA.Highest |
Berechnung des Höchstpreises für den Zeitraum |
TA.Lowest |
Berechnung des Mindestpreises für den Zeitraum |
TA.SMA |
Berechnung der einfachen gleitenden Durchschnittsindikatoren |
Talib Indikator Bibliothek
Die Talib-Indikatorbibliothek enthält zahlreiche Handelsindikatoren wietalib.CDL2CROWSSie können zum Syntax-Handbuch springen.
Strategie-Eingabefunktionen
Bibliotheken mit Vorlagen