Différences entre les API des futures sur produits et les échanges de crypto-monnaie

Auteur:Le foin, Créé: 2019-09-21 17:37:21, Mis à jour: 2023-10-19 21:05:12

img

Il existe des différences significatives entre les CTP de produits à terme et les APIs de devises numériques, et il n'est pas facile de copier l'expérience de ceux qui sont familiers avec les transactions de devises numériques et ceux qui ne le sont pas.

Données historiques

L'interface CTP ne fournit pas de marchés historiques, les marchés historiques devant être résolus par les négociants. Si une non-arrivée ou une rupture de la ligne de destination entraîne une perte de données de marché, le CTP ne fournit pas de mécanisme de compensation de marché.

Les accords sont différents

L'API de la crypto-monnaie est généralement le protocole REST et le protocole websocket, le CTP est enveloppé dans la logique du réseau et utilise le protocole FTD basé sur le protocole TCP pour communiquer en arrière-plan avec le CTP. Il existe trois modes:

  • Mode de réponse à la demande: le client lance la demande, le CTP reçoit et répond en arrière-plan
  • Modèle de communication radiophonique: après que le client a souscrit à un contrat, le CTP diffuse des informations sur le marché par radio.
  • Mode de communication privée: après que le client a commandé un contrat, des informations de facturation, des retours de transactions, etc. sont envoyées de point en point par CTP.

Toutes les transactions et commandes effectuées dans le protocole CTP ne sont notifiées qu'après un changement, tandis que les commandes, les comptes et les détentions sont des requêtes actives. Les trois modèles ci-dessus peuvent être trouvés sous une forme similaire dans l'API de la monnaie numérique.

La précision des données varie

La profondeur du protocole CTP n'est qu'un achat et une vente, les frais de transaction sont coûteux, les crypto-monnaies sont généralement disponibles en pleine profondeur ou 200 fichiers. Le CTP ne pousse pas les transactions réelles, il ne peut être rétrocuté que par la modification des stocks, tandis que l'API de l'échange de crypto-monnaie peut obtenir des transactions réelles.

Les restrictions d'accès sont différentes

Les échanges de crypto-monnaie sont généralement limités à 1 seconde et 10 fois. Il n'y a pas non plus de exigences particulières pour la plupart des retraits d'ordres. Les CTP limitent strictement les demandes qui nécessitent une initiative, généralement 2s une fois plus sûre, et il y a également des exigences pour le nombre de retraits.

La stabilité

Le protocole CTP est très stable et présente peu d'erreurs et de problèmes de réseau. Les monnaies numériques devraient être moins limitées, avoir de longues durées de transaction, et les situations de maintenance, de décalage de données, d'erreurs de réseau sont courantes.

Les meilleures pratiques en matière de protocole CTP

Les interfaces de mode CTP par défaut pour l'acquisition de transactions telles que GetTicker, GetDepth et GetRecords ont toutes des données mises en cache afin d'obtenir les données les plus récentes. La stratégie peut donc être utilisée sans sommeil. Lorsqu'une transaction change, les tickers, la profondeur et les enregistrements sont mis à jour.

Si vous souhaitez accéder aux données à chaque fois que vous les obtenez, même les anciennes données, vous pouvez passer à un mode de mise à jour instantanée des marchés.exchange.IO("mode", 0) ; à ce stade, la stratégie ne peut pas être écrite comme un événement, il faut ajouter un événement Sleep pour éviter un cycle mort rapide. Certaines stratégies à faible fréquence peuvent utiliser ce mode, la stratégie est simple à concevoir.使用exchange.IO("mode", 1) pour revenir au mode de mise en cache par défaut.

Lors de l'opération d'un seul contrat, il est possible d'utiliser le mode par défaut. Mais s'il s'agit de plusieurs contrats, il est possible qu'un contrat n'ait pas de mise à jour de marché, ce qui entraîne un blocage de l'interface d'accès au marché et que les autres contrats ne puissent pas obtenir de mises à jour de marché. Pour résoudre ce problème, il est possible d'utiliser le mode de mise à jour immédiate, mais il n'est pas pratique d'écrire une stratégie haute fréquence.设置方式为exchange.IO("wait") ; si plusieurs objets d'échange sont ajoutés, ce qui est rare dans les futures sur matières premières, il peut être nécessaire d'ajouter des objets supplémentaires.可以使用exchange.IO("wait_any"), l'index retourné indique l'index de l'échange retourné.

Les modifications apportées par la case tick: {Event: tick tick, Index: index de l'échange (ajouté dans l'ordre par le robot d'échange), Nano: temps d'événement en nanosecondes, Symbol: nom du contrat} Push des commandes: {Event: orderpush, Index: indice de l'échange, Nano: temps d'événement en nanosecondes, Order: information de l'ordre (obtenu avec GetOrder) }

La structure de la stratégie peut être écrite comme suit:

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)
        }
    }
}

Relationnée

Plus de