Les mains à la main vous apprennent à donner une vieille stratégie d'interface de marché Websocket pour une liaison transparente

Auteur:Le petit rêve, Créé: 2019-09-26 15:47:53, Mis à jour: 2023-10-18 19:54:36

img

Les mains à la main vous apprennent à donner une vieille stratégie d'interface de marché Websocket pour une liaison transparente

Il y a une grande différence entre les deux.La place des stratégiesIl y a beaucoup de stratégies intéressantes qui ont été utilisées par les échanges de crypto-monnaie à cette époque.restL'API du protocole, beaucoup de stratégies sont basées surrestIl y a aussi des échanges qui ont récemment vu le jour.restLes problèmes d'interface qui empêchent la politique d'être utilisée.websocketLa prise en charge de l'interface nécessite des modifications au code de stratégie, ce qui est généralement plus compliqué (modifier une stratégie est beaucoup plus difficile que de la réécrire). Comment ne pas changer de stratégie mais continuer à l'utiliserwebsocketQu'en est-il de l'interface utilisateur? C'est là que l'inventeur montre la grande flexibilité de sa plateforme de négociation quantitative, que nous pouvons utiliser pour:

  • 1° Utilisez la stratégie "Template library".
  • Deux, ouiexchange.GetTickerL'opération Hook permet d'obtenir des fonctions comme suit:

Il est donc possible d'utiliser des stratégies qui ne changent pas une ligne de code, mais qui sont basées sur des stratégies qui sont basées sur des stratégies.websocketLe moteur de données propulsé par l'interface utilisateur est opérationnel. Utilisation du langage de programmationJavaScriptLa langue.

Stratégies d'analyse

Par exemple, nous allons modifier une stratégie classique, "Break the Ice".

Adresse stratégique

Nous avons d'abord examiné le code de la stratégie et nous avons découvert que cette stratégie était basée sur le marché des ticks, principalement utilisé pour les transactions en ligne.tickerDans les donnéesBuySellLastCes attributs sont très importants.tickerLes données sont fournies par l'API de la plateforme FMZ:exchange.GetTickerL'objectif est clair, nous avons décidé d'utiliser cette méthode.exchange.GetTickerLes fonctionsHookL'opération (c'est-à-dire la réécriture pour remplacer une autre version) peut être effectuée. Mais nous ne pouvons pas réécrire la stratégie des briseurs de glace, cela affectera la stratégie, nous voulons une liaison transparente! Il faut donc que le prochain personnage principal soit présent.

Les fonctionnalités de la bibliothèque de modèles etinitCoopération des fonctions

Nous avons créé une " bibliothèque de modèles " qui s'appelle:- Je ne sais pas.Le code initial est vide.

img

Puis donnez- Je ne sais pas.Le modèle a deux paramètres

  • Il est utilisé WebSocket
  • Le code de connexion est le code de connexion de l'application.

img

Utilisé pour contrôler si l'utilisation est activéewebsocketFonction d'interface, contrôle spécifique de l'ouverture d'une interface de secteur spécifique. Dans ce cas, en raison de la portée limitée, il est possible de ne pas utiliser l'interface de secteur spécifique.exchange.GetTickerL'interface fait l'opération hook.GetTickerL'interface est le paramètre de contrôle du mode websocket: Hook_GetTicker.

Maintenant que le modèle est créé, vous pouvez écrire des échanges spécifiques dans le modèle.websocketLe code de ces fonctionnalités est disponible dans le code de SeamlessConnWS (publié) et dans la documentation de l'API.initFonctions et variables globales_DictConnectCreater_ConnMap

Le code:

var _DictConnectCreater = {
    "Huobi" : WSConnecter_Huobi,
    "Binance" : WSConnecter_Binance,
}

var _ConnMap = {}

function init () {
    if (IsUsedWebSocket) {
        var connectCreater = null
        if (exchanges.length != 1) {
            Log("切换为ws接口只针对 exchange 交易所对象(即第一个添加的交易所对象)")
        }
        var isFound = false 
        for (var name in _DictConnectCreater) {
            if (exchange.GetName() == name) {
                connectCreater = _DictConnectCreater[name]
                isFound = true
            }
        }

        if (!isFound) {
            throw "没有找到实现"
        }
        
        if (Hook_GetTicker) {
            var symbol = exchange.GetCurrency()
            _ConnMap.GetTicker = connectCreater("GetTicker", symbol)
            exchange.GetTicker = function () {
                return _C(_ConnMap.GetTicker.Read)
            }
        }
        // ... 
        
    }
}

Vous pouvez voir que ce modèle n'implique que deux échanges.websocketL'interface utilisée pour les transactions est le Bitcoin Cash et le Token Cash.initLa fonction est de faire référence à la stratégie des Briseurs de Glace.- Je ne sais pas.Après le modèle, le disque virtuel est exécuté en premier.initUne fonction peut être automatiquement activéeexchange.GetTickerLe contenu de la fonction est remplacé par l'utilisationwebsocketL'implémentation du code de l'interface pour réaliser une liaison transparentewebsocketJe ne suis pas d'accord.

Adresse du modèle SeamlessConnWS

Comment les utiliser

C'est très simple!- Je ne sais pas.Une fois que le modèle a été copié dans sa propre bibliothèque de stratégies, il ne peut être utilisé que pour une référence à la stratégie "Breaker", comme ci-dessous:

img

Il y a des gens qui se disent que c'est une bonne chose.

Créer une stratégie de "brise-glace" pour les robots de bureau, les bourses choisissent le BinanceimgJe ne sais pas. Pour commencer- Je ne sais pas.Paramètres de contrôle sur le modèle.img

Le blogueur a écrit:img

Pour faciliter la visualisation des données, j'ai spécifiquement ajouté 157 lignes de code pour imprimer des journaux, ce qui permet d'exporter les données envoyées par l'échange.img

Le blogueur a également publié un article intitulé:img

Cela permet d'utiliser l'interface de marché du websocket et la mise en relation transparente des stratégies sans modifier une ligne de code de stratégie.

Dans ce cas, il s'agit de l'utilisationexchange.GetTickerL'interprétation des stratégies des fonctions d'interface de secteur, d'autres interfaces de secteur par exempleexchange.GetDepthexchange.GetTradesexchange.GetRecordsC'est la même chose pour les modèles.- Je ne sais pas.Le site Web de l'organisation est disponible en anglais et en anglais.

Pour les liens spécifiques dans le modèlewebsocketLa mise en œuvre, l'utilisationDialLes fonctions (voir la documentation de l'API Dial Function) peuvent être ajustées selon les besoins.read()Paramètres spécifiés-2Il n'y a que le retour.websocketLes données les plus récentes dans la zone de soutient qui reçoit les données sont connectées.

Merci de lire.


Relationnée

Plus de

congcong009Mon frère, peux-tu me donner un peu plus de Python?

Les fiancées aussi.C'est une bonne chose à partager plus tôt.

Le petit rêveC'est bien, merci pour les conseils.