0
Suivre
78
Abonnés

Mise en œuvre de stratégies de trading quantitatives pour l'analyse de la dynamique des prix à l'aide de Python

Créé le: 2019-08-09 15:49:06, Mis à jour le: 2024-12-19 21:03:15
comments   1
hits   3524

Mise en œuvre de stratégies de trading quantitatives pour l’analyse de la dynamique des prix à l’aide de Python

Introduction à la stratégie de trading Price Momentum

La stratégie de trading Momentum analyse la comparaison des forces longues et courtes à travers la relation entre le prix d’ouverture, le prix le plus élevé et le prix le plus bas sur une certaine période de temps, et comprend indirectement la distribution des forces longues et courtes sur le marché actuel. Analysez les fluctuations de prix pour suivre les tendances futures des prix.

L’analyse de la dynamique des prix est largement utilisée dans le trading manuel traditionnel, en particulier pour déterminer les tendances unilatérales intrajournalières. C’est un sujet courant, que se passe-t-il avec la tendance ? La meilleure façon de quantifier la tendance est de comparer la force des côtés long et court. En termes de comparaison quantitative, l’analyse de la dynamique des prix est l’un des meilleurs indicateurs.

Cet article utilisera cette stratégie pour développer un programme de trading au comptant automatisé pour les devises numériques sur Huobi.com.

La formule de calcul de la dynamique des prix

AR = [La somme de tous les (Haut-Ouverture) en N jours / la somme de tous les (Ouverture-Bas) en N jours] * 100

Parmi eux :

  • N : La fenêtre statistique de la période quotidienne, qui est généralement de 30 jours par défaut, car il y a environ 30 jours de négociation valides dans un mois (la monnaie numérique est négociée 24h/24 et 7j/7, donc ce nombre peut être un peu conservateur)

  • Haut : Le prix le plus élevé de la journée

  • Ouvert : Le prix d’ouverture du jour

  • Bas : Le prix le plus bas de la journée

Comment utiliser la dynamique des prix

Le momentum des prix reflète la position du prix d’ouverture entre le prix le plus élevé et le prix le plus bas sur une période donnée. Cette position nous permet d’évaluer le bras de fer entre les deux parties.

  • Nous supposons que cette valeur est d’environ 100. Si elle dépasse 100, la force haussière commence à augmenter, et si elle est inférieure à 100, la force baissière commence à se rassembler.
  • Lorsque la valeur AR augmente, cela signifie que le marché est actif, que la popularité est élevée et que les taureaux progressent rapidement. Cependant, si elle est trop élevée, cela signifie que le prix est entré dans la zone de surachat et que vous devez choisir le bon moment pour fermer la position. Il n’existe pas de norme spécifique pour la hauteur de la valeur AR. En règle générale, lorsque la valeur AR atteint environ 120, le prix est susceptible de retomber.
  • Lorsque la valeur AR diminue, cela signifie que le marché est en récession, que les baissiers sont de bonne humeur et que les haussiers doivent travailler plus dur. Si elle est trop basse, cela suggère que le prix est peut-être tombé dans la zone de survente, et vous on peut envisager d’attendre une opportunité pour aller plus loin. Généralement, lorsque la valeur AR tombe en dessous de 50, le prix cesse de baisser et augmente à la place.

Remarque : les chiffres ci-dessus sont tous des valeurs par défaut et ne représentent en aucun cas la vérité. Dans le processus de négociation réel, nous devons ajuster cette fourchette pour nous adapter aux conditions actuelles du marché à mesure que le marché évolue.

Mise en œuvre de stratégies de trading quantitatives pour la dynamique des prix à l’aide de Python

Comme d’habitude, nous ouvrons FMZ.COM, nous connectons à notre compte, cliquons sur le centre de contrôle et déployons des hôtes et des robots.

Pour plus d’informations sur la manière de déployer des hôtes et des robots, veuillez vous référer à mon article précédent : https://www.fmz.com/bbs-topic/4140

Les lecteurs qui souhaitent acheter leur propre hébergeur de déploiement de serveur de cloud computing peuvent se référer à cet article : https://www.fmz.com/bbs-topic/2848

Ensuite, nous cliquons sur la Bibliothèque de stratégies dans la colonne de gauche et cliquons sur Nouvelle stratégie.

Dans le coin supérieur droit de la page de rédaction de la stratégie, n’oubliez pas de sélectionner Python comme langage de programmation, comme indiqué sur la figure :

Mise en œuvre de stratégies de trading quantitatives pour l’analyse de la dynamique des prix à l’aide de Python

Ensuite, nous écrivons le code Python dans la page d’édition de code. Le code suivant contient des commentaires ligne par ligne très détaillés, et les lecteurs peuvent lentement le comprendre et l’apprécier. Plus important encore, bien que cette stratégie soit écrite sur la base du trading au comptant, L’évolutivité du code suivant prend également en compte le trading à terme. Les lecteurs intéressés peuvent essayer de réécrire le code suivant pour le trading à terme. La logique de la stratégie elle-même est universelle. Dans la plateforme quantitative Inventor, nous avons préparé pour vous les interfaces API des principales bourses au comptant et à terme, de sorte que le travail de réécriture sera très simple et pratique.

Nous utiliserons le Bitcoin spot de Huobi comme cible de trading et commencerons à mettre en œuvre cette stratégie :

import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型
def main(): # 主函数,策略逻辑从这里开始
    IDLE = 0 # 用来标记持仓状态,可以理解为0即为空闲状态,也就是空仓状态
    LONG = 1 # 多头持仓
    SHORT = 2 # 空头持仓,注意,此策略应用于现货市场,所以不存在空头开仓或者持仓情况,这里这样写,是为了方便理解策略和以后的扩展(如扩展到期货市场)
    state = IDLE # 标记持仓状态的变量
    while True: # 进入循环
        r = exchange.GetRecords() #GetRecords是发明者量化平台的官方API,详细用法请参见:https://www.fmz.com/api
        if len(r) <= 1: # 判断K线是否大于一根,也就是当前是否为开盘状态,否则可能会进入死循环,这里也方便读者进行扩展,大一些的K线周期趋势状态更稳定。
           Log("bar的数量不足, 等待下一根bar...") # 输出日志
           continue # Python循环控制语句,继续下边的循环内容

        # 开始进行价格动量的量化分析
        ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # 计算公式

        account = _C(exchange.GetAccount) # 获取账户信息,_C同样为发明者量化平台的官方API,用法请参见:https://www.fmz.com/api

        if ar < 95 and (state == IDLE or state == SHORT) :  # AR值小于超卖线且账户拥有资金,则全仓买入
           
           if account["Balance"] > 50:
                exchange.Buy(-1, account["Balance"] * 0.9) # 市价单全仓买入
                state = LONG # 改变持仓状态为LONG
                  
        elif ar > 80 and (state == IDLE or state == LONG):  # AR值大于超买线且账户有持仓,则全仓卖出
            
           if account["Stocks"] > 0.01:
                exchange.Sell(-1, account["Stocks"] * 0.9) # 市价单全仓卖出
                state = SHORT # 改变持仓状态为SHORT
                      
        LogStatus(_D(), exchange.GetAccount() , state) # 更新日志信息

Backtesting de stratégie

Après avoir rédigé la stratégie, la première chose à faire est de la tester pour voir comment elle se comporte dans les données historiques. Cependant, veuillez noter que les résultats du backtesting ne sont pas égaux aux prédictions du futur. Le backtesting ne peut être utilisé que comme un Consultez les informations pour évaluer l’efficacité de notre stratégie. Une fois que le marché change et que la stratégie commence à subir de lourdes pertes, nous devons rapidement identifier le problème, puis modifier la stratégie pour l’adapter au nouvel environnement de marché. Par exemple, si la stratégie subit une perte de plus de 10 %, nous devons immédiatement arrêtez la stratégie et cherchez le problème, en commençant par ajuster le seuil.

Cliquez sur le backtest simulé dans la page d’édition de stratégie. Sur la page de backtest, les paramètres peuvent être ajustés en fonction des différents besoins pour un débogage pratique et rapide. En particulier pour les stratégies avec une logique complexe et de nombreux paramètres, il n’est pas nécessaire de revenir à la page d’édition de stratégie. code source et les modifier un par un.

Pour le temps de backtesting, nous choisissons le mois le plus récent, cliquez pour ajouter l’échange spot Huobi et l’objectif de trading BTC.

Mise en œuvre de stratégies de trading quantitatives pour l’analyse de la dynamique des prix à l’aide de Python

Afficher les résultats du backtest

Mise en œuvre de stratégies de trading quantitatives pour l’analyse de la dynamique des prix à l’aide de Python

On peut constater que cette stratégie a bien fonctionné lors du backtest de ce mois.

Avantages et inconvénients des stratégies de Price Momentum

  • Avantages

L’avantage du momentum des prix par rapport à certains autres indicateurs techniques traditionnels est qu’au lieu d’utiliser un seul prix d’ouverture ou de clôture, il intègre les prix les plus élevés et les plus bas. Elles sont comparées de manière dynamique et, grâce aux fluctuations de prix intrajournalières, les informations du marché sont plus complètes, la réponse est plus rapide et plus macro.

  • Inconvénients

Utiliser la valeur de momentum des prix de manière indépendante pour juger si le prix est trop élevé ou trop bas, pour déterminer s’il faut aller à la hausse ou à la baisse, s’il est susceptible de sortir trop tôt d’une grande tendance ou d’acheter le bas trop tôt lors d’un grand krach boursier. . D’une manière générale, cette stratégie appartient toujours à une stratégie d’efficacité de choc.

Le seuil de définition de la stratégie doit également être déterminé en fonction des caractéristiques de la cible de la transaction. Les fluctuations de prix sur le marché des devises numériques sont relativement importantes et le volume des échanges est énorme, en particulier pour les devises traditionnelles telles que le Bitcoin, qui n’ont pas de limite de prix, de sorte que le seuil est plus élevé que celui du marché boursier traditionnel et que les 80 sont survendus. La ligne est généralement difficile à atteindre. Par conséquent, les signaux d’achat sont moins nombreux ; tandis que la ligne de surachat de 170 est souvent en dessous du seuil, les signaux de vente sont donc fréquemment déclenchés. Cela entraînera que la stratégie sera dans une position vide la plupart du temps lorsqu’elle sera exécutée, et le taux d’utilisation du capital deviendra très faible. Depuis janvier de cette année, le Bitcoin connaît une période haussière, son prix passant d’un sommet de 3 500 \( à près de 13 000 \). Le seuil a franchi très tôt la ligne des 170 et est resté élevé depuis. Si nous avions vendu selon la ligne de surachat traditionnelle de 170, nous serions sortis du marché à environ 5 000, et il n’y aurait eu aucun signal pour ouvrir une position après cela, nous n’avons donc réalisé qu’un petit profit dans un grand marché haussier.

Par conséquent, il n’y a jamais eu de stratégie de trading du Saint Graal sur ce marché, une stratégie qui peut gagner de l’argent pour toujours sans backtesting ni débogage. En tant que traders quantitatifs, tout comme les traders subjectifs, nous parvenons finalement au même résultat. Nous devons nous adapter aux changements du marché, aux conditions locales et réagir à des circonstances en constante évolution. Lorsqu’une stratégie est inefficace, nous devons procéder à des ajustements en temps opportun.

Les amis qui ont des questions peuvent laisser un message sur https://www.fmz.com/bbs. Qu’il s’agisse de stratégies ou de technologies de plateforme, la plateforme quantitative Inventor dispose d’un personnel professionnel pour vous répondre à tout moment.