
Cette stratégie est basée sur l’indicateur de force relative (RSI) pour juger de la survente et de la survente. Elle vise à établir une position inversée lorsque le RSI atteint la zone de survente et de survente. La stratégie est simple et efficace.
La stratégie utilise uniquement l’indicateur RSI comme signal de prise de position. Faire plus lorsque le RSI est en dessous du bas fixé (défaut 20) et faire moins lorsque le RSI est au-dessus du haut fixé (défaut 80).
La logique centrale de la stratégie est la suivante:
On peut voir que la stratégie est très simple, mécanique, et qu’il n’y a pratiquement pas de place pour l’optimisation des paramètres. Elle utilise purement les caractéristiques mathématiques de l’indicateur RSI pour obtenir des bénéfices inverses en construisant des positions inverses dans les zones de survente et de survente.
Le plus grand avantage de cette stratégie est sa simplicité et son efficacité.
En outre, la stratégie a un ratio de stop-loss pour bloquer les bénéfices et contrôler les risques, ainsi qu’un mécanisme de suspension des transactions pour réduire la fréquence des transactions. Cela permet à la stratégie d’obtenir des bénéfices stables avec un risque minimal.
Les principaux risques liés à cette stratégie sont:
Il est impossible de tirer profit d’une tendance. Lorsque la tendance est très forte, le RSI peut être surchargé ou survendu pendant une longue période, avec peu de chances de revenir en arrière, et la stratégie sera difficile à tirer profit.
Un arrêt de perte trop élevé peut entraîner une expansion des pertes. Actuellement, le stop loss est de 3%, mais il peut être nécessaire de l’ajuster à 1 à 2%.
La fréquence des transactions est trop élevée pour continuer à créer des positions après avoir obtenu des bénéfices. La fréquence d’ouverture des positions doit être contrôlée de manière appropriée.
La fixation d’un capital fixe de 100 dollars pour chaque dépôt peut être un risque de concentration excessive qui doit être optimisé en pourcentage de capital.
Selon l’analyse ci-dessus, la stratégie peut être optimisée dans les domaines suivants:
Augmenter les indicateurs de jugement de tendance, tels que la MA, et suspendre la négociation lorsque la tendance est incertaine.
Optimiser le ratio de stop-loss, ce qui rend l’ajustement de stop-loss plus raisonnable à 1 à 2%, et le stop-loss peut être configuré comme un stop-loss flottant.
Augmentation de la limite de fréquence d’ouverture des positions, par exemple, une ou deux ouvertures d’une position sont autorisées dans un certain temps.
Modifiez 100 $ de fonds fixes en pourcentage de fonds, par exemple 1%.
Optimisation de la combinaison de paramètres tels que le cycle RSI, les zones de survente et de survente.
Augmentation du contrôle des positions, sans augmentation de capital de transaction lors de l’augmentation du capital initial.
L’optimisation des points ci-dessus peut réduire efficacement les risques de transaction et améliorer la stabilité et la fiabilité de la stratégie.
Cette stratégie est généralement très simple et directe, grâce à l’indicateur RSI pour juger les sur-achats et les sur-vente pour obtenir des bénéfices à court terme. L’avantage est simple et efficace, sans prévision, la logique de négociation est claire, facile à repérer et à vérifier.
/*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)