2.8 Modifier le mode de mise à jour des données de marché (pour plus de détails)

Auteur:Le petit rêve, Créé: 2016-07-13 10:08:50, Mis à jour: 2017-10-11 10:21:29

Modifier le mode de mise à jour des données du marché

  • Voici une présentation dans la documentation de l'API:
// 只支持Websocket模式(huobi, okcoin.cn, BTCC支持)与商品期货CTP协议
exchange.IO("websocket"); // 切换行情通信协议到websocket(默认为rest), Ticker, Depth会切换为websocket协议来更新, 商品期货CTP无需切换
// 切换GetTicker, GetDepth数据更新模式
exchange.IO("mode", 0); // 立即返回模式, 如果当前还没有接收到交易所最新的行情数据推送, 就立即返回旧的行情数据, 如果有新的数据就返回新的数据
exchange.IO("mode", 1); // 缓存模式(默认模式), 如果当前还没有收到交易所最新的行情数据(同上一次api获取的数据比较), 就等待接收然后再返回, 
                        //如果调用该函数之前收到了最新的行情数据, 就立即返回最新的数据
exchange.IO("mode", 2); // 强制更新模式, 进入等待一直到接收到交易所下一次的最新推送数据后返回
// 如果想第一时间获取最新的行情可以切换到websocket后不Sleep的立即检测数据, GetTicker, GetDepth用缓存模式进行工作
exchange.IO("websocket");
while (true) {
    Log(exchange.GetTicker());
}
  • Pour faciliter la compréhension des utilisateurs, nous vous présentons ci-dessous:

    • 1, le système de plate-forme est en mode repos par défaut: une demande de données API en mode repos, le serveur de l'échange renvoie une fois les données (la dernière mise à jour actuelle) Le serveur de l'échange ne pousse pas de manière proactive les données les plus récentes aux utilisateurs. La stratégie consiste donc à demander des données fréquemment en mode repos pour garantir une accès rapide aux dernières données (pas nécessairement dès la première génération de nouvelles données, car une question est une réponse).

    • 2, l'API prise en charge par le mode websocket est disponible avec GetTicker, GetDepth.exchanges[0].IO("websocket");La fonction suivante, ouvrez le mode websocket. Les élèves attentifs peuvent voir pourquoi les échanges[0] sont écrits ainsi.imgPar exemple, si deux échanges (ou plusieurs) sont ajoutés à une stratégie, un des objets globaux définis par la plate-forme est un tableau représentant tous les échanges ajoutés à la stratégie, c'est-à-dire les échanges. L'ensemble d'objets d'échange est le premier élément de l'ensemble: les échanges[0] les objets d'échange de pièces de monnaie.

    • 3. différence entre le mode websocket et le mode rest: dans le mode websocket, le gestionnaire envoie une demande d'abonnement au serveur de l'échange, après que le serveur de l'échange l'ait reçue. Chaque fois qu'il y a des données à jour, il les pousse activement vers le gestionnaire. Le gestionnaire cache ces données, ce qui permet au robot stratégique d'obtenir rapidement les données lorsqu'il les demande, et les données sont à jour.

    • 4 Une fois le mode websocket activé, trois modes de travail peuvent être configurés:

      • <1> exchange.IO("mode",0);// mode de retour immédiat: ce mode renvoie immédiatement les données actuelles (actuellement les plus récentes).

      • <2> exchange.IO("mode", 1);// mode de mise en cache ((mode par défaut): le mode est divisé en 2 branches de traitement, Premièrement, lorsque l'API demande des données, si les données actuellement mises en cache ne sont pas à jour par rapport aux données obtenues la dernière fois, l'API qui demande les données attend de les recevoir et les reçoit. Deuxièmement, lorsque l'API demande des données, elle retourne immédiatement les données les plus récentes si les données actuellement en cache sont les plus récentes par rapport aux données obtenues la dernière fois (c'est-à-dire que les données de transaction les plus récentes ont été reçues avant l'appel des données de la demande d'API).

      • <3> exchange.IO("mode", 2);// mode de mise à jour forcée: ce mode peut être facilement confondu avec une branche logique du mode de mise en cache. Le mode de mise en cache permet de déterminer si les données stockées sont à jour. Le mode de mise à jour forcée impose d'attendre que les données de marché les plus récentes soient envoyées, que le marché actuel soit à jour ou non.


Plus de

hokshelatoJe ne sais pas. fonction main (() { L'interface utilisée est la suivante: pendant (true) { Il s'agit d'un logiciel de référencement. Je ne sais pas. Je ne sais pas. Je ne sais pas. 1. Impossible de répéter, erreur `main:2:12 - ReferenceError: setLastError is not defined`, supposé que le système de répétion ne supporte pas la poussée asynchrone de données. 2. le disque d'analogie rapporte une erreur, `Futures_OP 4: period not support`, puis ne reçoit qu'une seule donnée de ticker, et le robot ne peut pas s'arrêter normalement.

FangBei est là.Combien d'articles de données sont en cache? Combien de temps cela prend-il avant d'être nettoyé?

hokshelatoJe comprends, merci!

Le petit rêve1, pas de rest dans la réévaluation, la partie websocket. 2, le disque d'analogie n'a pas non plus de mode websocket. La documentation indique que seul OKEX Bitcoin Pro prend en charge le protocole websocket.

Le petit rêveJe vais jeter un coup d'œil à ce qui se passe dans les centaines de milliers d'articles que j'ai enregistrés.