Ähnlichkeiten und Unterschiede zwischen Rohstofffutures und Kryptowährungsbörsen API

Schriftsteller:Gutes, Erstellt: 2019-09-28 10:22:34, Aktualisiert: 2023-11-06 20:01:39

img

Der Handel mit Kryptowährungs-Futures (CTP) und der Austausch von Kryptowährungs-API haben erhebliche Unterschiede.

Historische Daten

Die CTP-Schnittstelle bietet keine historische Marktquote, und die historische Marktquote muss über die Marktquote-Agentur gelöst werden. Wenn die Marktdaten aufgrund des Versagens bei der Anmeldung verloren gehen, bietet die CTP keinen Marktnachfüllmechanismus. Historische Marktquote können nur durch eine Drittagentur erhalten werden. Die meisten Kryptowährungsbörsen bieten normalerweise eine Schnittstelle zum Erhalt von K-Line und Transaktionsgeschichte.

Unterschiedliche Vereinbarung

Die Kryptowährungsbörse API ist in der Regel einRESTundwebsocketDas CTP verkapselt intern die netzwerkbezogene Logik und kommuniziert mit dem CTP-Hintergrund mithilfe des FTD-Protokolls auf Basis des TCP-Protokolls.

  • Request Response-Modus: Der Client initiiert eine Anfrage und der CTP-Hintergrund empfängt und reagiert auf die Anfrage.

  • Broadcast-Kommunikationsmodus: Nachdem der Kunde das Marktangebot für den Vertrag abonniert hat, schickt das CTP die Marktangebot durch die Sendung.

  • Privatkommunikationsmodus: Nachdem der Kunde einen Vertrag abgeschlossen hat, werden die Auftragsinformationen, die Transaktionsrückgabe usw. vom CTP von Punkt zu Punkt weitergeleitet.

Alle Angebote und Auftragsgeschäfte der CTP-Vereinbarung werden nach Änderungen benachrichtigt, während die Anfrageaufträge, Konten und Positionen aktiv abgefragt werden.

Verschiedene Datenstufen

Die Tiefe des CTP-Protokolls sind nur der neueste Kauf- und Verkaufspreis, die tieferen Marktnotierungen wie fünf Schichten Kauf- und Verkaufspreis sind teuer, Sie müssen zusätzliches Geld an die Futures-Börse zahlen, um es zu erhalten. Auf der anderen Seite, Die Kryptowährungsbörse kann in der Regel volle Tiefe bis zu 200 Schichten Kauf- und Verkaufspreise erhalten.

Außerdem drückt CTP die tatsächlichen Transaktionsbewertungen nicht, es kann nur durch Positionsänderungen umgekehrt werden, und die Kryptowährungsbörse API kann echte detaillierte Transaktionsbewertungen erhalten.

Verschiedene Zugangsbeschränkungen

Die Auszahlung von Bestellungen ist in der Regel auf 10 Ticks pro Sekunde beschränkt. Es gibt keine besonderen Anforderungen an die Auszahlung von Bestellungen. CTP hat strenge Einschränkungen für Anfragen, die aktiv gesendet werden müssen. Im Allgemeinen ist einmal pro 2 Sekunden ziemlich sicher, und es gibt auch Anforderungen an die Anzahl der Auszahlungen.

Stabilität

Das CTP-Protokoll ist sehr stabil und es gibt fast keine Fehler oder Netzwerkprobleme.

FMZ Quant-Plattform CTP-Protokoll Best Practices

CTP-Standardmodus, um die Marktoberfläche wieGetTicker, GetDepth, GetRecordsDaten werden zwischengespeichert, um die neuesten zu erhalten, wenn es keine Daten gibt, wird warten, bis es Daten gibt, so dass die Strategie nicht verwenden kannSleepWenn sich ein Marktkurs ändert,ticker, depth, undrecordsDer Status der aufgerufenen Schnittstelle wird so eingestellt, dass er auf den Update-Modus wartet. Wenn die gleiche Schnittstelle beim nächsten Aufruf aufgerufen wird, wartet er auf die Rückgabe neuer Daten.

Einige unpopuläre Handelskontrakte oder der Preis erreicht den täglichen begrenzten Preis wird für eine lange Zeit ohne jegliche Handelsaktivitäten auftreten, was normal ist, wenn die Strategie für eine lange Zeit stecken bleibt.

Wenn Sie die Daten jedes Mal, wenn Sie das Marktangebot erhalten, auch die alten Daten, können Sie auf den Markt sofort aktualisieren Modus wechselnexchange.IO ("mode", 0). An dieser Stelle kann die Strategie nicht als Ereignistreiber geschrieben werden.SLeepEinige Niederfrequenzstrategien können diesen Modus verwenden, und das Strategie-Design ist einfach.exchange.IO("mode", 1)um wieder in den Standard-Cache-Modus zu wechseln.

Bei der Ausführung eines einzigen Vertrages ist es in Ordnung, den Standardmodus zu verwenden. Wenn es jedoch mehrere Handelsverträge gibt, ist es möglich, dass ein Vertrag nicht aktualisiert wurde, was zu einer Blockierung der Marktoberfläche führt, und andere Handelsvertragsmarktangebote Updates sind nicht verfügbar. Um dieses Problem zu lösen, können Sie den sofortigen Aktualisierungsmodus verwenden, aber es ist nicht praktisch, eine Hochfrequenzstrategie zu schreiben. Zu diesem Zeitpunkt können Sie den Ereignis-Push-Modus verwenden, um die Push-Bestellungen und Angebote zu erhalten.exchange.IO("wait")Wenn mehrere Austauschobjekte hinzugefügt werden, ist dies eine seltene Situation im Rohstoff-Futures-Handel, können Sieexchange.IO ("wait_any"), und die zurückgekehrtenindexwird der Index des zurückgegebenen Austauschs angeben.

MarktnotentickWechseldruck:

{Event:"tick", Index: exchange index (in the order of robot exchange added), Nano: event nanosecond time, Symbol: contract name}

Befehl Schub:

{Event:"order", Index: Exchange Index, Nano: Event Nanosecond Time, Order: Order Information (consistent with GetOrder)}

An dieser Stelle kann die Strategiestruktur wie folgt geschrieben werden:

function on_tick(symbol){
     Log("symbol update")
     exchange.SetContractType(symbol)
     Log(exchange.GetTicker())
}

function on_order(order){
     Log("order update", order)
}

function main(){
     while(true){
         if(exchange.IO("status")){ //Determine the link status
             exchange.IO("mode", 0)
             _C (exchange.SetContractType, "MA888") // subscribe to the MA, only the first time is the real request to send a subscription, the following are just program switch, won't consume any time.
             _C(exchange.SetContractType, "rb888") // Subscribe rb
             While(True){
                 Var e = exchange.IO("wait")
                 If(e){
                     If(e.event == "tick"){
                         On_tick(e.Symbol)
                     }else if(e.event == "order"){
                         On_order(e.Order)
                     }
                 }
            }
         }else{
             Sleep(10*1000)
         }
     }
}

Verwandt

Mehr