Diese Strategie basiert auf dem RSI (Relative Strength Index) Indikator, um überkaufte und überverkaufte Bedingungen zu bestimmen. Es nimmt Gegen-Trend-Positionen, wenn der RSI überkaufte oder überverkaufte Ebenen erreicht, um niedrig zu kaufen und hoch zu verkaufen. Die Strategie ist einfach und effektiv und profitiert von kurzfristigen überkauften und überverkauften Szenarien auf dem Markt.
Die Strategie verwendet den RSI-Indikator ausschließlich als Einstiegssignal. Sie geht lang, wenn der RSI unter den Tiefpunkt (Standard 20) überschreitet, und geht kurz, wenn der RSI über den Höchstpunkt (Standard 80) überschreitet. Sie handelt jedes Mal mit einem festen Betrag (Standard 100) und zielt unabhängig von den Marktbedingungen auf einen Gewinn von 1% ab. Wenn der Verlust 3% erreicht, stoppt sie. Um die Handelsfrequenz zu kontrollieren, stoppt die Strategie den Handel nach einem Verlusthandel für 24 Bars.
Die Kernlogik lautet:
Wie wir sehen können, ist die Strategie sehr einfach und mechanisch. Es gibt kaum Raum für Parameteroptimierung. Sie nutzt lediglich die mathematischen Eigenschaften des RSI, um Gegentrendpositionen um überkaufte/überverkaufte Regionen zu ergreifen.
Der größte Vorteil dieser Strategie ist die Einfachheit und Effizienz.
Es implementiert auch Stop-Loss / Take-Profit-Verhältnisse, um Gewinne zu erzielen und Risiken zu kontrollieren, sowie Handelsunterbrechungen, um die Häufigkeit zu reduzieren. Dies maximiert die Belohnung und minimiert die Risiken.
Die wichtigsten Risiken dieser Strategie sind folgende:
Der RSI kann bei anhaltendem Trend für längere Zeit in der Überkauf/Überverkaufszone bleiben.
Ein zu großer Stop-Loss kann zu einem übermäßigen Verlust führen.
Hohe Handelsfrequenz kann zu einem Überhandel nach Gewinnen führen.
Die Konzentration der Risiken auf 100 Dollar sollte sich auf den Anteil des Kapitals optimieren.
Auf der Grundlage der Analyse kann die Strategie wie folgt verbessert werden:
Fügen Sie einen Trendfilter wie MA hinzu, um den Handel zu pausieren, wenn der Trend unklar ist.
Optimieren Sie die Stop-Loss/Take-Profit-Verhältnisse, reduzieren Sie den Stop-Loss auf 1-2% und verwenden Sie dynamische Take-Profit-Verhältnisse.
Grenzen für die Häufigkeit des Handels, z. B. max. 2 Trades pro Zeitraum.
Größe der Transaktionen basiert auf % des Kapitals anstelle von 100 USD.
Optimieren Sie die RSI-Parameter wie Periode, Überkauf-/Verkaufsniveau.
Zusätzliche Positionsgröße, um bei Kapitalerhöhungen nicht zu erhöhen.
Mit diesen Optimierungen können die Risiken verringert und die Stabilität erheblich verbessert werden.
Zusammenfassend ist dies eine einfache und unkomplizierte Strategie, bei der der RSI verwendet wird, um überkaufte/überverkaufte Bedingungen für eine kurzfristige Durchschnittsumkehr zu handeln. Die Vorteile sind Einfachheit, Effizienz, keine Vorhersage erforderlich, klare Logik, leicht zu testen. Die Nachteile sind die Unfähigkeit, bei starken Trends und potenziellen Verlusten zu profitieren. Mit Ergänzungen wie Trendfilter, optimierten Parametern, Positionsgrößen usw. kann er für Stabilität und Rentabilität weiter verbessert werden. Die Logik ist innovativ und wertvoll für den praktischen Handel, wenn sie richtig angewendet wird.
/*backtest start: 2023-11-02 00:00:00 end: 2023-11-09 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("rsi超买超卖_回测用", overlay=false, initial_capital=50000, currency=currency.USD, default_qty_type=strategy.cash) open_pos = input.int(50000, title = "每次开单资金(usdt)") rsi_period = input.int(14, title = "rsi周期") rsi_line = input.float(20.0, title='RSI触发线', step=0.05) stop_rsi_top_line = input.float(70, title = "顶部rsi止损线") stop_rsi_bottom_line = input.float(30, title = "底部rsi止损线") stop_loss_perc = input.float(0.03, title = "止损线") stop_profit = input.float(0.01, title = "止盈") loss_stop_trade_k = input.int(24, title = "亏损后x根K线不做交易") rsiParam = ta.rsi(close, rsi_period) var int failedTimes = 0 var bool stopTrade = false // plot(rsiParam) if stopTrade failedTimes += 1 if failedTimes == loss_stop_trade_k failedTimes := 0 stopTrade := false // 获取当前持仓方向 checkCurrentPosition() => strategy.position_size > 0 ? 1 : strategy.position_size < 0 ? -1 : 0 curPosition = checkCurrentPosition() // 当前持仓成本价 position_avg_price = strategy.position_avg_price // 当前持单, 触达反向的rsi线,清仓 if curPosition > 0 and rsiParam >= stop_rsi_top_line strategy.close_all(comment = "closebuy") if curPosition < 0 and rsiParam <= stop_rsi_bottom_line strategy.close_all(comment = "closesell") // 止盈止损清仓 if curPosition > 0 // if (position_avg_price - close) / close >= stop_loss_perc // // 止损 // strategy.close_all(comment = "closebuy") // stopTrade := true if (close - position_avg_price) / position_avg_price >= stop_profit // 止盈 strategy.close_all(comment = "closebuy") if curPosition < 0 // if (close - position_avg_price) / position_avg_price >= stop_loss_perc // // 止损 // strategy.close_all(comment = "closesell") // stopTrade := true if (position_avg_price - close) / close >= stop_profit // 止盈 strategy.close_all(comment = "closesell") a = strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1) if bar_index == a and strategy.closedtrades.profit(strategy.closedtrades - 1) < 0 stopTrade := true var float openPrice = 0.0 if rsiParam <= rsi_line and stopTrade == false strategy.entry("long", strategy.long, open_pos / close, comment = "long") if curPosition == 0 openPrice := close strategy.exit("long_stop", "long", limit = openPrice * (1+stop_profit), stop=openPrice * (1-stop_loss_perc), comment = "closebuy") if rsiParam >= 100 - rsi_line and stopTrade == false strategy.entry("short", strategy.short, open_pos / close, comment = "short") if curPosition == 0 openPrice := close strategy.exit("short_stop", "short", limit = openPrice * (1-stop_profit), stop=openPrice * (1+stop_loss_perc), comment = "closesell") plot(failedTimes)