리소스 로딩... 로딩...

전략에 따라 상대적 강도 지표의 변화 추세

저자:차오장, 날짜: 2024-03-29 16:16:37
태그:

img

전반적인 설명

이 전략은 수정 상대적 강도 지표 (Modified RSI) 를 기반으로 시장 추세를 포착합니다. 전략의 주요 아이디어는 변경된 RSI 지표의 크로스오버 신호와 히스토그램 신호를 사용하여 시장 추세를 결정하고 트렌드 방향에 따라 거래를하는 것입니다.

전략 원칙

  1. 변경된 RSI의 입력값으로 가격의 EMA를 계산합니다.
  2. 수정된 RSI 지표를 계산합니다.
  3. 신호선으로 수정된 RSI의 EMA를 계산합니다.
  4. 히스토그램으로 수정된 RSI와 신호 선 사이의 차이를 계산
  5. 수정된 RSI가 신호선을 넘고 히스토그램이 0보다 크면 구매 신호를 생성합니다.
  6. 수정된 RSI가 신호선 아래를 넘어가 히스토그램이 0보다 작을 때 판매 신호를 생성합니다.

전략적 장점

  1. 수정된 RSI 지표는 전통적인 RSI 지표에 비해 트렌드를 더 잘 파악할 수 있습니다.
  2. 교차 신호와 수정된 RSI의 히스토그램 신호를 결합하면 잘못된 신호를 효과적으로 필터링 할 수 있습니다.
  3. 매개 변수는 조정 가능하며 다른 시장과 시간대에 적용됩니다.
  4. 이 프로그램은 간결하고 계산 효율적입니다.

전략 위험

  1. 수정된 RSI 지표는 범위 제한 시장에서 잘못된 신호를 생성하는 경향이 있습니다.
  2. 트렌드 전환점 포착에는 지연이 있을 수 있습니다.
  3. 단일 지표는 가격 소음으로 쉽게 영향을 받는다

전략 최적화 방향

  1. 신호 신뢰성을 향상시키기 위해 이동 평균과 같은 다른 경향 지표와 결합 할 수 있습니다.
  2. 단일 거래 위험을 제어하기 위해 스톱 로스 및 영리 모듈을 추가할 수 있습니다.
  3. 매개 변수는 다른 시장 특성에 따라 최적화 될 수 있습니다.
  4. 위치 관리 모듈을 추가하여 위치를 동적으로 조정할 수 있습니다.

요약

이 전략은 트렌드를 따르는 관점에서 거래 시스템을 구축하기 위해 수정된 RSI 지표의 특성을 활용합니다. 수정된 RSI 지표는 전통적인 RSI 지표의 일부 결함을 극복하고 상대적으로 강한 트렌드 캡처 능력을 가지고 있습니다. 그러나 단일 지표에 기반한 전략은 종종 한계가 있으며 다른 기술적 수단과 함께 개선되어야합니다. 전략 매개 변수를 최적화하고 신호 소스를 풍부하게하고 위험 제어 모듈을 추가하여 이 전략의 안정성과 수익성을 더욱 향상시킬 수 있습니다.


/*backtest
start: 2023-03-23 00:00:00
end: 2024-03-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © YogirajDange

//@version=5


// Verical lines


// // Define the times
// t1 = timestamp(year, month, dayofmonth, 09, 15) // 9:15
// t2 = timestamp(year, month, dayofmonth, 11, 15) // 11:15
// t3 = timestamp(year, month, dayofmonth, 13, 15) // 1:15
// t4 = timestamp(year, month, dayofmonth, 15, 25) // 3:25

// // Check if the current bar is on the current day
// is_today = (year(time) == year(timenow)) and (month(time) == month(timenow)) and (dayofmonth(time) == dayofmonth(timenow))

// // Draw a vertical line at each time
// if is_today and (time == t1 or time == t2 or time == t3 or time == t4)
//     line.new(x1 = bar_index, y1 = low, x2 = bar_index, y2 = high, extend = extend.both, color=color.red, width = 1)

strategy('Modified RSI')
col_grow_above = input(#02ac11, "Above   Grow", group="Histogram", inline="Above")
col_fall_above = input(#6ee47d, "Fall", group="Histogram", inline="Above")
col_grow_below = input(#e5939b, "Below Grow", group="Histogram", inline="Below")
col_fall_below = input(#dd0000, "Fall", group="Histogram", inline="Below")
EMA_length = input.int(13, 'Price_EMA', minval=1)
RSI_length = input.int(14, 'RSI_Period', minval=1)
Avg_length = input.int(5, 'RSI_Avg_EMA', minval=1)
fastMA = ta.ema(close, EMA_length)
modrsi = ta.rsi(fastMA, RSI_length)
RSIAVG = ta.ema(modrsi, Avg_length)
plot(modrsi, color=color.rgb(38, 0, 255), linewidth=2)
plot(RSIAVG, color=color.rgb(247, 0, 0))
rsiUpperBand = hline(60, 'RSI Upper Band', color=#099b0e)
//hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(40, 'RSI Lower Band', color=#e90101)

RSI_hist = modrsi - RSIAVG

//plot(RSI_hist,"RSI_Histogram", color = #c201e9, style = plot.style_columns,linewidth= 5)

plot(RSI_hist, title="RSI_Histogram", style=plot.style_columns, color=(RSI_hist>=0 ? (RSI_hist[1] < RSI_hist ? col_grow_above : col_fall_above) : (RSI_hist[1] < RSI_hist ? col_grow_below : col_fall_below)))


/////// Moving Averages 20 50 EMA

fast_ma = input.int(20, minval=2, title="Fast_EMA")
slow_ma = input.int(50, minval=2, title="Slow_EMA")

src = input.source(close, title="Source")

out = ta.ema(src, fast_ma)
out1 = ta.ema(src, slow_ma)

//plot(out, title="20 EMA", color=color.rgb(117, 71, 247), linewidth = 2)
//plot(out1, title="50 EMA", color=color.rgb(0, 0, 0), linewidth = 2)


longCondition = ((ta.crossover(modrsi, RSIAVG)) and (RSI_hist > 0))
if longCondition
    strategy.entry('B', strategy.long)

shortCondition = ((ta.crossunder(modrsi, RSIAVG)) and (RSI_hist < 0))
if shortCondition
    strategy.entry('S', strategy.short)



더 많은