
Le système de négociation d’inversion de tendance de l’intensité des prix internes est une stratégie de négociation au niveau de la ligne solaire basée sur l’indicateur de l’intensité des prix internes (IBS). Le cœur de la stratégie est d’identifier les points de retournement potentiels du marché et de juger de l’état de survente et de survente du marché en surveillant la position relative du prix de clôture de la ligne précédente dans sa fourchette de hauts et de bas. La stratégie est particulièrement adaptée à la négociation d’actions et d’indices américains, les paramètres par défaut étant optimisés pour les principaux indices tels que SPY/SPX et NDQ/QQ.
Le cœur de cette stratégie est le calcul et l’application de l’indicateur interne de la force des prix (IBS). L’IBS est calculé par la formule suivante:
IBS = (前一日收盘价 - 前一日最低价) / (前一日最高价 - 前一日最低价)
Les valeurs de l’IBS oscillent toujours entre 0 et 1:
Les règles de trading de cette stratégie sont les suivantes:
Les conditions pour accéder à plusieurs sites:
Les conditions pour jouer plusieurs matchs:
En plus de cela, la stratégie a introduit le paramètre de “ pourcentage de distance minimum entre les nouvelles entrées ” pour s’assurer que les nouvelles positions ne sont ouvertes que lorsque le prix est suffisamment rétrogradé, ce qui réduit efficacement le risque de rétractation et optimise la gestion des fonds.
Le timing du marché est précis: l’utilisation de l’indicateur IBS permet de capturer avec précision le sur-achat et le sur-vente du marché, fournissant une base mathématique objective pour les entrées et les sorties, réduisant les biais de jugement subjectif.
Mécanisme de filtrage des tendances: en utilisant l’EMA comme filtre de tendance, assurez-vous que la direction des transactions est cohérente avec la tendance principale, ce qui évite efficacement le risque de trading à contre-courant. La stratégie peut ajuster le cycle EMA en fonction des caractéristiques du marché, ou désactiver complètement cette condition.
Gestion de position flexible: la stratégie prend en charge les enchères pyramidales (jusqu’à 2 fois) et introduit le paramètre “pourcentage de distance minimale de nouvelle entrée”, permettant un mécanisme de création de position par lots plus intelligent et permettant de réduire efficacement le coût moyen de détention des positions lors du retrait des prix.
Contrôle automatique du risque: la stratégie définit une limite de temps de maintien maximal, qui se calme automatiquement après la période de négociation maximale prédéfinie, même si le marché n’a pas déclenché de signal de sortie ordinaire, ce qui contrôle efficacement le temps d’exposition au risque d’une seule transaction.
Optimisation des paramètres: les paramètres par défaut ont été optimisés pour les principaux indices du marché tels que SPY et QQQ/NDQ, et les utilisateurs peuvent appliquer directement les paramètres recommandés:
Mode de négociation complet: prise en charge de modes de négociation simple, simple ou bidirectionnel, adaptés à différents environnements de marché et styles de négociation.
Sensitivité des paramètres: les seuils d’entrée et de sortie des IBS ont un impact important sur la performance de la stratégie. Des paramètres mal configurés peuvent entraîner des transactions excessives ou des opportunités de transactions importantes manquées.
Risque de choc du marché: dans les marchés en choc sans tendance évidente, les signaux IBS peuvent apparaître fréquemment, entraînant une survente des transactions et une augmentation inutile des coûts de transaction. La solution consiste à ajouter des conditions de filtrage, telles que la nécessité de plusieurs signaux IBS consécutifs pour confirmer ou combiner avec d’autres indicateurs (comme l’ATR) pour juger de la volatilité du marché.
La latence des changements de tendance: lorsque le marché change rapidement de tendance, l’indicateur IBS calculé sur la base des données de la veille peut réagir avec un retard, ce qui rend l’entrée ou la sortie du marché moins opportune. Il est recommandé d’ajuster le seuil IBS ou de raccourcir la durée maximale de la position pendant les périodes de forte volatilité.
Risque de gestion des fonds: par défaut, 50% des fonds du compte sont utilisés pour effectuer des transactions, ce qui peut entraîner une exposition excessive au risque en cas de plusieurs prises de position. Il est recommandé aux utilisateurs d’ajuster la taille de la position et les paramètres de prise de position en fonction de leur capacité à supporter le risque.
Restrictions de mise en œuvre technique: la stratégie est basée sur l’exécution des transactions au prix de clôture, et il est possible de faire face à des points de glissement et des écarts de prix dans les opérations réelles. Pour réduire ces risques, il est possible d’envisager de commander un certain temps avant la clôture ou d’utiliser un ordre de prix limité au lieu d’un ordre de prix du marché.
Ajustement des seuils d’entrée et de sortie de l’IBS: les stratégies actuelles utilisent des seuils d’entrée et de sortie d’IBS fixes. Il est possible d’envisager d’ajuster ces seuils en fonction de la dynamique de la volatilité du marché. Par exemple, augmenter de manière appropriée les seuils d’entrée et de sortie pour réduire les faux signaux pendant les périodes de forte volatilité.
Confirmation multi-périodes: introduire un cadre d’analyse multi-périodes qui exige la confirmation simultanée des signaux IBS à court et à moyen terme pour effectuer une transaction. Par exemple, en plus du signal IBS journalier, il est possible de calculer la valeur IBS de la ligne périodique ou de la ligne de 4 heures, qui n’entre en jeu que lorsque plusieurs périodes de temps affichent un état de surachat ou de survente, ce qui améliore considérablement la qualité du signal.
Les stratégies actuelles reposent uniquement sur les signaux de sortie de l’IBS et le contrôle du risque de la période de tenue maximale. Des stratégies de stop plus intelligentes peuvent être introduites. Par exemple, les stratégies de stop dynamiques basées sur l’ATR, les stop de suivi ou les stop basées sur les points de support / résistance pour mieux protéger les bénéfices et contrôler le risque d’une seule transaction.
Adaptation de l’état du marché: l’introduction d’un mécanisme d’identification de l’état du marché, l’utilisation de paramètres différents dans différents environnements de marché (marché tendanciel, marché oscillant). L’état du marché peut être identifié par l’ADX (indice de direction moyenne) ou d’autres indicateurs de force de tendance, l’assouplissement des conditions IBS dans un environnement de forte tendance et l’utilisation de seuils IBS plus stricts dans les marchés oscillants.
Optimisation de l’apprentissage automatique: utilisation de la technologie d’apprentissage automatique pour optimiser et filtrer les signaux IBS. Identifier les signaux IBS les plus susceptibles de générer des transactions rentables par le biais de modèles de formation et ajuster automatiquement les paramètres en fonction des caractéristiques du marché, afin de réaliser la performance d’adaptation de la stratégie. Cette méthode peut considérablement améliorer la stabilité et l’adaptabilité de la stratégie, en particulier face à différentes conditions de marché et variétés de transactions.
Le système de négociation de renversement de tendance de l’intensité des prix internes est une stratégie de négociation au niveau de la ligne solaire qui combine l’indicateur de l’intensité des prix internes (IBS) et l’indice des moyennes mobiles (EMA). Cette stratégie est particulièrement adaptée à la négociation d’actions et d’indices américains en identifiant les points de retournement potentiels du marché et en suivant les tendances à long terme pour optimiser les décisions de négociation.
La stratégie a été optimisée pour les principaux indices de marché tels que SPY/SPX et NDQ/QQQ, permettant aux utilisateurs d’appliquer directement les paramètres recommandés pour la négociation. Cependant, toute stratégie de négociation comporte des risques, notamment la sensibilité des paramètres, le risque de choc du marché et le retard dans les changements de tendances brusques.
Les orientations d’optimisation futures comprennent l’ajustement dynamique des seuils, la confirmation de plusieurs cycles de temps, les mécanismes de stop-loss intelligents, l’adaptation automatique des états de marché et l’optimisation de l’apprentissage automatique. Ces améliorations peuvent améliorer encore l’adaptabilité et la robustesse des stratégies, leur permettant de bien fonctionner dans différents environnements de marché.
En tant que stratégie de trading quantitatif, le système de trading interne de renversement de tendance de l’intensité des prix offre aux traders une méthode de trading basée sur des règles et objective, réduisant l’influence des facteurs émotionnels sur les décisions de trading et contribuant à des résultats de trading plus cohérents et prévisibles.
/*backtest
start: 2024-03-05 00:00:00
end: 2025-03-03 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//Implementation by AlgoTradeKit
//v.0.5
//The IBS Trading Strategy is a daily bars long-only trading system, based on the concept of Internal Bar Strength (IBS).
//The strategy aims to identify potential reversals by monitoring how the previous bar’s close positions itself within its high-low range.
//It is suitable for stock and US indices. The default parameters are optimized for SPY/SPX and NDQ/QQQ
//Setting for QQQ: 0.09, 0.985, 220, 0, 14
//Setting for SPY: 0.11, 0.995, 200, 0, 12
//@version=6
strategy("IBS (Internal Bar Strength) Trading Strategy for SPY and NDQ", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, pyramiding = 2, currency = currency.USD, process_orders_on_close=false)
// ***** INPUTS *****
// IBS thresholds
ibsEntryThreshold = input.float(0.09, title="IBS Entry Threshold", step=0.01, tooltip="IBS = (Previous Close - Previous Low) / (Previous High - Previous Low), and IBS value below 0.2 is typically interpreted as an oversold condition, while a value above 0.9 suggests an overbought state.")
ibsExitThreshold = input.float(0.985, title="IBS Exit Threshold", step=0.01, tooltip="IBS = (Previous Close - Previous Low) / (Previous High - Previous Low), and IBS value below 0.2 is typically interpreted as an oversold condition, while a value above 0.9 suggests an overbought state.")
// EMA period (set to 0 to disable the EMA condition)
emaPeriod = input.int(220, title="EMA Period (0 to disable)", minval=0, maxval=5000, step=1, tooltip="Exponential Moving Average Filter Period (0 to disable)")
// Minimum percentage drop required for a new entry (for dollar-cost averaging)
minEntryPct = input.float(0, title="Minimum Distance for New Entry (%)", step=0.05, minval=0.0, maxval=100, tooltip = "Distance in Price from Last Opened Position, in Percentage Terms (%)")
maxTradeDuration = input.int(title="Maximum Trade Duration (days)", defval=14, minval=1, step=1, maxval=1000, tooltip = "Exit at close if maximum trade duration is reached.")
// Persistent variable to record the bar index when the trade is entered.
var int entryBarIndex = na
// ***** EMA CALCULATION *****
// Calculate the EMA globally if the period is greater than 0, otherwise leave as na.
emaValue = emaPeriod > 0 ? ta.ema(close, emaPeriod) : na
// ***** IBS CALCULATION *****
// Calculate IBS using the previous bar’s values.
// Guard against division by zero: if previous high equals previous low, default IBS to 0.5.
prevHigh = high[1]
prevLow = low[1]
prevClose = close[1]
ibs = (prevHigh != prevLow) ? (prevClose - prevLow) / (prevHigh - prevLow) : 0.5
// ***** ENTRY AND EXIT CONDITIONS *****
// Define the EMA condition: if emaPeriod is 0, bypass the EMA check.
emaConditionLong = emaPeriod == 0 or (close > emaValue)
emaConditionShort = emaPeriod == 0 or (close < emaValue)
// Entry: IBS is below the entry threshold and the EMA condition holds.
enterLong = (ibs < ibsEntryThreshold) and emaConditionLong
enterShort = (ibs > ibsExitThreshold) and emaConditionShort
// Exit: IBS is above the exit threshold.
exitLong = ibs > ibsExitThreshold
exitShort = ibs < ibsEntryThreshold
// ***** DOLLAR-COST AVERAGING CONDITION IN PERCENTAGE *****
// Track the last entry price. Reset when there is no open position.
var float lastEntryPrice = na
if strategy.position_size == 0
lastEntryPrice := na
// If there is no previous entry, the condition is met.
// Otherwise, allow a new entry only if the current price is lower than the last entry price
// by at least the predefined percentage (converted to a fraction).
dcaCondition = na(lastEntryPrice) or ((close < lastEntryPrice) and (((lastEntryPrice - close) / lastEntryPrice) >= (minEntryPct / 100)))
dcaConditionShort = na(lastEntryPrice) or ((close > lastEntryPrice) and (((close - lastEntryPrice) / lastEntryPrice) >= (minEntryPct / 100)))
// ***** STRATEGY ORDERS *****
// Enter a long position only if both the entry condition and the DCA condition are met.
if enterLong and dcaCondition
strategy.entry("Long", strategy.long)
lastEntryPrice := close // update the last entry price
entryBarIndex := bar_index
if enterShort and dcaConditionShort
strategy.entry("Short", strategy.short)
lastEntryPrice := close // update the last entry price
entryBarIndex := bar_index
// Compute trade duration in days using the absolute difference
tradeDuration = not na(entryBarIndex) ? math.abs(bar_index - entryBarIndex) : 0
// Exit the long position when the exit condition is met or if the trade duration reaches maxTradeDuration days.
if exitLong or (tradeDuration >= maxTradeDuration)
strategy.close("Long")
// Exit the long position when the exit condition is met or if the trade duration reaches maxTradeDuration days.
if exitShort or (tradeDuration >= maxTradeDuration)
strategy.close("Short")
// ***** PLOTTING *****
// Plot IBS for reference, along with horizontal lines for the entry and exit thresholds.
//plot(ibs, title="IBS", color=color.blue, linewidth=2)
//hline(ibsEntryThreshold, title="IBS Entry Threshold", color=color.green)
//hline(ibsExitThreshold, title="IBS Exit Threshold", color=color.red)