Ce système de trading appelé
Le système suit les étapes suivantes:
Calculer l'ATR à 14 périodes et le normaliser en le divisant par le prix de clôture.
Calculer la moyenne mobile simple (SMA) de 100 jours de l'ATR normalisé.
Calculer le rapport entre l'ATR normalisé et sa SMA de 100 jours.
Déterminer l'effet de levier cible en fonction de l'inverse du ratio (2/ratio).
Calculer le nombre cible de transactions ouvertes en multipliant l'effet de levier cible par 5.
Tracez l'objectif et les transactions en cours sur le graphique.
Vérifiez s'il y a une chance d' acheter (si les transactions ouvertes actuelles sont inférieures à l' objectif) ou de fermer une transaction (si les transactions ouvertes actuelles sont supérieures à l' objectif plus 1).
Si vous avez la chance d'acheter, ouvrez une transaction longue et ajoutez-la à la gamme openTrades.
Si la possibilité de clôturer les transactions et les transactions existent dans le tableau openTrades, clôturer la transaction la plus récente en faisant référence au tableau et en le supprimant du tableau.
Le système vise à capturer les tendances en ajustant dynamiquement les transactions ouvertes et l'effet de levier en fonction de la volatilité du marché.
Les avantages de cette stratégie:
L'ajustement dynamique de l'effet de levier et de la taille de la position basé sur les changements de volatilité du marché peut gérer efficacement le risque.
L'utilisation de l'indicateur ATR pour calculer la taille de la position cible, qui reflète la volatilité du marché, est un choix raisonnable.
La pyramide avec plusieurs positions peut profiter des tendances.
L'enregistrement de chaque transaction dans le tableau permet un contrôle explicite de l'ouverture et de la clôture des transactions.
La stratégie comporte peu de paramètres et est facile à mettre en œuvre et à utiliser.
La logique est claire et la structure du code est bien organisée pour une optimisation et une itération faciles.
Les risques de cette stratégie:
L'ATR ne reflète que la volatilité passée, étant incapable de prédire les changements futurs, il peut entraîner un ajustement inapproprié de l'effet de levier.
La pyramide peut accumuler des pertes lorsque la tendance est inversée.
Les opérations d'enregistrement de matrice s'appliquent uniquement aux opérations d'ouverture/fermeture simples.
Les paramètres de l'effet de levier cible et de la taille de la position doivent être ajustés en fonction des spécificités du symbole plutôt qu'en fonction de paramètres fixes.
Le fait de s'appuyer sur un seul indicateur peut être trompeur.
La stratégie peut être optimisée dans les aspects suivants:
Ajouter le stop loss à la réduction active des pertes lorsque le niveau de stop loss est atteint.
Optimiser les paramètres de l'indicateur en testant différentes périodes ATR.
Essayez d'autres stratégies d'entrée comme les entrées de quantité fixe et testez les résultats.
L'indicateur de volatilité doit être utilisé pour chaque variable de volatilité.
Utilisez des modèles d'apprentissage automatique pour prédire la volatilité au lieu d'un simple lissage.
Optimiser le calcul de la taille de la position, par exemple en utilisant des multiples ATR ou des fonctions de volatilité.
Enregistrer plus de détails d'entrée comme le prix d'entrée, le temps, etc. pour l'analyse de la stratégie et l'optimisation.
Ajoutez l'optimisation des paramètres pour l'optimisation automatique pour trouver des ensembles de paramètres optimaux.
La stratégie ajuste dynamiquement l'effet de levier et la taille de la position en fonction de l'ATR pour gérer l'exposition au risque pendant les tendances, et présente certains avantages. Mais des défis tels que la difficulté de définition des paramètres et l'espace d'optimisation des indicateurs restent à améliorer.
/*backtest start: 2022-10-09 00:00:00 end: 2023-10-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("I11L - Risk Adjusted Leveraging", overlay=false, pyramiding=25, default_qty_value=20, initial_capital=20000, default_qty_type=strategy.percent_of_equity,process_orders_on_close=false, calc_on_every_tick=false) atr = ta.atr(14) / close avg_atr = ta.sma(atr,100) ratio = atr / avg_atr targetLeverage = 2 / ratio targetOpentrades = 5 * targetLeverage plot(targetOpentrades) plot(strategy.opentrades) isBuy = strategy.opentrades < targetOpentrades isClose = strategy.opentrades > targetOpentrades + 1 var string[] openTrades = array.new_string(0) if(isBuy) strategy.entry("Buy"+str.tostring(array.size(openTrades)),strategy.long) array.push(openTrades, "Buy" + str.tostring(array.size(openTrades))) if(isClose) if array.size(openTrades) > 0 strategy.close(array.get(openTrades, array.size(openTrades) - 1)) array.pop(openTrades)