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.rest
L'API du protocole, beaucoup de stratégies sont basées surrest
Il y a aussi des échanges qui ont récemment vu le jour.rest
Les problèmes d'interface qui empêchent la politique d'être utilisée.websocket
La 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'utiliserwebsocket
Qu'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:
exchange.GetTicker
L'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.websocket
Le moteur de données propulsé par l'interface utilisateur est opérationnel.
Utilisation du langage de programmationJavaScript
La langue.
Par exemple, nous allons modifier une stratégie classique, "Break the Ice".
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.ticker
Dans les donnéesBuy
、Sell
、Last
Ces attributs sont très importants.ticker
Les données sont fournies par l'API de la plateforme FMZ:exchange.GetTicker
L'objectif est clair, nous avons décidé d'utiliser cette méthode.exchange.GetTicker
Les fonctionsHook
L'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.
init
Coopération des fonctionsNous avons créé une " bibliothèque de modèles " qui s'appelle:- Je ne sais pas.Le code initial est vide.
Puis donnez- Je ne sais pas.Le modèle a deux paramètres
Utilisé pour contrôler si l'utilisation est activéewebsocket
Fonction 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.GetTicker
L'interface fait l'opération hook.GetTicker
L'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.websocket
Le code de ces fonctionnalités est disponible dans le code de SeamlessConnWS (publié) et dans la documentation de l'API.init
Fonctions 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.websocket
L'interface utilisée pour les transactions est le Bitcoin Cash et le Token Cash.init
La 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.init
Une fonction peut être automatiquement activéeexchange.GetTicker
Le contenu de la fonction est remplacé par l'utilisationwebsocket
L'implémentation du code de l'interface pour réaliser une liaison transparentewebsocket
Je ne suis pas d'accord.
Adresse du modèle SeamlessConnWS
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:
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 BinanceJe ne sais pas. Pour commencer- Je ne sais pas.Paramètres de contrôle sur le modèle.
Le blogueur a écrit:
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.
Le blogueur a également publié un article intitulé:
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.GetTicker
L'interprétation des stratégies des fonctions d'interface de secteur, d'autres interfaces de secteur par exempleexchange.GetDepth
、exchange.GetTrades
、exchange.GetRecords
C'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èlewebsocket
La mise en œuvre, l'utilisationDial
Les fonctions (voir la documentation de l'API Dial Function) peuvent être ajustées selon les besoins.read()
Paramètres spécifiés-2
Il n'y a que le retour.websocket
Les données les plus récentes dans la zone de soutient qui reçoit les données sont connectées.
Merci de lire.
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.
L'inventeur de la quantification - un petit rêveC'est bien, merci pour les conseils.