
이 전략은 상대 강도 지수(RSI), 이동 평균(MA), 가격 모멘텀을 기반으로 한 포괄적인 거래 시스템입니다. 이 전략은 주로 RSI 추세 변화, 여러 기간의 이동 평균 교차, 가격 모멘텀의 변화를 모니터링하여 잠재적인 거래 기회를 파악합니다. 이 전략은 RSI의 상승 추세와 가격의 지속적인 상승 추세에 특히 주의를 기울이고, 여러 번의 확인을 통해 거래의 정확도를 높입니다.
전략의 핵심 논리는 다음과 같은 핵심 구성 요소를 기반으로 합니다.
이 전략은 기술적 분석 지표와 모멘텀 분석 방법을 종합적으로 활용해 비교적 완전한 거래 시스템을 구축합니다. 이 전략의 장점은 다중 확인 메커니즘과 완벽한 위험 관리에 있지만, 시장 환경에 대한 적응성과 매개변수 최적화 문제에도 여전히 주의해야 합니다. 지속적인 최적화와 개선을 통해 이 전략은 강력한 거래 시스템이 될 수 있는 잠재력을 갖추고 있습니다.
/*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")