
Chiến lược này là một hệ thống giao dịch toàn diện dựa trên Chỉ số sức mạnh tương đối (RSI), Đường trung bình động (MA) và động lượng giá. Chiến lược này chủ yếu xác định các cơ hội giao dịch tiềm năng bằng cách theo dõi những thay đổi về xu hướng RSI, đường trung bình động giao nhau của nhiều khoảng thời gian và những thay đổi về động lượng giá. Chiến lược này đặc biệt chú ý đến xu hướng tăng của RSI và xu hướng tăng liên tục của giá, đồng thời cải thiện độ chính xác của giao dịch thông qua nhiều lần xác nhận.
Logic cốt lõi của chiến lược này dựa trên các thành phần chính sau:
Chiến lược này xây dựng một hệ thống giao dịch tương đối hoàn chỉnh bằng cách sử dụng toàn diện các chỉ báo phân tích kỹ thuật và phương pháp phân tích động lượng. Ưu điểm của chiến lược này nằm ở cơ chế xác nhận nhiều lần và kiểm soát rủi ro hoàn hảo, nhưng vẫn cần chú ý đến khả năng thích ứng với môi trường thị trường và các vấn đề tối ưu hóa tham số. Với việc liên tục tối ưu hóa và cải tiến, chiến lược này có tiềm năng trở thành một hệ thống giao dịch mạnh mẽ.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Improved Strategy with RSI Trending Upwards", overlay=true)
// Inputs for moving averages
ma21_length = input.int(21, title="21-day MA Length")
ma55_length = input.int(55, title="55-day MA Length")
ma144_length = input.int(144, title="144-day MA Length")
// Moving averages
ma21 = ta.sma(close, ma21_length)
ma55 = ta.sma(close, ma55_length)
ma144 = ta.sma(close, ma144_length)
// RSI settings
rsi_length = input.int(13, title="RSI Length")
rsi_avg_length = input.int(13, title="RSI Average Length")
rsi = ta.rsi(close, rsi_length)
rsi_avg = ta.sma(rsi, rsi_avg_length)
// RSI breakout condition
rsi_breakout = ta.crossover(rsi, rsi_avg)
// RSI trending upwards
rsi_trending_up = rsi > rsi[1] and rsi[1] > rsi[2]
// Higher high condition
hh1 = high[2] > high[3] // 1st higher high
hh2 = high[1] > high[2] // 2nd higher high
hh3 = high > high[1] // 3rd higher high
higher_high_condition = hh1 and hh2 and hh3
// Filter for trades starting after 1st January 2007
date_filter = (year >= 2007 and month >= 1 and dayofmonth >= 1)
// Combine conditions for buying
buy_condition = rsi > rsi_avg and higher_high_condition and rsi_trending_up //and close > ma21 and ma21 > ma55
// buy_condition = rsi > rsi_avg and rsi_trending_up
// Sell condition
// Sell condition: Close below 21-day MA for 3 consecutive days
downtrend_condition = close < close[1] and close[1] < close[2] and close[2] < close[3] and close[3] < close[4] and close[4] < close[5]
// downtrend_condition = close < close[1] and close[1] < close[2] and close[2] < close[3]
sell_condition_ma21 = close < ma55 and close[1] < ma55 and close[2] < ma55 and close[3] < ma55 and close[4] < ma55 and downtrend_condition
// Final sell condition
sell_condition = ta.crossunder(close, ma55) or (ta.crossunder(rsi, rsi_avg) and ta.crossunder(close, ma55))
// Execute trades
if (buy_condition and date_filter)
// strategy.entry("Long", strategy.long, comment="Buy")
strategy.entry("Long", strategy.long, qty=strategy.equity * 0.1 / close)
if (sell_condition and date_filter)
strategy.close("Long", comment="Sell")
// Plot moving averages
plot(ma55, color=color.red, title="55-day MA")
plot(ma144, color=color.blue, title="144-day MA")