
Das Internal Price Strength Trend Reversal Trading System ist eine Tageslinie-Level-Handelsstrategie, die auf dem Internal Price Strength (IBS) -Indikator basiert. Die Kernstrategie besteht darin, potenzielle Marktwendepunkte zu identifizieren und den Überkauf-Überverkaufszustand des Marktes zu beurteilen, indem die relative Position des Abschlusskurses des vorherigen Anhaltspunkts in seinem Höhen-Low-Bereich überwacht wird. Die Strategie ist besonders für den Handel mit Aktien und US-Indizes geeignet.
Der Kern der Strategie liegt in der Berechnung und Anwendung des Indikators für die interne Preisintensität (IBS). Der IBS-Indikator wird durch folgende Formel berechnet:
IBS = (前一日收盘价 - 前一日最低价) / (前一日最高价 - 前一日最低价)
Die IBS-Werte schwanken stets zwischen 0 und 1:
Die Handelsregeln für diese Strategie lauten:
Mehrfache Teilnahmebedingungen:
Die Bedingungen für mehr Auftritte:
Darüber hinaus wurde ein Parameter mit dem Namen “Prozentsatz der Minimalen Entfernung zwischen neuen Eintritten” eingeführt, um sicherzustellen, dass neue Positionen nur dann eröffnet werden, wenn der Preis ausreichend zurückgegangen ist, um das Rücknahmerisiko zu verringern und die Vermögensverwaltung zu optimieren.
Marktreife Zeitmessung: Der IBS-Indikator kann die Überkauf- und Überverkaufssituation des Marktes präzise erfassen, bietet eine objektive mathematische Grundlage für Ein- und Ausstieg und reduziert die von subjektiven Urteilen verursachte Verzerrung.
Trendfiltermechanismus: Durch die EMA als Trendfilter wird sichergestellt, dass die Handelsrichtung mit den wichtigsten Trends übereinstimmt, wodurch das Risiko eines rückläufigen Handels vermieden wird. Die Strategie kann die EMA-Zyklen an die Merkmale des Marktes anpassen oder diese Bedingung vollständig deaktivieren.
Flexible Positionsverwaltung: Die Strategie unterstützt Pyramiden-Positionserhöhungen (maximal 2 Mal) und die Einführung des Parameters “Minimal New Entry Distance Percentage” ermöglicht eine intelligentere Batchbuilding-Methode, die die durchschnittlichen Positionskosten bei Preisrückgängen effektiv senkt.
Automatische Risikokontrolle: Die Strategie setzt die maximale Haltedauer ein, die automatisch nach der vorgegebenen maximalen Handelsphase platziert wird, auch wenn der Markt kein normales Ausstiegssignal auslöst, was die Risikobereitschaft für einen einzelnen Handel wirksam kontrolliert.
Optimierung der Parameter: Die Standardparameter sind für die wichtigsten Marktindizes wie SPY und QQQ/NDQ optimiert, sodass der Benutzer die empfohlenen Einstellungen direkt anwenden kann:
Allumfassende Handelsmodelle: Unterstützt nur mehr, nur weniger oder zwei-Wege-Handelsmodelle, um sich an verschiedene Marktumgebungen und Handelsstile anzupassen.
Parameter-Sensitivität: IBS-Ein- und Ausgangsmärkten haben einen großen Einfluss auf die Strategie-Performance. Unkorrekte Parameter-Einstellungen können zu überhändelten Geschäften oder verpassten wichtigen Handelsmöglichkeiten führen. Es wird empfohlen, vor der Anwendung in der Praxis ausreichende historische Datenrückprüfungen und Parameteroptimierungen für bestimmte Handelsarten durchzuführen.
Schwankungsrisiko: In schwankenden Märkten, in denen keine eindeutige Tendenz zu beobachten ist, können IBS-Signale häufig auftreten, was zu übermäßigen Transaktionen und unnötigen Anstiegen der Transaktionskosten führt. Die Lösung besteht darin, Filterbedingungen zu erhöhen, z. B. indem mehrere aufeinanderfolgende IBS-Signale bestätigt werden oder in Kombination mit anderen Indikatoren (z. B. ATR) zur Beurteilung der Marktvolatilität.
Nachlässigkeit bei starken Trendwechseln: Bei schnellen Trendwechseln kann der IBS-Indikator, der auf Daten des Vortages basiert, nachlässig reagieren, was zu einem unvorteilhaften Zeitpunkt für den Ein- oder Ausstieg führt. Es wird empfohlen, die IBS-Durchschnittswerte in Zeiten hoher Volatilität entsprechend anzupassen oder die maximale Haltedauer zu verkürzen.
Risikomanagement: Die Verwendung von 50% des Kontos zum Handel kann zu einer übermäßigen Risikobereitschaft führen, wenn mehrere Positionen aufgenommen werden. Der Benutzer wird gebeten, die Positionsgröße und die Positionsparameter entsprechend seiner Risikobereitschaft anzupassen.
Technische Umsetzungsbeschränkungen: Die Strategie basiert auf der Ausführung von Geschäften am Schlusskurs, wobei es in der Praxis zu Schlupfpunkten und Preisdifferenzen kommen kann. Um solche Risiken zu verringern, kann man erwägen, eine bestimmte Zeit vor dem Schlusskurs zu bestellen oder einen Limit-Bill anstelle eines Marktpreises zu verwenden.
Dynamische Threshold-Anpassungen: Die aktuelle Strategie verwendet festgelegte IBS-Ein- und Ausgangstresen, die aufgrund der dynamischen Marktvolatilität angepasst werden können. Zum Beispiel kann der Eintritts- und Ausgangstresen in Zeiten hoher Volatilität angemessen erhöht und reduziert werden, um Falschsignale zu reduzieren. In Zeiten niedriger Volatilität kann eine radikalere Einstellung verwendet werden.
Multi-Zeit-Zyklus-Bestätigung: Einführung eines Multi-Zeit-Zyklus-Analyse-Frameworks, das kurz- und mittelfristige IBS-Signale zur gleichzeitigen Bestätigung erfordert, um einen Handel auszuführen. So kann beispielsweise neben dem Tages- oder 4-Stunden-IBS-Signal auch der IBS-Wert für die Umlauf- oder 4-Stunden-Zeile berechnet werden, der nur dann eingeschaltet wird, wenn mehrere Zeitperioden überkauft oder überverkauft sind, was die Signalqualität erheblich verbessert.
Intelligente Stop-Mechanismen: Die derzeitige Strategie, die nur auf IBS-Ausgangsignale und maximale Haltedauer-Risikokontrollen angewiesen ist, kann mit intelligenten Stop-Mechanismen ausgestattet werden. So können beispielsweise dynamische Stop-Stops, Tracking-Stops oder Stop-Strategien auf Basis von Support-/Widerstandspunkten auf Basis von ATR eingesetzt werden, um die Gewinne besser zu schützen und das Risiko eines einzelnen Handels zu kontrollieren.
Marktanpassung: Marktanpassung: Marktanpassung durch die Einführung von Marktanpassungssystemen, die unterschiedliche Parameter-Sets unter verschiedenen Marktumgebungen (trendende oder schwankende Märkte) verwenden. Marktanpassung kann über ADX (Durchschnittsindex) oder andere Trendstärke-Indikatoren erfolgen, die IBS-Bedingungen bei starken Trends gelockert werden, und in schwankenden Märkten strengere IBS-Thresholds angewendet werden.
Machine-Learning-Optimierung: Die Nutzung von Machine-Learning-Technologien zur Optimierung und Filterung von IBS-Signalen. Durch das Training von Modellen wird erkannt, welche IBS-Signale eher zu profitablen Geschäften führen, und die Parameter werden automatisch an die Markteigenschaften angepasst, um die Anpassungsfähigkeit der Strategie zu erreichen. Diese Methode kann die Stabilität und Anpassungsfähigkeit der Strategie erheblich verbessern, insbesondere bei unterschiedlichen Marktbedingungen und Handelsarten.
Das Internal Price Strength Trend Reversal Trading System ist eine Tageslinie-Level-Handelsstrategie, die die Internal Price Strength (IBS) -Indikator und den Index Moving Average (EMA) kombiniert. Die Strategie optimiert die Handelsentscheidung durch die Identifizierung potenzieller Marktwendepunkte und folgt langfristigen Trends und ist besonders für den Handel mit Aktien und US-Index geeignet. Die Kernvorteile liegen in ihren objektiven mathematischen Modellen, flexiblen Positionsmanagement und eingebauten Risikokontrollen.
Die Strategie wurde für die wichtigsten Marktindizes wie SPY/SPX und NDQ/QQQ optimiert, so dass der Benutzer die empfohlenen Einstellungen direkt anwenden kann. Jede Handelsstrategie birgt jedoch Risiken, einschließlich Parameter-Sensitivität, Marktrampenrisiken und Rückstand bei starken Trendänderungen.
Die Optimierungsmöglichkeiten für die Zukunft umfassen dynamische Threshold-Anpassungen, Multi-Zeit-Zyklus-Bestätigung, intelligente Stop-Loss-Mechanismen, Marktsituations-Adaption und Machine-Learning-Optimierung. Diese Verbesserungen können die Anpassungsfähigkeit und Robustheit der Strategie weiter verbessern, so dass sie in verschiedenen Marktumgebungen gut funktionieren kann.
Als quantitative Handelsstrategie bietet das interne Preisintensitäts-Trend-Umkehr-Trading-System den Händlern eine regelbasierte, objektive Handelsmethode, die den Einfluss von emotionalen Faktoren auf die Handelsentscheidungen reduziert und dazu beiträgt, einheitlichere und vorhersehbare Handelsergebnisse zu erzielen.
/*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)