
Chiến lược này là một chiến lược giảm giá động dựa trên chỉ số tương đối mạnh (RSI) để nắm bắt xu hướng thị trường bằng cách thiết lập các điều kiện mở và giảm giá động. Chiến lược này tạo ra tín hiệu giao dịch khi chỉ số RSI vượt quá mức mua quá mức bán, đồng thời giới thiệu cơ chế giảm giá động độc đáo để tối ưu hóa hoạt động giao dịch bằng cách thiết lập các điều kiện giảm giá ở các mức RSI khác nhau.
Logic cốt lõi của chiến lược bao gồm các thành phần chính sau:
Đây là một chiến lược giao dịch động lực được thiết kế hợp lý để nắm bắt cơ hội thị trường thông qua chỉ số RSI và cơ chế cân bằng động. Các đặc điểm chính của chiến lược là mức độ hệ thống hóa cao, kiểm soát rủi ro hoàn hảo và khả năng thích ứng. Mặc dù có một số rủi ro vốn có, chiến lược vẫn có nhiều chỗ cải thiện thông qua tối ưu hóa tham số và mở rộng chức năng.
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("RSI Strategy with Close Levels", shorttitle="RSI Strat", overlay=true)
// RSI Input settings
rsiLength = input.int(14, title="RSI Length")
rsiOverbought = input.int(70, title="RSI Overbought Level")
rsiOversold = input.int(30, title="RSI Oversold Level")
rsiCloseLongLevel = input.int(60, title="RSI Level to Close Long Position")
rsiCloseShortLevel = input.int(40, title="RSI Level to Close Short Position")
// Calculate RSI
rsi = ta.rsi(close, rsiLength)
// Generate buy and sell signals based on RSI levels
buySignal = ta.crossover(rsi, rsiOversold)
sellSignal = ta.crossunder(rsi, rsiOverbought)
// Check if there are open positions
var bool inPosition = na
if (strategy.opentrades > 0)
inPosition := true
else
inPosition := false
// Open long position on buy signal if not already in a position
if (buySignal and not inPosition)
strategy.entry("Buy", strategy.long)
inPosition := true
// Close long position on sell signal or when RSI reaches the close long level
if (inPosition and strategy.position_size > 0 and (sellSignal or rsi >= rsiCloseLongLevel))
strategy.close("Buy")
inPosition := false
// Open short position on sell signal if not already in a position
if (sellSignal and not inPosition)
strategy.entry("Sell", strategy.short)
inPosition := true
// Close short position on buy signal or when RSI reaches the close short level
if (inPosition and strategy.position_size < 0 and (buySignal or rsi <= rsiCloseShortLevel))
strategy.close("Sell")
inPosition := false
// Plot buy and sell signals
//plotshape(series=buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
//plotshape(series=sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Plot RSI for visualization
hline(rsiOverbought, "RSI Overbought", color=color.red)
hline(rsiOversold, "RSI Oversold", color=color.green)
hline(rsiCloseLongLevel, "RSI Close Long Level", color=color.blue)
hline(rsiCloseShortLevel, "RSI Close Short Level", color=color.purple)
plot(rsi, title="RSI", color=color.orange)