Adaptive Inverse Hyperbolic Tangent CCI Momentum-Handelsstrategie und Risikokontrollsystem

IFTCCI CCI WMA 动量交易 阈值突破 再入场机制 止损策略
Erstellungsdatum: 2025-05-27 11:11:47 zuletzt geändert: 2025-05-27 11:11:47
Kopie: 0 Klicks: 310
2
konzentrieren Sie sich auf
319
Anhänger

Adaptive Inverse Hyperbolic Tangent CCI Momentum-Handelsstrategie und Risikokontrollsystem Adaptive Inverse Hyperbolic Tangent CCI Momentum-Handelsstrategie und Risikokontrollsystem

Überblick

Die Strategie erzeugt ein Kauf- und Verkaufssignal, wenn der Indikator zwischen -1 und +1 schwankt. Die Strategie löst ein Kaufsignal aus, wenn der Indikator von einem Tiefpunkt (<-0,95) aufwärts einen bestimmten Tiefpunkt überschreitet. Zusätzlich enthält die Strategie einen dynamischen Stop-Loss-Mechanismus und eine Einstiegsbedingung: Wenn der Preis nach dem Auslösen des Signals eine gewisse Verzögerung in der Richtung gegenwärtig bewegt (0,1 Einheiten), löst das System einen Stop-Loss aus oder führt den Einstieg wieder aus.

Strategieprinzip

Im Mittelpunkt der Strategie steht der IFTCCI-Wert, der in folgenden Schritten berechnet wird:

  1. Zuerst berechnen Sie den Standard-CCI-Wert und teilen Sie ihn durch 4 für eine erste Standardisierung.
  2. Der CCI-Wert nach der Standardisierung wird mit 0,1 multipliziert, um die Empfindlichkeit anzupassen
  3. Anwendung des gewichteten gleitenden Durchschnitts (WMA) für eine glatte Verarbeitung
  4. Schließlich werden die Werte im Bereich von -1 bis + 1 durch die Rückwärts-Doppelkurven-Scheidefunktion ((tanh) abgebildet.

Die Berechnungsformel lautet:

v1 = 0.1 * (CCI(close, period) / 4)
v2 = WMA(v1, wma_period)
IFTCCI = (e^(2*v2) - 1) / (e^(2*v2) + 1)

Die Ausführungslogik der Strategie ist in folgende Schlüsselbereiche unterteilt:

  1. Einkaufsbedingungen:

    • Haupteinkaufsignal: Ausgelöst, wenn der IFTCCI-Index von unter -0,95 auf über -0,94 steigt
    • Rückkaufsignal: wird ausgelöst, wenn der Indikator mindestens 0,1 Einheiten von seinem Tiefpunkt ansteigt
  2. Verkaufsbedingungen:

    • Zielverkauf: Trigger, wenn der IFTCCI-Index von über 0,95 auf unter 0,94 fällt
    • Stop-Loss-Sell: Trigger wird ausgelöst, wenn der Index von seinem Höchstwert während der Haltedauer um mindestens 0,1 Einheiten abfällt
  3. Statusverfolgung:

    • Höchstwert des Indikators für die Stop-Loss-Berechnung während der Aufzeichnung der Position
    • Mindestwerte für die Rücknahme von Post-Plating-Indikatoren

Die gesamte Strategie verwendet eine prozentuale Kapitalverwaltung, bei der 100% der verfügbaren Mittel für jeden Handel verwendet werden, und es ist verboten, Gewinne zu erhöhen. Die Strategie berechnet die Signale in Echtzeit, wenn sich jede K-Linie bildet, um sicherzustellen, dass die Marktdynamik rechtzeitig erfasst wird.

Strategische Vorteile

  1. Klare Ein- und AusstiegsregelnDie Strategie basiert auf einer präzisen numerischen Abwertung, um eindeutige Handelssignale zu liefern, subjektive Urteile zu vermeiden und Handelsentscheidungen objektiver und disziplinierter zu gestalten.

  2. Dynamische RisikomanagementmechanismenDie Einrichtung von Stop-Loss-Mechanismen kann die Verluste eines einzelnen Handels wirksam begrenzen und automatisch aussteigen, wenn die Marktumkehr über die vorgegebene Bandbreite hinausgeht, um die Sicherheit der Gelder zu schützen.

  3. MarktanpassungsfähigkeitDer IFTCCI-Indikator lässt den Indikator zwischen -1 und +1 schwanken, indem er durch eine umgekehrte doppelte Kurvenverteilung umgewandelt wird. Der Indikator hat eine natürliche Vereinheitlichungsfunktion und ist für unterschiedlich volatile Marktumgebungen geeignet.

  4. Glatter Signal, weniger falsche DurchbrücheDie Verwendung eines gewichteten Moving Averages zur glatten Verarbeitung des ursprünglichen CCI reduziert effektiv die Geräusche und Falschsignale und erhöht die Zuverlässigkeit der Handelssignale.

  5. Intelligente WiedereintrittsmechanismenWenn der Markt nach dem Ausstieg wieder in die ursprüngliche Richtung zurückkehrt, ermöglicht der Wiedereintrittsmechanismus dem System, die Chancen zu nutzen und die Profitabilität der Strategie zu verbessern.

  6. Die visuelle Wirkung ist gut.Strategie: Hintergrundfarben, die sich deutlich auf den Diagrammen verändern, um den Händlern zu helfen, die Marktlage und die Handelssignale intuitiv zu verstehen.

  7. Anpassbarkeit der ParameterAlle Schlüsselparameter können über die Eingabeoberfläche angepasst werden, um die Strategie an unterschiedliche Marktbedingungen und persönliche Risikopräferenzen anzupassen.

Strategisches Risiko

  1. Häufige Geschäfte in einem wackligen MarktIn einem zwischenstaatlich schwankenden Markt kann der Indikator häufig in der Nähe von Schwellenwerten schwanken, was zu mehreren Kauf- und Verkaufssignalen führt, was zu Überhändlungen und Gebührenerosion führt. *Die Lösung*Es ist möglich, zusätzliche Filterbedingungen, wie z. B. Zeit- oder Trendfilter, hinzuzufügen, um die Häufigkeit des Handels in einem unsicheren Markt zu verringern.

  2. Das Problem der Festsetzung der Stop LossesDie aktuelle Strategie verwendet einen festen Wert ((0,1 Einheiten) als Stop-Loss-Wert, der in unterschiedlich volatilen Marktumgebungen zu groß oder zu klein sein kann. *Die Lösung*Es ist möglich, eine anpassungsfähige Stop-Loss-Spanne zu entwerfen, die die Stop-Loss-Distanz an die jüngste Volatilität anpasst.

  3. Fehlende Bestätigung langfristiger TrendsDie Strategie basiert auf kurzfristiger Dynamik ohne Kombination mit einer langfristigen Trendanalyse und kann zu unnötigen Transaktionen führen, wenn sich die Haupttrends umkehren. *Die Lösung*Die Einführung von Long-Cycle-Trend-Indikatoren als Filter, um nur in Richtung des Trends zu handeln.

  4. Zeitliche Risiken bei der WiedereingliederungDie derzeitige Wiedereintrittsmechanik basiert auf einer festen Rebound-Marge, die bei einem Falschbruch der Märkte zu früh wiedereintreten kann. *Die Lösung*Hinzufügen von zusätzlichen Bestätigungsbedingungen, wie z. B. Bestätigung der Liefermenge oder Zusammenschlusssignale zu anderen technischen Indikatoren.

  5. EinzelindikatorabhängigkeitDie Strategie beruht auf einem einzigen Indikator, dem IFTCCI, für die Entscheidungsfindung und fehlt eine mehrdimensionale Marktanalyse. *Die Lösung*Die Einführung einer Kombination aus komplementären Indikatoren wie RSI, MACD oder Volatilitätsindikatoren, die eine vielseitige Marktbestätigung bieten.

Optimierungsrichtung

  1. Integration von mehreren Zeitrahmen: Eine aktuelle Strategie, die nur in einem einzigen Zeitrahmen funktioniert, kann die Analyse in mehrere Zeitrahmen integrieren, z. B. mit dem IFTCCI-Indikator für höhere Zeitrahmen als Filter für die Richtung des Handels, der nur in der Richtung des größeren Trends gehandelt wird. Dadurch kann der Rückwärtshandel reduziert und die Gewinnrate erhöht werden.

  2. Dynamische Schwellenwertanpassung: Umstellung der festen Schwelle (−0,950,95) auf eine Schwelle, die auf die dynamische Anpassung an die Marktvolatilität basiert. In einem niedrig-volatilen Umfeld wird eine engere Schwelle verwendet, in einem hoch-volatilen Umfeld wird eine breitere Schwelle verwendet, um die Signalgenerierung unter verschiedenen Marktbedingungen anzupassen.

  3. Bestätigungsmechanismus: Zusätzlich zu den Transaktionsmengen-Analysekomponenten, die eine signifikante Transaktionsmenge-Unterstützung bei der Signalerzeugung erfordern, kann ein schlechtes Durchbruchsignal gefiltert und die Verluste durch falsche Durchbruche verringert werden.

  4. Optimierung der Geldverwaltung: Die derzeitige Strategie verwendet ein festes Prozentsatz für die Positionsverwaltung und kann als ein anpassungsfähiges Kapitalverwaltungssystem basierend auf Marktvolatilität und Gewinnraten verbessert werden, um Positionen bei Signalen mit hoher Gewissheit zu erhöhen und Positionen bei Signalen mit niedriger Gewissheit zu reduzieren.

  5. Maschinelles Lernen verstärkt: Die Parameter des IFTCCI-Indikators (CCI-Zyklen und WMA-Zyklen) werden mit Hilfe von Machine Learning-Algorithmen adaptiert und optimiert, um die optimale Kombination von Parametern automatisch an die unterschiedlichen Marktbedingungen anzupassen und die Anpassungsfähigkeit der Strategie zu verbessern.

  6. Filterung der Transaktionszeit: Um unvorhersehbare Schwankungen durch unvorhergesehene Ereignisse zu reduzieren, sollten Sie einen Filter für die Zeit des Handels verwenden, um die hohen Schwankungen vor dem Markteintritt und dem Markteintritt oder die Veröffentlichung wichtiger Wirtschaftsdaten zu vermeiden.

  7. Korrelationsanalyse: Die Einführung einer Korrelationsanalyse mit anderen Märkten oder Vermögenswerten erhöht die Glaubwürdigkeit von Handelssignalen und die Stabilität der Strategie, wenn gleichzeitig ähnliche Signale in mehreren relevanten Märkten auftreten.

Zusammenfassen

Die CCI-Strategie ist ein strukturiertes, logisch klares und quantitatives Handelssystem, das Handelssignale durch den Brechungsbruch der IFTCCI-Indikatoren erzeugt und mit Stop-Loss- und Re-Entry-Mechanismen ausgestattet ist, um Risiken und Chancen zu verwalten. Die Hauptvorteile der Strategie liegen in der Signalklarheit, der Dynamik der Risikokontrolle und der Anpassbarkeit der Parameter.

Die Strategie ist jedoch auch mit Risiken konfrontiert, wie z. B. häufige Transaktionen in turbulenten Märkten, eine unflexible Stop-Loss-Marge und die mangelnde Bestätigung langfristiger Trends. Durch die Integration von Multi-Time-Frame Analysen, dynamische Anpassung von Schwellenwerten, die Aufnahme von Transaktionsbestätigungen, die Optimierung des Kapitalmanagements, die Einführung von Machine-Learning-Verstärkungen und die Hinzufügung von Handelszeitfiltern können die Stabilität und Profitabilität der Strategie erheblich verbessert werden.

Für Trader, die diese Strategie anwenden möchten, ist es empfehlenswert, zunächst verschiedene Kombinationen von Parametern in einer Simulation zu testen, um die besten Einstellungen für ihre Handelsvarianten und Risikopräferenzen zu finden, und schrittweise die in diesem Artikel vorgeschlagenen Optimierungsrichtungen zu integrieren, um ein umfassenderes und robusteres Handelssystem zu erstellen.

Strategiequellcode
/*backtest
start: 2024-05-27 00:00:00
end: 2025-01-20 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © erkankuskonmaz

//@version=5
strategy("IFTCCI Buy Sell Signal Strategy",
         overlay=false,
         pyramiding=0,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=100,
         calc_on_every_tick=true) // NEW LINE: Enables real-time signal generation.

// --- Indicator Settings and Calculations (IFTCCIv2) ---
group_indicator_params = "Indicator Parameters (IFTCCIv2)"
ccilength_param = input.int(5, "CCI Period", group=group_indicator_params)
wmalength_param = input.int(9, title="Smoothing Period (WMA)", group=group_indicator_params)

// IFTCCIv2 Calculation
v1_calc = 0.1 * (ta.cci(close, ccilength_param) / 4)
v2_calc = ta.wma(v1_calc, wmalength_param)
indicator_value_ift = (math.exp(2 * v2_calc) - 1) / (math.exp(2 * v2_calc) + 1)

// --- Strategy Rule Inputs ---
group_entry_rules = "Buy Signal Conditions"
entry_low_prev_max = input.float(-0.95, title="Primary Buy: Previous Bar Max Value", group=group_entry_rules)
entry_low_curr_min = input.float(-0.94, title="Primary Buy: Current Bar Min Value", group=group_entry_rules)
reentry_trigger_units = input.float(0.10, title="Re-entry: Rise from Lowest Value", group=group_entry_rules)

group_exit_rules = "Sell Signal Conditions (Exit Position)"
exit_high_prev_min = input.float(0.95, title="Target Sell: Previous Bar Min Value", group=group_exit_rules)
exit_high_curr_max = input.float(0.94, title="Target Sell: Current Bar Max Value", group=group_exit_rules)
stop_loss_units = input.float(0.10, title="Stop Loss: Drop from Peak Value", group=group_exit_rules)

// --- Indicator Values for Strategy ---
float ind_val = indicator_value_ift
float ind_val_prev = indicator_value_ift[1]

// --- State Tracking Variables ---
var float highest_indicator_since_long_entry = na
var bool track_for_reentry_after_close = false
var float lowest_indicator_since_reentry_tracking_started = na

// --- Update State Logic ---
// 1. Update the highest indicator value since entering long position
if strategy.position_size > 0
    if strategy.position_size[1] <= 0
        highest_indicator_since_long_entry := ind_val
    else
        highest_indicator_since_long_entry := math.max(highest_indicator_since_long_entry, ind_val)
else
    if strategy.position_size[1] > 0
        highest_indicator_since_long_entry := na

// 2. Update re-entry tracking mechanism
if strategy.position_size[1] > 0 and strategy.position_size == 0
    track_for_reentry_after_close := true
    lowest_indicator_since_reentry_tracking_started := ind_val
else if strategy.position_size > 0
    track_for_reentry_after_close := false
    lowest_indicator_since_reentry_tracking_started := na
else if track_for_reentry_after_close and strategy.position_size == 0
    if not na(lowest_indicator_since_reentry_tracking_started)
        lowest_indicator_since_reentry_tracking_started := math.min(lowest_indicator_since_reentry_tracking_started, ind_val)
    else
        lowest_indicator_since_reentry_tracking_started := ind_val

// --- Buy Conditions (Long Entry) ---
bool can_enter_new_position = strategy.opentrades == 0

// Condition 1: Main Buy Condition
bool condition_main_buy_cross = ind_val_prev <= entry_low_prev_max and ind_val >= entry_low_curr_min
bool main_long_entry_trigger = condition_main_buy_cross and can_enter_new_position

// Condition 2: Re-entry Buy Condition
bool condition_re_entry_trigger = false
if track_for_reentry_after_close and not na(lowest_indicator_since_reentry_tracking_started) and can_enter_new_position
    if ind_val >= lowest_indicator_since_reentry_tracking_started + reentry_trigger_units
        condition_re_entry_trigger := true

// Combined Buy Condition
bool final_long_entry_condition = main_long_entry_trigger or condition_re_entry_trigger

// --- Sell Conditions (Long Exit) ---
bool currently_in_long_position = strategy.position_size > 0

// Sell Condition 1: Target Sell
bool condition_sell_target = ind_val_prev >= exit_high_prev_min and ind_val <= exit_high_curr_max

// Sell Condition 2: Stop Loss
bool condition_sell_stop_loss = false
if currently_in_long_position and not na(highest_indicator_since_long_entry)
    if ind_val <= highest_indicator_since_long_entry - stop_loss_units
        condition_sell_stop_loss := true

// Combined Sell Condition
bool final_long_exit_condition = currently_in_long_position and (condition_sell_target or condition_sell_stop_loss)

// --- Strategy Orders ---
if (final_long_entry_condition)
    entry_comment = main_long_entry_trigger ? "Buy (Primary)" : "Buy (Re-entry)"
    strategy.entry("Buy ID", strategy.long, comment=entry_comment)

if (final_long_exit_condition)
    exit_comment = condition_sell_target ? "Sell (Target)" : "Sell (Stop)"
    strategy.close("Buy ID", comment=exit_comment)

// --- Plot Indicator and Strategy Markers ---
plot(indicator_value_ift, title="IFTCCI Value", color=color.rgb(0, 0, 0), linewidth=2)
hline(0, "Mid Level", color=color.new(#787b86, 50), linestyle=hline.style_dotted)
hline(0.95, "Upper Reference (+0.95)", color=color.new(#002fff, 10), linestyle=hline.style_dashed)
hline(-0.95, "Lower Reference (-0.95)", color=color.new(#002fff, 10), linestyle=hline.style_dashed)

// Background Coloring on Entry and Exit Signals
color background_color = final_long_entry_condition ? color.new(color.green, 81) : final_long_exit_condition ? color.new(color.red, 81) : na
bgcolor(background_color, title="Signal Background")