
Diese Strategie basiert auf der relativ starken Indikator ((RSI) zu überkaufen und zu verkaufen, um einen Rückschlag zu erreichen, wenn der RSI überkaufen und überkaufen Bereich erreicht. Die Strategie ist einfach und effizient, um durch die Erfassung von kurzfristigen Überkaufen und Überverkaufen zu profitieren.
Die Strategie verwendet nur den RSI-Indikator als Positionssignal. Wenn der RSI unter dem festgelegten Tiefpunkt (default 20) liegt, ist der RSI unter dem festgelegten Hochpunkt (default 80), und wenn der RSI über dem festgelegten Hochpunkt (default 80) liegt, ist der RSI leer.
Die Kernlogik der Strategie lautet:
Die Strategie ist sehr mechanisch und gibt kaum Raum für Parameteroptimierung. Sie nutzt die reinen mathematischen Eigenschaften des RSI-Indikators, um in überkauften und überverkauften Gebieten umgekehrt zu positionieren und umgekehrt zu profitieren.
Die größte Stärke dieser Strategie liegt in ihrer Einfachheit und Effizienz.
Darüber hinaus wurde die Strategie mit einem Stop-Loss-Verhältnis eingerichtet, um Gewinne zu sichern und Risiken zu kontrollieren, sowie mit einem Trading-Suspension-Mechanismus, um die Handelsfrequenz zu reduzieren. Dies ermöglicht der Strategie, stabile Gewinne mit minimalem Risiko zu erzielen.
Die Hauptrisiken dieser Strategie sind:
Wenn der Trend sehr stark ist, kann der RSI in einer überkauften oder überverkauften Zone bleiben, und es gibt nur eine geringe Chance, dass sich die Strategie umkehrt.
Eine übermäßige Stop-Loss-Einstellung kann zu einer Vergrößerung der Verluste führen. Der Stop-Loss beträgt derzeit 3%, es kann jedoch zu einer Anpassung von 1-2% kommen.
Eine zu hohe Handelsfrequenz kann dazu führen, dass nach dem Aufbau von Positionen weiterhin Gewinne erzielt werden. Die Häufigkeit der Aufnahme von Positionen sollte entsprechend kontrolliert werden.
Die Festsetzung von 100 USD pro Position kann zu riskant sein und muss als Kapitalanteil optimiert werden.
Nach den oben beschriebenen Analysen kann die Strategie in folgenden Bereichen optimiert werden:
Es ist wichtig, dass die Trends mit den wichtigsten Indikatoren, wie beispielsweise dem MA, verglichen werden, um den Trend zu bestimmen.
Optimierung der Stop-Loss-Stop-Ratio, um die Stop-Loss-Anpassung auf 1-2% zu optimieren. Die Stop-Loss kann als Floating Stop eingestellt werden.
Erhöhung der Häufigkeit der Eröffnung von Positionen, wenn nur ein oder zwei Positionen in einer bestimmten Zeit erlaubt sind.
Ändern Sie die Festzahlung von 100 USD in einen Kapitalprozentsatz, z. B. 1%.
Optimierung von Parameterkombinationen, wie z. B. RSI-Perioden, Überkauf-Überverkaufszonen usw.
Erhöhung der Positionskontrolle ohne Erhöhung des Einzelhandelskapitals bei Erhöhung des Initial Capital.
Durch die Optimierung der oben genannten Punkte können die Risiken des Handels reduziert und die Stabilität und Zuverlässigkeit der Strategie verbessert werden.
Diese Strategie ist im Allgemeinen sehr einfach und direkt, durch die RSI-Indikator zu überkaufen und zu verkaufen, um kurzfristige Rückgewinn zu erzielen. Der Vorteil ist einfach und effizient, ohne Vorhersage, die Handelslogik ist klar, leicht zu erkennen und zu überprüfen. Es kann jedoch schwierig sein, die Trendsituation zu bewältigen, und es besteht ein gewisses Verlustrisiko.
/*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)