
Die Strategie ist ein mehrstufiges Bestätigungssystem, das auf dem William Alligator und dem relativ starken RSI basiert und für 15-Minuten-Zeiträume entwickelt wurde. Die Strategie erzeugt Handelssignale, indem sie die Position des Preises in Bezug auf den Alligator und die Werte des RSI beurteilt. Die Kaufsignale müssen vier Bedingungen erfüllen: der Schlusskurs ist höher als die Lippenlinie, die Lippenlinie ist höher als die Zahnlinie, die Zahnlinie ist höher als die Hohllinie und der RSI ist größer als 55. Die Ausverkaufssignale hingegen verlangen, dass der Schlusskurs niedriger als die Lippenlinie, die Lippenlinie ist niedriger als die Zahnlinie, die Zahnlinie ist niedriger als die Hohllinie und der RSI ist kleiner als 45. Die Strategie enthält auch strenge Stop-Loss- und Gewinnschlussregeln, um sicherzustellen, dass Risiken und Gewinne kontrolliert werden können, wenn der Schlusskurs abfällt.
Die Kernprinzipien der Strategie basieren auf der kombinierten Anwendung des William Sharp-Indikators und des RSI-Indikators. Der William Sharp-Indikator besteht aus drei mittleren Linien: der Squirrel-Linie ((blau, 13-Perioden-SMA, 8-Perioden-Verzögerung), der Zahn-Linie ((rot, 8-Perioden-SMA, 5-Perioden-Verzögerung) und der Lippen-Linie ((grün, 5-Perioden-SMA, 3-Perioden-Verzögerung). Die Reihenfolge und der Kursübergang dieser drei Linien können die Richtung und Stärke der Markttrends anzeigen.
Wenn die Lippe über der Zahnlinie und die Zahnlinie über der Wurflinie liegt, ist der Markt im Aufwärtstrend. Wenn die Lippe unter der Zahnlinie und die Zahnlinie unter der Wurflinie liegt, ist der Markt im Abwärtstrend. Die Strategie wird auch in Verbindung mit dem RSI-Indikator bestätigt, der RSI ist größer als die 55-Uhr-Unterstützung und kleiner als die 45-Uhr-Unterstützung.
Während der Ausführung der Strategie überwacht das System mehrere Stopp-Bedingungen: für mehrköpfige Positionen wird ein Stop-Loss ausgelöst, wenn der RSI unter 50 fällt, wenn der Schlusskurs die Zahnlinie oder die Lippenlinie überschreitet. Für leere Positionen wird ein Stop-Loss ausgelöst, wenn der RSI über 50 fällt, wenn der Schlusskurs die Zahnlinie oder die Lippenlinie überschreitet.
MehrfachbestätigungDie Strategie erfordert die gleichzeitige Erfüllung von vier Bedingungen für die Aufnahme, wodurch falsche Signale reduziert und die Handelsqualität verbessert wird. Die Drei-Linien-Anordnung des William Herschel-Indikators bestätigt die Trendrichtung, während die Werte des RSI die Dynamik bestätigen.
Klare Ein- und AusstiegsregelnDie Strategie bietet klare Ein- und Ausstiegsbedingungen, reduziert subjektive Urteile und macht den Handelsprozess regulierter und disziplinierter.
Perfekte RisikokontrolleDie Strategie setzt mehrere Stop-Konditionen ein, darunter ein auf dem RSI basierendes Umkehrsignal, Änderungen in der Beziehung zwischen Preis und Zahnlinie und Änderungen in der Position zwischen Lippenlinie und Zahnlinie. Diese mehrschichtige Risikokontrollmechanismus hilft bei der zeitnahen Stop-Konditionen, um das maximale Risiko für einzelne Geschäfte zu kontrollieren.
Visualisierte RückmeldungDie Strategie zeigt auf den Diagrammen die Kauf- und Verkaufssignale, die Stop-Loss- und Gewinn-Knoten und die Erfüllung der Bedingungen in Echtzeit anhand der Tabellen, wodurch die Sichtbarkeit des Handelsprozesses erheblich verbessert wird.
Äußerst anpassungsfähig: Während die Strategieparameter standardmäßig eingestellt sind, können alle wichtigen Parameter durch Eingabe angepasst werden, so dass der Händler sie für verschiedene Marktbedingungen oder persönliche Vorlieben optimieren kann.
Häufige Geschäfte in kleinen, bewegten MärktenBei geringen Marktschwankungen können Preise häufig die Whale Line überschreiten, und der RSI kann in der Nähe der kritischen Werte schwanken, was zu zu vielen Handelssignalen und häufigen Ein- und Ausflügen führt, die die Handelskosten erhöhen. Die Lösung besteht darin, die Bestätigungsbedingungen zu erhöhen oder die Beobachtungszeit zu verlängern.
Das Risiko eines rückläufigen SchrittsDie tatsächliche Transaktionspreise können sich erheblich von den Preisen des Triggersignals unterscheiden, was das Risiko eines Slippings erhöht. Es wird empfohlen, diese Strategie vorsichtig zu verwenden oder vor der Veröffentlichung wichtiger Daten auszusetzen.
Gewinnziel konservativDie Strategie setzt die Gewinnziele auf 2 kleinste Veränderungseinheiten, was in einem sehr schwankenden Markt zu konservativ sein kann, um die Trends zu erfassen. Es kann in Betracht gezogen werden, die Gewinnziele dynamisch an die Marktfluktuation anzupassen oder eine Strategie zur Bündelung von Schwankungen zu verwenden.
Rückstand der IndikatorenDer RSI und der William Herschel-Indikator weisen eine gewisse Verzögerung auf und können bei schnellen Marktveränderungen keine zeitgemäßen Wendepunkte erfassen. Es wird empfohlen, eine unterstützende Beurteilung in Verbindung mit anderen führenden Indikatoren oder einer Analyse des Preisverhaltens vorzunehmen.
ParameterempfindlichkeitStrategie-Performance: Strategie-Performance ist sehr sensibel auf Parameter-Settings, insbesondere auf die Threshold-Setting des RSI. Verschiedene Parameter-Kombinationen können in verschiedenen Marktumgebungen unterschiedlich wirken und es ist notwendig, die optimale Parameter-Kombination durch Retrospektive zu finden.
Dynamische RSI-TermineDie aktuelle Strategie verwendet die festgelegten RSI-Thresholds ((55 und 45), wobei es in Betracht gezogen werden kann, diese in Abhängigkeit von der Dynamik der Marktvolatilität anzupassen. In hochvolatilen Märkten werden lockerere Thresholds verwendet, in niedrigvolatilen Märkten werden strengere Thresholds verwendet, um sich an unterschiedliche Marktumstände anzupassen.
Hinzufügen von TransaktionsfilternEinführung von Volumenbestätigung, Volatilitätsfilter oder Trendstärke-Indikatoren, um schwache Signale in den wackligen Märkten zu filtern und die Gewinnrate zu erhöhen, wenn nur ein klarer Trend eingegeben wird.
Optimierung der Anti-Epidemie-StrategieDie derzeitige Strategie mit einem festen 2-Tick-Stop ist zu einfach. Man kann dynamische Stop-Strategien wie Tracking-Stops oder Stops auf Basis des ATR (Average True Rate) in Betracht ziehen, um bei starken Trends mehr zu erzielen.
Zeit-FilterUm unnötige Risiken zu verringern, wird ein Zeitfilter hinzugefügt, um Zeiten mit geringer Liquidität oder außergewöhnlichen Schwankungen zu vermeiden, wie z. B. 15 Minuten vor und nach dem Start des Spiels oder Zeiten, in denen wichtige Daten veröffentlicht werden.
Optimierung der GeldverwaltungDerzeit wird mit einem festen Kapitalanteil ((100%) gehandelt, wobei die Positionsgröße aufgrund von Marktfluktuationen oder der Veränderung des Konto-Netzwerts dynamisch angepasst werden kann, um eine wissenschaftlichere Kapitalverwaltung zu erreichen.
Die Multi-Level-Confirmation-Trading-Strategie von William Sharp in Verbindung mit dem RSI ist ein strukturiertes, logisch klares Trading-System, das durch die Integration der Trendentscheidungskraft des William Sharp-Indikators und der Dynamikbestätigung der RSI einen vielschichtigen Rahmen für die Handelsentscheidung schafft. Die Hauptvorteile dieser Strategie liegen in der Mehrfachbestätigung und der perfekten Risikokontrolle.
Durch die Optimierung von Richtungen wie dynamische Anpassung der RSI-Temperature, Erhöhung der Handelsfilter, Optimierung der Stop-Loss-Strategie, Hinzufügen von Zeitfiltern und Verbesserung der Kapitalverwaltung wird die Strategie ihre Stabilität und Profitabilität weiter verbessern. Insgesamt ist es eine praktisch wertvolle quantitative Handelsstrategie, die für Händler geeignet ist, die über ein gewisses Verständnis der technischen Indikatoren verfügen und eine stabile Ertragslage in den Futures-Märkten erwarten.
/*backtest
start: 2024-08-19 00:00:00
end: 2025-08-18 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_OKX","currency":"ETH_USDT","balance":5000}]
*/
//@version=5
strategy("Natural Gas Alligator RSI Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// =====================================
// INPUTS
// =====================================
// Williams Alligator Settings (default)
jaw_length = input.int(13, title="Jaw Length", minval=1)
jaw_offset = input.int(8, title="Jaw Offset", minval=0)
teeth_length = input.int(8, title="Teeth Length", minval=1)
teeth_offset = input.int(5, title="Teeth Offset", minval=0)
lips_length = input.int(5, title="Lips Length", minval=1)
lips_offset = input.int(3, title="Lips Offset", minval=0)
// RSI Settings (default)
rsi_length = input.int(14, title="RSI Length", minval=1)
// Natural Gas tick size (typically 0.001)
tick_size = input.float(0.001, title="Tick Size", minval=0.0001, step=0.0001)
// =====================================
// INDICATORS
// =====================================
// Williams Alligator
jaw = ta.sma(hl2, jaw_length)[jaw_offset]
teeth = ta.sma(hl2, teeth_length)[teeth_offset]
lips = ta.sma(hl2, lips_length)[lips_offset]
// RSI
rsi = ta.rsi(close, rsi_length)
// =====================================
// PLOT INDICATORS
// =====================================
plot(jaw, "Alligator Jaw", color=color.blue, linewidth=2)
plot(teeth, "Alligator Teeth", color=color.red, linewidth=2)
plot(lips, "Alligator Lips", color=color.green, linewidth=2)
// RSI (plotted in separate pane)
hline(50, "RSI Mid Line", color=color.gray, linestyle=hline.style_dashed)
hline(55, "RSI Buy Level", color=color.green, linestyle=hline.style_dotted)
hline(45, "RSI Sell Level", color=color.red, linestyle=hline.style_dotted)
plot(rsi, "RSI", color=color.purple)
// =====================================
// STRATEGY CONDITIONS
// =====================================
// Buy Conditions
buy_condition_1 = close > lips
buy_condition_2 = lips > teeth
buy_condition_3 = teeth > jaw
buy_condition_4 = rsi > 55
buy_signal = buy_condition_1 and buy_condition_2 and buy_condition_3 and buy_condition_4
// Sell Conditions
sell_condition_1 = close < lips
sell_condition_2 = lips < teeth
sell_condition_3 = teeth < jaw
sell_condition_4 = rsi < 45
sell_signal = sell_condition_1 and sell_condition_2 and sell_condition_3 and sell_condition_4
// Stop Loss Conditions for Long Position
long_stop_condition_1 = rsi < 50
long_stop_condition_2 = ta.crossunder(close, teeth)
long_stop_condition_3 = lips < teeth
long_stop_loss = long_stop_condition_1 or long_stop_condition_2 or long_stop_condition_3
// Stop Loss Conditions for Short Position
short_stop_condition_1 = rsi > 50
short_stop_condition_2 = ta.crossover(close, teeth)
short_stop_condition_3 = lips > teeth
short_stop_loss = short_stop_condition_1 or short_stop_condition_2 or short_stop_condition_3
// =====================================
// STRATEGY EXECUTION
// =====================================
// Variables to track entry prices
var float long_entry_price = na
var float short_entry_price = na
// Long Entry
if buy_signal and strategy.position_size == 0
strategy.entry("Long", strategy.long)
long_entry_price := close
alert("Buy Signal Generated", alert.freq_once_per_bar)
// Short Entry
if sell_signal and strategy.position_size == 0
strategy.entry("Short", strategy.short)
short_entry_price := close
alert("Sell Signal Generated", alert.freq_once_per_bar)
// Long Exit Conditions
if strategy.position_size > 0
// Take Profit: 2 ticks above entry
long_take_profit = long_entry_price + (2 * tick_size)
if close >= long_take_profit
strategy.close("Long", comment="Take Profit")
alert("Take Profit - Long Position Closed", alert.freq_once_per_bar)
long_entry_price := na
// Stop Loss
if long_stop_loss
strategy.close("Long", comment="Stop Loss")
alert("Stop Loss - Long Position Closed", alert.freq_once_per_bar)
long_entry_price := na
// Short Exit Conditions
if strategy.position_size < 0
// Take Profit: 2 ticks below entry
short_take_profit = short_entry_price - (2 * tick_size)
if close <= short_take_profit
strategy.close("Short", comment="Take Profit")
alert("Take Profit - Short Position Closed", alert.freq_once_per_bar)
short_entry_price := na
// Stop Loss
if short_stop_loss
strategy.close("Short", comment="Stop Loss")
alert("Stop Loss - Short Position Closed", alert.freq_once_per_bar)
short_entry_price := na
// =====================================
// CHART LABELS AND ALERTS
// =====================================
// Buy Signal Label
if buy_signal and strategy.position_size == 0
label.new(bar_index, low - (high - low) * 0.1, "BUY\nSIGNAL",
color=color.green, style=label.style_label_up,
textcolor=color.white, size=size.small)
// Sell Signal Label
if sell_signal and strategy.position_size == 0
label.new(bar_index, high + (high - low) * 0.1, "SELL\nSIGNAL",
color=color.red, style=label.style_label_down,
textcolor=color.white, size=size.small)
// Stop Loss Labels
if strategy.position_size > 0 and long_stop_loss
label.new(bar_index, high + (high - low) * 0.1, "STOP\nLOSS",
color=color.orange, style=label.style_label_down,
textcolor=color.white, size=size.small)
if strategy.position_size < 0 and short_stop_loss
label.new(bar_index, low - (high - low) * 0.1, "STOP\nLOSS",
color=color.orange, style=label.style_label_up,
textcolor=color.white, size=size.small)
// Take Profit Labels
if strategy.position_size > 0 and not na(long_entry_price) and close >= (long_entry_price + (2 * tick_size))
label.new(bar_index, high + (high - low) * 0.1, "TAKE\nPROFIT",
color=color.blue, style=label.style_label_down,
textcolor=color.white, size=size.small)
if strategy.position_size < 0 and not na(short_entry_price) and close <= (short_entry_price - (2 * tick_size))
label.new(bar_index, low - (high - low) * 0.1, "TAKE\nPROFIT",
color=color.blue, style=label.style_label_up,
textcolor=color.white, size=size.small)
// =====================================
// TABLE FOR CURRENT CONDITIONS
// =====================================
var table info_table = table.new(position.top_right, 2, 8, bgcolor=color.white, border_width=1)
if barstate.islast
table.cell(info_table, 0, 0, "Condition", bgcolor=color.gray, text_color=color.white)
table.cell(info_table, 1, 0, "Status", bgcolor=color.gray, text_color=color.white)
table.cell(info_table, 0, 1, "Close > Lips", bgcolor=color.white)
table.cell(info_table, 1, 1, buy_condition_1 ? "✓" : "✗", text_color=buy_condition_1 ? color.green : color.red)
table.cell(info_table, 0, 2, "Lips > Teeth", bgcolor=color.white)
table.cell(info_table, 1, 2, buy_condition_2 ? "✓" : "✗", text_color=buy_condition_2 ? color.green : color.red)
table.cell(info_table, 0, 3, "Teeth > Jaw", bgcolor=color.white)
table.cell(info_table, 1, 3, buy_condition_3 ? "✓" : "✗", text_color=buy_condition_3 ? color.green : color.red)
table.cell(info_table, 0, 4, "RSI > 55", bgcolor=color.white)
table.cell(info_table, 1, 4, buy_condition_4 ? "✓" : "✗", text_color=buy_condition_4 ? color.green : color.red)
table.cell(info_table, 0, 5, "RSI < 45", bgcolor=color.white)
table.cell(info_table, 1, 5, sell_condition_4 ? "✓" : "✗", text_color=sell_condition_4 ? color.red : color.green)
table.cell(info_table, 0, 6, "Current RSI", bgcolor=color.white)
table.cell(info_table, 1, 6, str.tostring(math.round(rsi, 2)), text_color=color.black)
table.cell(info_table, 0, 7, "Position", bgcolor=color.white)
position_text = strategy.position_size > 0 ? "LONG" : strategy.position_size < 0 ? "SHORT" : "NONE"
position_color = strategy.position_size > 0 ? color.green : strategy.position_size < 0 ? color.red : color.gray
table.cell(info_table, 1, 7, position_text, text_color=position_color)