Die Unterschiede zwischen einem Commodity Futures CTP und einer Digital Currency API sind deutlich, wenn man sich mit digitalen Währungen vertraut macht und nicht mit Commodity Futures vertraut ist.
Historische Daten
Die CTP-Schnittstelle bietet keine historischen Märkte an, die von den Händlern gelöst werden müssen. Die CTP bietet keinen Marktwiederherstellungsmechanismus, wenn keine Ankunft oder ein Abbruch der Ankunft zu einem Verlust von Marktdaten führt.
Die Vereinbarung ist anders.
Die APIs für digitale Währungen sind im Allgemeinen REST- und Websocket-Protokolle. CTP umfasst die Netzwerklogik und verwendet FTD-Protokollen, die auf dem TCP-Protokoll basieren, um mit dem CTP-Hintergrund zu kommunizieren.
Alle Märkte und Transaktionen werden erst nach einer Änderung informiert, während die Abfrage von Bestellungen, Konten und Lagerbeständen eine aktive Abfrage ist.
Die Daten unterscheiden sich in ihrer Präzision
Die CTP-Protokolltiefe ist nur ein Kauf und ein Verkauf, die Fünf-Faktor-Börse ist teuer, und die digitale Währung kann in der Regel die volle Tiefe oder 200-Faktoren erhalten. CTP fördert keine echten Transaktionen, sondern nur durch die Rückwirkung von Lageränderungen, während die Digital-Währung-Börse-API echte Auszahlungen erhalten kann. Die Transaction-Daten-Tick-Level der inländischen CTP-Plattform beträgt 1 Sekunde 2 Tick-Tick.
Verschiedene Zugangsbeschränkungen
Digitale Währungsaustausch begrenzen sich im Allgemeinen auf 1 Sekunde und 10 Mal. Für die meisten Auftragsabhebungen gibt es auch keine besonderen Anforderungen. Die CTP hat strenge Einschränkungen für Anfragen, die aktiv ausgegeben werden müssen.
Stabilität
Das CTP-Protokoll ist sehr stabil und hat kaum Fehler und Netzwerkprobleme. Digitale Währungen sollten weniger Einschränkungen, lange Transaktionszeiten, Wartung, Datenverzögerungen und Netzwerkfehler haben.
FMZ-Quantifizierungsplattform CTP-Protocol-Best Practices
Die CTP-Standardmodus-Schnittstellen für die Beschaffung von Transaktionen wie GetTicker, GetDepth und GetRecords haben alle Cache-Daten, um die neuesten zu erhalten. Wenn keine Daten vorhanden sind, wird auf die Daten gewartet, so dass die Strategie ohne Sleep verwendet werden kann. Wenn sich die Branche ändert, werden die Tickern, Tiefen und Aufzeichnungen aktualisiert.
Wenn Sie Daten jedes Mal erhalten möchten, können Sie sogar alte Daten in den Markt-Instant-Update-Modus wechseln.exchange.IO("mode", 0) ‒ zu diesem Zeitpunkt kann die Strategie nicht mehr als Ereignisgetrieben geschrieben werden, sondern muss ein Sleep-Ereignis hinzugefügt werden, um einen schnellen Todeszyklus zu vermeiden. Einige weniger häufige Strategien können dieses Modell verwenden, wobei die Strategie einfach gestaltet ist.使用exchange.IO("Mode", 1) kann in den Cache-Modus zurückgeschaltet werden.
Bei der Handhabung einzelner Kontrakte kann der Standardmodus verwendet werden. Bei mehreren Kontrakte kann es jedoch vorkommen, dass ein Kontrakt keine Aktualisierungsmärkte hat, was zu einem Blockade der Zugangsmarkt-Schnittstelle führt, und dass andere Kontrakte keine Aktualisierungen erhalten.设置方式为exchange.IO("wait")、 Wenn mehrere Börsenobjekte hinzugefügt werden, was in der Kommoditäts-Futures-Branche selten vorkommt, kann es möglich sein, dass die Angabe der Angabe in der Angabe des Ansatzes nicht erfolgt.可以使用exchange.IODer Index, der zurückgegeben wird, zeigt den Index der zurückgegebenen Börse.
Transaktionstick-Änderungen werden geschoben: {Event:
Die Strategiestruktur kann in folgenden Formulierungen 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")){ //判断链接状态
exchange.IO("mode", 0)
_C(exchange.SetContractType, "MA888")//订阅MA,只有第一次是真正的发出订阅请求,接下来都是程序切换,不耗时间。
_C(exchange.SetContractType, "rb888")//订阅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)
}
}
}