avatar of 发明者量化-小小梦 发明者量化-小小梦
Suivre Messages privés
4
Suivre
1271
Abonnés

Stratégie de flux d'ordres linéaires développée sur la base de la fonction de lecture de données

Créé le: 2019-12-13 17:13:07, Mis à jour le: 2024-12-15 16:04:23
comments   3
hits   2355

Stratégie de flux d’ordres linéaires développée sur la base de la fonction de lecture de données

Préface

Les gens disent souvent que le trading est un art et que l’art naît de l’inspiration. Aujourd’hui, je souhaite partager avec vous comment utiliser la fonction de relecture des données quantitatives d’Inventor pour découvrir votre propre inspiration commerciale.

Inspiration commerciale et sens du marché

Ce que nous appelons habituellement l’inspiration fait référence à l’état créatif que les gens éprouvent instantanément pendant le processus de réflexion. Pour les traders, l’hémisphère gauche de notre cerveau complète la formulation d’une série de règles telles que la rédaction de stratégies, l’allocation de capital et la définition de paramètres. Ces inspirations commerciales et ce sens du marché proviennent de l’hémisphère droit du cerveau.

Beaucoup de gens ont entendu le terme « sentiment du marché », qui est un sentiment indescriptible, comme si ce qui se passe actuellement leur semblait familier. Lors du trading, cette intuition de type sixième sens, bien que non basée sur un raisonnement et une analyse logiques, incitera les traders à prendre des décisions d’achat ou de vente en fonction de leur prémonition des tendances futures du marché.

Comment trouver l’inspiration

Pour les non-initiés, le sens du marché est un talent mystérieux qui vous permet de gagner sans aucun déplacement. Grâce à lui, vous pouvez prendre pied sur le marché. En fait, le sens du marché est un résumé de l’expérience subjective du trading par le cerveau. Il s’agit d’un sentiment prédictif vague acquis au fil des années d’observation du marché.

Bien qu’à proprement parler, l’inspiration ne soit pas complètement égale au sens du marché, je crois qu’après des milliers d’expériences sur le marché, chacun aura une compréhension plus profonde du marché et sera apte à développer des stratégies. Par conséquent, si vous souhaitez acquérir ce talent et développer davantage de stratégies de trading, il n’y a pas d’autre moyen que de vous entraîner jusqu’à ce que vous en ayez l’occasion. Ce n’est qu’en effectuant un grand nombre de transactions que vous pourrez perfectionner votre système de trading.

Cependant, les contrats à terme et les actions sur matières premières domestiques ne sont négociés que quelques heures par jour. Si vous améliorez votre expérience de l’observation du marché grâce à des transactions réelles, élaborez votre propre modèle de profit et vos propres règles de négociation et entraînez vos réflexes conditionnés de manière subconsciente, cela vous permettra de vous améliorer. Il sera difficile d’atteindre le succès. Je suis incapable de le faire. En plus de payer un coût en temps plus long, la plupart des traders doivent également supporter le coût d’une perte en capital. Pour résoudre ce problème, les inventeurs ont développé quantitativement une fonction de lecture de données.

Comment utiliser Data Replay

La fonction de lecture des données peut être formée sans être limitée par les heures de négociation de la bourse et prend en charge une variété de contrats à terme sur matières premières et de devises numériques. Les conditions du marché peuvent être lues manuellement ou automatiquement, ainsi que les heures de début et de fin des conditions historiques du marché et la vitesse de lecture peut être réglée librement. Par rapport à d’autres logiciels qui utilisent généralement des méthodes de lecture de données K-line, Inventor Quantitative utilise des méthodes de lecture de données au niveau des ticks, qui constituent un environnement de backtesting vraiment proche du trading réel, reproduisant les données de prix et de volume, permettant aux traders d’être immergés dans l’expérience.

Ouvrez le site Web officiel d’Inventor Quantitative (fmz.com), inscrivez-vous et connectez-vous, puis cliquez sur Exploration des données dans le centre de contrôle pour afficher la page de fonction de lecture des données. Il y a quatre cases d’options et un bouton de sélection. Tout d’abord, cliquez sur le bouton de sélection pour afficher uniquement les variétés qui prennent en charge la lecture en temps réel. Ensuite, sélectionnez la variété à lire dans le coin supérieur gauche, puis sélectionnez le début et la fin heure des données dans les deux cases d’option suivantes. Sélectionnez la période de données comme lecture en temps réel, puis cliquez enfin sur le bouton Aller à l’extrême droite pour démarrer la fonction de lecture des données.

Stratégie de flux d’ordres linéaires développée sur la base de la fonction de lecture de données

Il y a trois sections sous l’étiquette de données. Sur la gauche se trouve l’historique des transactions, qui affiche tous les ordres exécutés par ordre chronologique. Au milieu se trouvent les données du marché avec 20 niveaux de profondeur pour l’achat et la vente. Sur la droite se trouve la zone de contrôle de lecture des données, où vous pouvez choisir des méthodes de lecture manuelle et automatique des données, aussi facilement que l’utilisation d’un lecteur multimédia.

Stratégie de flux d’ordres linéaires développée sur la base de la fonction de lecture de données

L’index de position peut être déplacé d’avant en arrière pour sélectionner rapidement l’heure de début de la lecture des données.

Stratégie de flux d’ordres linéaires développée sur la base de la fonction de lecture de données

En bas, vous pouvez également contrôler la vitesse de lecture des données en déplaçant le curseur vers la droite ou vers la gauche. L’unité de temps est la milliseconde. Vous pouvez accélérer ou ralentir la lecture des données.

Stratégie de flux d’ordres linéaires développée sur la base de la fonction de lecture de données

Logique de la stratégie du bâtiment

Bien que de nombreux facteurs influent sur les fluctuations de prix, notamment : l’environnement économique mondial, les politiques macroéconomiques nationales, les politiques industrielles pertinentes, les relations entre l’offre et la demande, les événements internationaux, les taux d’intérêt et les taux de change, l’inflation et la déflation, la psychologie du marché, les facteurs inconnus, etc. , la situation finale du marché Le prix ci-dessus est le résultat de la concurrence entre les taureaux et les ours. S’il y a plus d’acheteurs que de vendeurs, le prix augmentera ; à l’inverse, s’il y a plus de vendeurs que d’acheteurs, le prix baissera. Il ne nous reste plus qu’à analyser le prix pour élaborer une stratégie de trading.

Grâce à la lecture quantitative par l’inventeur de la paire de trading btc_usdt sur Binance Exchange au cours du mois dernier, nous avons constaté que lorsque le marché montait en flèche ou chutait, le volume des commandes des côtés long et court du carnet de commandes de données Tick était évidemment asymétrique. Lorsque le marché monte fortement, le volume des ordres longs est nettement supérieur au volume des ordres courts ; lorsque le marché baisse fortement, le volume des ordres courts est nettement inférieur au volume des ordres longs. Pouvons-nous alors prédire la hausse et la baisse des prix sur une courte période en fonction du nombre de commandes dans le carnet de commandes ?

La réponse est oui.

Stratégie de flux d’ordres linéaires développée sur la base de la fonction de lecture de données Stratégie de flux d’ordres linéaires développée sur la base de la fonction de lecture de données

Nous pouvons collecter des données de ticks approfondies, calculer le volume des ordres longs et courts et les comparer. Si le volume combiné des ordres longs et courts est très différent, il peut s’agir d’une opportunité d’achat ou de vente potentielle. Par exemple, lorsque le nombre d’ordres longs est N fois supérieur à celui des ordres courts, nous pouvons supposer que la plupart des acteurs du marché sont optimistes et que la probabilité d’augmentation des prix à court terme augmentera ; lorsque le nombre d’ordres courts est N fois celui des ordres longs, à l’heure actuelle, nous pouvons supposer que la plupart des gens sur le marché sont baissiers et que la probabilité d’une baisse des prix à court terme augmentera à l’avenir.

Rédiger une stratégie de trading

Selon la logique de stratégie ci-dessus, commencez à l’implémenter avec du code. Ouvrir dans l’ordre : site Web fmz.com > Connexion > Centre de contrôle > Bibliothèque de politiques > Nouvelle politique > Cliquez sur le menu déroulant dans le coin supérieur droit et sélectionnez le langage Python pour commencer à écrire des politiques. Cette stratégie n’est qu’un point de départ pour l’enseignement, j’ai donc essayé de la garder aussi concise que possible. Veuillez prêter attention aux commentaires dans le code ci-dessous.

Étape 1 : Rédiger un cadre politique

# 策略主函数
def onTick():
    pass


# 程序入口
def main():
    while True:  # 进入无限循环模式
        onTick()  # 执行策略主函数
        Sleep(1000)  # 休眠1秒

Lorsque nous écrivons des stratégies, nous devons écrire du plus grand au plus petit, tout comme lorsque nous construisons une maison, construisons d’abord la charpente, puis les murs. Dans ce cadre, nous utilisons deux fonctions : la fonction main et la fonction onTick. La fonction principale est le point d’entrée du programme, ce qui signifie que le programme sera exécuté à partir d’ici, puis entrera dans le mode de boucle infinie, en exécutant à plusieurs reprises la fonction onTick. Il nous suffit ensuite d’écrire le contenu de la stratégie dans la fonction onTick.

Étape 2 : Écrire des variables globales

vol_ratio_arr = []  # 多空挂单比率数组
mp = 0  # 虚拟持仓

La raison pour laquelle vol_ratio_arr est défini comme une variable globale est que ma stratégie doit collecter le ratio des ordres longs et courts pour une période de données Tick. Si nous mettons la variable vol_ratio_arr dans la fonction onTick, il est évidemment déraisonnable de l’exécuter avec la fonction onTick. boucle. Ce dont nous avons besoin, c’est de Dans un modèle, la valeur d’une variable n’est modifiée que lorsqu’une certaine condition est remplie. L’approche la plus raisonnable est de mettre la variable en dehors de la boucle.

La gestion des positions est très nécessaire car elle est liée à la logique d’achat et de vente. Généralement, dans le trading au comptant, nous calculons les paires de devises détenues en obtenant le compte. Afin de simplifier le code, une variable de position virtuelle globale est directement définie ici pour contrôler la logique d’achat et de vente.

Étape 3 : Calculer le ratio long/short actuel

depth = exchange.GetDepth()  # 获取深度数据
asks = depth['Asks']  # 获取卖价数组
bids = depth['Bids']  # 获取买价数组
asks_vol = 0  # 所有卖价挂单
bids_vol = 0  # 所有买价挂单
for index, ask in enumerate(asks):  # 遍历卖价数组
    # 线性计算所有卖价挂单
    asks_vol = asks_vol + ask['Amount'] * (20 - index)
for index, bid in enumerate(bids):  # 遍历买价数组
    # 线性计算所有买价挂单
    bids_vol = bids_vol + bid['Amount'] * (20 - index)
bidask_ratio = bids_vol / asks_vol  # 计算多空比率

Comme nous le savons tous, les monnaies numériques ont généralement 20 niveaux de données de profondeur, nous pouvons donc additionner les ordres longs et courts pour calculer le ratio des longs par rapport aux courts. Lorsque cette valeur est supérieure à 1, cela signifie que plus de personnes sont optimistes que de personnes optimistes. baissier, indiquant que le prix augmentera à court terme dans le futur ; lorsque cette valeur est inférieure à 1, cela signifie que le nombre de personnes baissières est supérieur au nombre de personnes haussières, indiquant que le prix baissera dans le futur. à court terme dans le futur.

Mais il faut faire une distinction entre les deux. Plus l’ordre en attente est proche du prix du marché, plus le sentiment haussier ou baissier est fort. Par exemple, un ordre d’achat placé au premier niveau indique définitivement un sentiment haussier plus fort qu’un ordre d’achat placé au niveau 20. Par conséquent, lors de l’accumulation des commandes en attente, nous devons attribuer des poids différents aux 20 commandes de manière linéaire, ce qui sera plus raisonnable.

Étape 4 : Calculer linéairement le ratio long-short sur une période donnée

global vol_ratio_arr, mp  # 引入全局变量
vol_ratio_arr.insert(0, bidask_ratio)  # 把多空比率放到全局变量数组里面
if len(vol_ratio_arr) > 20:  # 如果数组超过指定长度
    vol_ratio_arr.pop()  # 删除最旧的元素
all_ratio = 0  # 临时变量,所有多空挂单比率
all_num = 0  # 临时变量,所有线性乘数
for index, vol_ratio in enumerate(vol_ratio_arr):  # 变量全局变量数组
    num = 20 - index  # 线性乘数
    all_num = all_num + num  # 线性乘数累加
    all_ratio = all_ratio + vol_ratio * num  # 所有多空挂单比率累加
ratio = all_ratio / all_num  # 线性多空挂单比率

Le ratio long/short peut être obtenu en divisant les ordres longs accumulés par les ordres courts accumulés, mais il ne s’agit là que des données d’un seul tick. Il n’est peut-être pas judicieux de décider d’effectuer des transactions d’achat et de vente sur la base d’un seul tick. , car dans un marché en constante évolution, un tick peut changer la tendance du marché. Les données sur les ticks ne sont pas convaincantes. Par conséquent, nous devons collecter une période fixe de données de ticks, puis utiliser un calcul linéaire pour obtenir une valeur équitable.

Étape 5 : Passer une commande

last_ask_price = asks[0]['Price']  # 最新卖一价,用于买入的价格
last_bid_price = bids[0]['Price']  # 最新买一价,用于卖出的价格
if mp == 0 and ratio > buy_threshold:  # 如果当前无持币,并且比率大于指定值
    exchange.Buy(last_ask_price, 0.01)  # 买入
    mp = 1  # 设置虚拟持仓的值
if mp == 1 and ratio < sell_threshold:  # 如果当前持币,并且比率小于指定值
    exchange.Sell(last_bid_price, 0.01)  # 卖出
    mp = 0  # 重置虚拟持仓的值

Étant donné que nous devons spécifier un prix lors de la passation d’une commande, nous pouvons utiliser directement le dernier prix demandé lors de l’achat et le dernier prix acheteur lors de la vente. Enfin, une fois la commande passée et la transaction terminée, réinitialisez la valeur de la position virtuelle.

Conclusion

Ce qui précède est l’analyse du code de la stratégie de flux d’ordres linéaires développée sur la base de la fonction de lecture des données. Si vous êtes débutant en trading, la fonction de lecture des données peut vous aider à apprendre le trading à coût nul et à réduire le temps de compréhension du trading. Il faut plusieurs années pour apprendre à trader en trading réel ou simulé. Les premiers résultats sont visibles. Le même effet peut être obtenu en quelques semaines grâce à la fonction de lecture des données, ce qui vous permet d’apprendre à trader avec des pertes minimales sans perdre de temps. Pour les traders avancés, l’examen dynamique peut vous aider à analyser vos problèmes passés, à vérifier et à améliorer les stratégies de trading, à accroître la confiance des traders dans les stratégies et à générer une nouvelle inspiration stratégique.