Stratégie de négociation quantitative avec analyse de la dynamique des prix en Python

Auteur:Je ne sais pas., Créé à: 2023-01-11 11:35:36, mis à jour à: 2023-09-20 11:20:06

img

Stratégie de négociation quantitative avec analyse de la dynamique des prix en Python

Introduction à la stratégie de négociation de la dynamique des prix

La stratégie de trading de momentum analyse la comparaison des forces de position 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, ce qui nous permet indirectement de comprendre la distribution actuelle des forces longues et courtes sur le marché.

L'analyse de la dynamique des prix a été largement utilisée dans les ordres spéculatifs manuels traditionnels, en particulier pour déterminer la tendance unilatérale de la journée. Le vieux cliché, c'est de tirer parti de la situation. La meilleure quantification de la situation est la quantification de la comparaison de la force entre les côtés de la position longue et courte. L'analyse de la dynamique des prix est l'un des meilleurs indicateurs.

Ce document utilisera cette stratégie pour développer un programme automatisé de négociation au comptant pour les monnaies numériques sur le marché mondial.Huobi est un joueur..

Formule de calcul de la dynamique des prix

AR = [Somme de tout (haut-ouvert) pour N jours /Somme de tout (bas-ouvert) pour N jours] * 100

Parmi eux:

  • N: La fenêtre statistique du cycle de temps quotidien est généralement de 30 jours par défaut, car le jour de négociation effectif d'un mois est d'environ 30 jours (transactions de monnaie numérique 24 heures sur 24, 7 jours sur 7, ce qui peut être prudent)

  • Haute: le prix le plus élevé en une seule journée

  • Ouvert: prix d'ouverture d'une seule journée

  • Bas: le prix le plus bas en une seule journée

Comment utiliser la dynamique des prix

La dynamique des prix reflète la position du prix d'ouverture entre le prix le plus élevé et le prix le plus bas pour une période de temps.

  • Nous supposons que cette valeur est d'environ 100. si elle est supérieure à 100, la force de position longue commence à augmenter. si elle est inférieure à 100, la force de position courte commence à s'accumuler.
  • Lorsque la valeur AR augmente, cela signifie que le marché est actif et populaire, et que les positions longues grimpent en flèche, mais si le prix est trop élevé, cela signifie que le prix est entré dans la zone de surachat et que vous devez choisir le moment pour fermer la position. Il n'y a pas de norme spécifique pour la hauteur de la valeur AR. Généralement, lorsque la valeur AR monte à environ 120, le prix est susceptible de reculer.
  • Lorsque la valeur AR diminue, cela indique que le marché est en baisse et que la position courte est en plein essor, ce qui nécessite les efforts des positions longues. Si la valeur AR est trop basse, cela indique que le prix a peut-être chuté dans la zone de survente, et vous pouvez envisager d'attendre l'occasion d'aller long. Généralement, lorsque la valeur AR tombe en dessous de 50, le prix cessera de chuter et augmentera à tout moment.

Remarque: Les chiffres ci-dessus sont tous des valeurs par défaut et ne sont pas des formules de vérité.

Mise en œuvre d'une stratégie de négociation quantitative pour la dynamique des prix en Python

Comme d'habitude, nous ouvronsFMZ.COM, connectez-vous à notre compte, cliquez sur le tableau de bord, et déployez le docker et le robot.

Veuillez consulter mon précédent article sur le déploiement d'un docker et d'un robot:https://www.fmz.com/bbs-topic/9864.

Les lecteurs qui veulent acheter leur propre serveur de cloud computing pour déployer des dockers peuvent se référer à cet article:https://www.fmz.com/digest-topic/5711.

Ensuite, nous cliquons sur la bibliothèque Stratégie dans la colonne de gauche et cliquons sur Ajouter une stratégie.

N'oubliez pas de sélectionner le langage de programmation Python dans le coin supérieur droit de la page d'édition de stratégie, comme indiqué sur la figure:

img

Ensuite, nous écrirons le code Python dans la page d'édition du code. Le code suivant contient des commentaires très détaillés ligne par ligne, vous les lecteurs pouvez prendre votre temps pour comprendre. Plus important encore, bien que cette stratégie soit écrite sur la base du trading au comptant, l'extensibilité du code suivant prend également en compte le trading à terme. Les lecteurs intéressés peuvent essayer de réécrire le code suivant dans le trading à terme.

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

import types # Import the Types module library, which is designed to handle the various data types that will be used in the code.
def main(): # The main function, where the strategy logic begins.
    IDLE = 0 # It is used to mark the position status, which can be understood as 0, that is, idle status, i.e. short position status.
    LONG = 1 # Long positions
    SHORT = 2 # Short position. Note that this strategy is applied to the spot market, so there is no short opening or position. This is written here to facilitate understanding of the strategy and future expansion (such as extending to the futures market).
    state = IDLE # Variables that mark the status of a position
    while True: # Enter the loop
        r = exchange.GetRecords() # GetRecords is the official API of the FMZ Quant Platform, for detailed usage please refer to: https://www.fmz.com/api.
        if len(r) <= 1: # Judge whether the K-line is larger than one, that is, whether it is currently in the open state, or it may enter an endless loop. Here, it is also convenient for readers to expand, and the trend state of a larger K-line period is more stable.
           Log("The number of bars is not enough, wait for the next bar...") # Output logs
           continue # Python loop control statement, continuing with the next part of the loop.

        # Begin quantitative analysis of price momentum
        ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # Calculation formula

        account = _C(exchange.GetAccount) # Get account information, _C is also the official API of the FMZ Quant platform, for usage, please refer to: https://www.fmz.com/api.

        if ar < 95 and (state == IDLE or state == SHORT) :  # If the AR value is less than the oversold line and the account has funds, then buy all positions.
           
           if account["Balance"] > 50:
                exchange.Buy(-1, account["Balance"] * 0.9) # Buy all positions of the market order
                state = LONG # Change the position status to LONG
                  
        elif ar > 80 and (state == IDLE or state == LONG):  # If the AR value is greater than the overbought line and the account has a position, sell the whole position.
            
           if account["Stocks"] > 0.01:
                exchange.Sell(-1, account["Stocks"] * 0.9) # Sell all positions market order
                state = SHORT # Change the position status to SHORT
                      
        LogStatus(_D(), exchange.GetAccount() , state) # Update log information

Tests antérieurs de stratégie

Après avoir écrit la stratégie, la première chose que nous devons faire est de la tester pour voir comment elle se comporte dans les données historiques. Mais veuillez noter que le résultat du backtest n'est pas égal à la prédiction de l'avenir. Le backtest ne peut être utilisé que comme référence pour considérer l'efficacité de notre stratégie. Une fois que le marché change et que la stratégie commence à avoir de grandes pertes, nous devons trouver le problème à temps, puis changer la stratégie pour nous adapter au nouvel environnement du marché, comme le seuil mentionné ci-dessus. Si la stratégie a une perte supérieure à 10%, nous devons arrêter immédiatement le fonctionnement de la stratégie, puis trouver le problème. Nous pouvons commencer par ajuster le seuil.

Cliquez sur backtest dans la page d'édition de stratégie. Sur la page de backtest, l'ajustement des paramètres peut être effectué de manière pratique et rapide en fonction des différents besoins. Surtout pour la stratégie avec une logique complexe et de nombreux paramètres, pas besoin de revenir à la page du code source et de le modifier un par un.

Le temps de backtest est le dernier mois. Cliquez pour ajouter l'échange au comptant Huobi et la cible de trading BTC.

img

Résultats des tests antérieurs:

img

Nous pouvons voir que la stratégie a bien fonctionné dans le backtest de ce mois.

Avantages et inconvénients de la stratégie de dynamique des prix

  • Les avantages Par rapport à certains autres indicateurs techniques traditionnels, l'avantage de la dynamique des prix est qu'elle n'utilise pas un prix d'ouverture ou de clôture unique, mais présente les prix les plus élevés et les plus bas.

  • Les inconvénients Utilisez la valeur de l'élan des prix de manière indépendante pour juger si le prix est trop élevé ou trop bas, pour juger long/short, il est susceptible de sortir tôt dans une vague de tendances majeures, ou de pêcher au fond tôt dans une vague de marché à la baisse majeure.

Le seuil de mise en place de la stratégie doit également être déterminé en fonction des caractéristiques de l'objet de négociation. La fluctuation des prix du marché de la monnaie numérique est relativement grande et le volume de négociation est énorme, en particulier sur les monnaies traditionnelles telles que le Bitcoin, et il n'y a pas de limite à la hausse et à la baisse, de sorte que la valeur du seuil est plus élevée que celle du marché boursier traditionnel. La ligne de survente de 80 est généralement difficile à toucher et il y a peu de signaux d'achat; Alors que la ligne de survente de 170 est souvent en dessous du seuil, le signal de vente est fréquemment déclenché. Cela fera en sorte que la stratégie soit en position courte la plupart du temps et que l'utilisation des fonds devienne très faible. Par exemple, depuis janvier de cette année, le prix du Bitcoin est passé de 3500 à près de 13000 en une vague de marché haussier. La valeur du seuil a franchi très tôt la ligne de 170 et nous n'avons pas été très élev

Par conséquent, il n'y a jamais eu de stratégie de trading du Saint Graal sur le marché. Vous ne pouvez pas toujours faire des profits sans backtesting et débogage. Comme les traders subjectifs, nous, les traders quantitatifs, nous finissons par atteindre le même objectif de différentes manières. Nous devons nous adapter aux conditions locales en fonction des changements du marché et répondre aux changements du marché. Lorsque la stratégie est inefficace, nous devons l'ajuster à temps.

Si vous avez des questions, vous pouvez laisser un message à:https://www.fmz.com/bbs, qu'il s'agisse de la stratégie ou de la technologie de la plateforme, la plateforme FMZ Quant dispose de professionnels prêts à répondre à vos questions.


Relationnée

Plus de