
Die Multi-Oscillator Dynamic-Filter-Mean-Return-Bitcoin-Trading-Strategie ist eine speziell für Bitcoin-Short-Line-Trading entwickelte quantitative Strategie, die RSI-Kanäle, WaveTrend-Indikatoren und Zufalls-RSI-Indikatoren geschickt kombiniert, um ein mehrschichtiges Filtersystem zu bilden. Der Kern der Strategie ist die Nutzung der Durchbruch-Return-Eigenschaften des Preises auf die RSI-Kanäle, während die WaveTrend und der Zufalls-RSI als Bestätigungsfilter verwendet werden, um einen hohen Gewinn in überkauflichen und überverkauften Bereichen zu gewährleisten. Die Strategie verwendet ein 1-Minuten-Zeitrahmen für High-Frequency-Short-Trading und ist mit flexiblen Stop-Loss-Mechanismen und Umkehr-Trading-Funktionen ausgestattet.
Die Strategie basiert auf der Synergie von drei zentralen technischen Indikatoren:
RSI-Kanäle (RSI Bands)Die Strategie verwendet eine verbesserte Version des RSI-Kanalindikators, basierend auf den Überkauf (70) und Überverkauf (30) der RSI, um den Aufschwung, den Absturz und die Mitte der Preise zu berechnen. Wenn der Preis den Absturz durchbricht, werden mehrere Signale erzeugt, wenn der Kurs den Absturz durchbricht, werden die Kurzsignale erzeugt.
WaveTrend (WT)Der WT1-Indikator mit LazyBear hat die Standard-Kanallänge 11, die Durchschnittslänge 12 und die Überkauf- und Überverkaufssituation +60. Der Indikator ist ein dynamischer Oszillator, der verwendet wird, um festzustellen, ob ein Markt überkauft oder überverkauft ist.
Der Stochastic RSIDer RSI-Wert ist 10 und die RSI-Länge ist 14. Der Indikator bestätigt die Überkauf-Überverkauf-Situation des Marktes und erhöht die Signalsicherheit.
Die Signalgenerationslogik der Strategie lautet wie folgt:
Es gibt zwei Optionen für den Triggermodus: “Cross (closed) ” verwendet den Schlusskurs, um den RSI-Kanal zu durchqueren, und “Touch (wick) ” erlaubt es, dass die Schattenlinie das RSI-Kanal-Triggersignal berührt. Darüber hinaus enthält die Strategie einen umgekehrten Ausstiegsmechanismus, d.h. wenn ein umgekehrter Signal auftritt, kann der Handel platziert und umgekehrt eröffnet werden, was für ein volatiles Marktumfeld geeignet ist.
Eine eingehende Analyse des Strategie-Codes zeigt folgende deutliche Vorteile:
MehrfachfilterungDurch die Kombination von drei verschiedenen technischen Indikatoren (RSI-Kanal, WaveTrend und Random RSI) entsteht ein leistungsfähiges mehrschichtiges Filtersystem, das das Risiko von False Breakouts erheblich reduziert und die Qualität und Zuverlässigkeit der Handelssignale erhöht.
Flexible HandelsmechanismenDie Strategie bietet eine Vielzahl an individuell anpassbaren Optionen, einschließlich der Möglichkeit, ein Rückwärts-Exit zu verwenden, die Option Stop/Loss zu aktivieren und die Option für den Triggermodus zu aktivieren, so dass der Händler sich an die Marktsituation und die persönlichen Risikopräferenzen anpassen kann.
Effiziente RisikomanagementDie Einführung eines “Stop-Loss-Prozentsatzes” ermöglicht eine exakte Kontrolle des Risikos und des Ertrags pro Transaktion und schützt das Geld.
Automatische AlarmanlageDie Integration der Telegram-Benachrichtigungsfunktion ermöglicht die Echtzeit-Benachrichtigung von Handelssignalen, die es Händlern ermöglichen, ihre Transaktionen zeitnah zu verfolgen und auszuführen.
Informationsmechanismus gegen AbfallDie Strategie implementiert Mechanismen, um die Wiederholung von Alarmen zu verhindern und sicherzustellen, dass nur ein Signal innerhalb derselben K-Leitung gesendet wird, um Informationsredundanz zu vermeiden.
Anpassungsfähigkeit des HochfrequenzhandelsDie Strategie basiert auf einem 1-Minuten-Zeitrahmen und ist für hochfrequente Handelsumgebungen geeignet, um kurzfristige Preisschwankungen zu erfassen und schnelle Marktein- und -ausgänge zu ermöglichen.
Obwohl die Strategie sehr gut konzipiert ist, gibt es einige potenzielle Risiken:
HochfrequenzrisikenLösungen: Erwägen Sie, zusätzliche Zeitfilter hinzuzufügen oder nur zu bestimmten Marktzeiten zu handeln.
Falsche DurchbruchgefahrTrotz mehrfacher Filter kann es in einem hochflüchtigen Markt zu False Breakouts kommen, die zu Handelsverlusten führen. Lösungen: Anpassung der Indikatorparameter, Hinzufügung von Bestätigungsbedingungen oder Trendbeurteilung in Verbindung mit längeren Zeitzyklen.
ParameterempfindlichkeitStrategie-Leistung ist stark von Parameter-Einstellungen abhängig, die in unterschiedlichen Marktumgebungen unterschiedlich sein können. Lösungsansatz: Durchführen einer ausreichenden historischen Rückführung, finden Sie die optimale Kombination von Parametern und optimieren Sie die Parameter regelmäßig neu.
Anpassung an MarkttrendsDie Mean Return Strategie funktioniert gut in den bewegten Märkten, kann aber in den stark trendigen Märkten schlechter funktionieren. Lösung: Hinzufügen von Trendfiltern, um den Gegen-Trend-Handel während der starken Trends zu begrenzen.
Systemische RisikenLösungsmöglichkeiten: Implementierung von Backup-Benachrichtigungskanälen oder einer lokalen Alarmierung.
Die Strategie kann auf der Grundlage von Code-Analysen in folgenden Richtungen optimiert werden:
Hinzufügen von MarktrechnungenDie Einführung eines Anpassungsmechanismus, der die Strategieparameter dynamisch an die Marktvolatilität und die Trendstärke anpasst. Dadurch kann die Strategie in verschiedenen Marktumgebungen gut funktionieren. Die konkrete Umsetzung kann durch die Berechnung des ATR (Average True Range) oder des Volatilitätsindikators beurteilt werden.
Mehrfache Zeitrahmenanalyse: Integration von Markttrend-Informationen in höheren Zeitrahmen, Handel nur in Richtung des Haupttrends oder Verwendung verschiedener Parameter-Einstellungen für verschiedene Trendbedingungen. Zum Beispiel kann eine Tageslinie oder eine 4-Stunden-Trend-Beurteilung hinzugefügt werden, um im Aufwärtstrend nur mehr zu tun und im Abwärtstrend nur weniger zu tun.
Optimierung der Zulassungszeit: Erhöhung der Eintrittsgenauigkeit durch Erhöhung der Transaktionsbestätigung oder der Erkennung von Preisverhaltensmustern. Es kann in Betracht gezogen werden, einen günstigeren Eintrittspunkt zu erwarten, nachdem ein Signal erzeugt wurde, anstatt sofort einzutreten.
Verbesserte Stop-Loss-Mechanismen: Dynamische Stop-Loss-Einstellungen, wie Tracking-Stops oder Stop-Loss-Einstellungen basierend auf Volatilität, um unterschiedlichen Marktumständen gerecht zu werden. Zum Beispiel kann die Stop-Loss-Distanz basierend auf ATR-Einstellungen oder die Verwendung von mobilen Stop-Loss-Schutz-Gewinne verwendet werden.
Hinzufügen von Machine Learning-Elementen: Automatische Identifizierung der besten Parameterkombinationen oder Vorhersage der Signalwirksamkeit mit Hilfe von Machine-Learning-Algorithmen.
RisikomanagementDas Ziel der Strategie ist: Dynamische Positionsanpassungen basierend auf Konto-Netzwerten, Reduzierung der Handelsvolumen nach fortlaufenden Verlusten, Erhöhung der Handelsvolumen nach fortlaufenden Gewinnen und eine wissenschaftlichere Geldverwaltung.
Die “Multiple Oscillator Dynamic Filter Average Return Bitcoin Trading Strategy” ist ein sorgfältig konzipiertes Short-Line-Trading-System, das über die Synergie von RSI-Kanälen, WaveTrend und Random RSI die Überkauf-Überverkauf-Status des Marktes effektiv identifiziert und die Handelsmöglichkeiten für die Erhöhung der Erhöhung des Mittelwertes erfasst. Die Strategie bietet Vorteile wie Multiple Filter, flexible Handelsmechanismen, effiziente Risikomanagement und automatisierte Warnungen und ist für Short-Line-Händler im Bitcoin-Markt geeignet.
Die Strategie sieht sich jedoch auch mit Herausforderungen konfrontiert, darunter Hochfrequenz-Handelsrisiken, False Breakout-Risiken und Marktadaptivität. Die Strategie kann durch die Hinzufügung von Marktsituationsurteilen, Multi-Time-Frame-Analysen, Optimierung des Einstiegszeitpunkts, Verbesserung der Stop-Loss-Mechanismen und Implementierung dynamischer Positionsverwaltung weiter verbessert werden.
Für quantitative Trader, die kurzfristig am Bitcoin-Markt handeln möchten, bietet die Strategie einen soliden Rahmen, der individuell angepasst und optimiert werden kann, um nach individuellen Handelsstilen und Marktwahrnehmungen zu stabilen Gewinnen zu gelangen.
/*backtest
start: 2024-08-15 00:00:00
end: 2025-08-13 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/
//@version=5
strategy("RS BTC 1", overlay=true, max_labels_count=500, initial_capital=100, commission_type=strategy.commission.percent, commission_value=0.003, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick=true, process_orders_on_close=false, pyramiding=0)
// ==== Inputs
// RSI Bands
rsiLen = input.int(14, "RSI Length")
obLevel = input.int(70, "RSI Overbought")
osLevel = input.int(30, "RSI Oversold")
// WT (LazyBear)
wtLen1 = input.int(11, "WT Channel Length")
wtLen2 = input.int(12, "WT Avg Length")
wtOB = input.float( 60.0, "WT Overbought (+)")
wtOS = input.float(-60.0, "WT Oversold (-)")
// Stoch RSI (sadece K filtresi)
kLen = input.int(5, "StochRSI K")
rsiLenSR = input.int(14, "StochRSI RSI Length")
stLen = input.int(10, "Stoch Length")
rsiSrc = input.source(close, "RSI Source")
stochOB = input.float(100.0, "StochRSI OB (K ≥)", step=0.1)
stochOS = input.float(0.0, "StochRSI OS (K ≤)", step=0.1)
eps = input.float(0.5, "Tolerance around 0/100", step=0.1)
// Tetik modu
triggerMode = input.string("Cross(close)", "Trigger mode", options=["Cross(close)","Touch(wick)"])
showMid = input.bool(true, "Show RSI mid band")
// Çıkış seçenekleri
useReverseExit = input.bool(true, "Exit & reverse on opposite band cross (swing)")
useTP = input.bool(true, "Enable Take Profit %")
useSL = input.bool(true, "Enable Stop Loss %")
tpPerc = input.float(1.00, "TP %", step=0.01, minval=0.01)
slPerc = input.float(1.00, "SL %", step=0.01, minval=0.01)
// ==== RSI Bands (LazyBear) – Mantık aynı, sadece ince çizgi
src = close
ep = 2 * rsiLen - 1
auc = ta.ema(math.max(src - src[1], 0), ep)
adc = ta.ema(math.max(src[1] - src, 0), ep)
x1 = (rsiLen - 1) * (adc * obLevel / (100 - obLevel) - auc)
x2 = (rsiLen - 1) * (adc * osLevel / (100 - osLevel) - auc)
ub = x1 >= 0 ? src + x1 : src + x1 * (100 - obLevel) / obLevel
lb = x2 >= 0 ? src + x2 : src + x2 * (100 - osLevel) / osLevel
mid = (ub + lb) / 2.0
plot(ub, "RSI Upper", color=color.yellow, linewidth=1)
plot(lb, "RSI Lower", color=color.aqua, linewidth=1)
plot(showMid ? mid : na, "RSI Mid", color=color.gray, linewidth=1)
// ==== WaveTrend (LazyBear WT1)
ap = hlc3
esa = ta.ema(ap, wtLen1)
d = ta.ema(math.abs(ap - esa), wtLen1)
ci = (ap - esa) / (0.015 * d)
wt1 = ta.ema(ci, wtLen2)
// ==== Stoch RSI K (0..100)
rsiVal = ta.rsi(rsiSrc, rsiLenSR)
stochRaw = ta.stoch(rsiVal, rsiVal, rsiVal, stLen)
stochK = ta.sma(stochRaw, kLen)
// ==== Sinyaller
longCrossRaw = triggerMode == "Cross(close)" ? ta.crossunder(close, lb) : ta.crossunder(low, lb)
shortCrossRaw = triggerMode == "Cross(close)" ? ta.crossover( close, ub) : ta.crossover( high, ub)
stochLongOK = stochK <= (stochOS + eps)
stochShortOK = stochK >= (stochOB - eps)
wtLongOK = wt1 < wtOS
wtShortOK = wt1 > wtOB
longSig_raw = longCrossRaw and wtLongOK and stochLongOK
shortSig_raw = shortCrossRaw and wtShortOK and stochShortOK
longSig = useReverseExit ? longSig_raw : (longSig_raw and strategy.position_size == 0)
shortSig = useReverseExit ? shortSig_raw : (shortSig_raw and strategy.position_size == 0)
// ==== İşlemler
if longSig
if useReverseExit and strategy.position_size < 0
strategy.close("S")
if strategy.position_size <= 0
strategy.entry("L", strategy.long)
if shortSig
if useReverseExit and strategy.position_size > 0
strategy.close("L")
if strategy.position_size >= 0
strategy.entry("S", strategy.short)
// ==== TP / SL
if strategy.position_size > 0 and (useTP or useSL)
longEntryPrice = strategy.position_avg_price
longTP = useTP ? longEntryPrice * (1 + tpPerc/100.0) : na
longSL = useSL ? longEntryPrice * (1 - slPerc/100.0) : na
strategy.exit(id="L-EXIT", from_entry="L", limit=longTP, stop=longSL)
if strategy.position_size < 0 and (useTP or useSL)
shortEntryPrice = strategy.position_avg_price
shortTP = useTP ? shortEntryPrice * (1 - tpPerc/100.0) : na
shortSL = useSL ? shortEntryPrice * (1 + slPerc/100.0) : na
strategy.exit(id="S-EXIT", from_entry="S", limit=shortTP, stop=shortSL)
// ==== ENTRY alert (tek bar / tek kez) ====
// TV Alert -> Condition: Any alert() function call
// Webhook -> https://api.telegram.org/bot<YOUR_TOKEN>/sendMessage
// Message -> BOŞ (alert() JSON yolluyor)
chatId = input.string("-1002849453919", "Telegram chat_id (channel)")
lotTxt = input.string("0.20", "Lot (text)")
tpPips = input.int(10000, "TP (pip)") // SL yok
makeJson(_txt) => '{"chat_id":"' + chatId + '","text":"' + _txt + '"}'
// MT5 sembolü sabit
longTxt = 'BUY BTCUSD# ' + lotTxt + ' TP=' + str.tostring(tpPips) + 'pip'
shortTxt = 'SELL BTCUSD# ' + lotTxt + ' TP=' + str.tostring(tpPips) + 'pip'
// Giriş oldu mu? (bar içinde)
enteredLong = strategy.position_size > 0 and strategy.position_size[1] <= 0
enteredShort = strategy.position_size < 0 and strategy.position_size[1] >= 0
// --- anti-spam: aynı barda yalnızca 1 kere gönder ---
var int lastEntryBar = na
var int lastDir = 0 // +1: long, -1: short
if enteredLong and (lastEntryBar != bar_index or lastDir != 1)
alert(makeJson(longTxt), alert.freq_once_per_bar) // tek gönderim
lastEntryBar := bar_index
lastDir := 1
if enteredShort and (lastEntryBar != bar_index or lastDir != -1)
alert(makeJson(shortTxt), alert.freq_once_per_bar)
lastEntryBar := bar_index
lastDir := -1