이중 기하급수적 이동 평균 RSI 거래 전략

저자:차오장, 날짜: 2024-01-30 15:44:11
태그:

img

전반적인 설명

이 전략은 Double Exponential Moving Average RSI Trading Strategy라고 불립니다. 이 전략은 자동화 거래를 구현하기 위해 두 번째 EMA와 상대적 강도 지표 (RSI) 를 주요 거래 지표로 사용합니다.

전략 원칙

이 전략은 먼저 가격의 이중 기하급수적 이동 평균 (MA) 을 계산하고, 그 다음 MA를 기반으로 RSI를 계산하고, 더 나아가 RSI의 기하급수적 이동 평균 (Smooth) 을 계산합니다. RSI가 이동 평균을 넘어서면 구매 신호를 생성하고, RSI가 이동 평균을 넘어서면 판매 신호를 생성합니다. 선택적으로, 전략은 또한 하루 최대 거래 수, 주식 비율로 거래 크기, 거래 시간 세션, 수익을 취하고 포인트에서 손실을 멈추고, 위험 통제를 위해 포인트에서 후속 중지.

전략 강점

  1. 이중 EMA는 가격 변화에 더 빠르게 반응하고 소음을 필터링합니다.
  2. MA를 기반으로 RSI를 계산하면 더 안정적이며 잘못된 거래를 피합니다.
  3. RSI의 이동 평균은 거래 신호를 확인하고 잘못된 브레이크오프를 피하는 데 도움이 됩니다.
  4. 하루 최대 거래 수를 설정하면 매일의 위험을 조절할 수 있습니다.
  5. 트레이드 크기를 자본의 비율로 설정하면 단일 트레이드 손실이 너무 커집니다.
  6. 거래 시간 세션을 설정하면 주요 시간 노드를 피하고 유동성 위험을 제어합니다.
  7. 점으로 수익을 취하고 손실을 멈추는 것은 단일 무역 P&L를 제한하는 데 도움이됩니다.
  8. 지점에서 멈추는 것은 부동 수익을 고정시키고 인출을 줄이는 데 도움이 됩니다.

전략 위험

  1. 이중 EMA는 시장 이벤트에 더 느리게 반응하며 단기 거래 기회를 놓칩니다.
  2. RSI는 거짓 사망/황금 십자 신호를 형성하는 경향이 있습니다. 신중한 거래를 위해 다른 지표와 확인해야합니다.
  3. 자본의 일정한 비율은 시장의 변동성에 적응할 수 없으며, 자금의 사용량이 충분하지 않을 위험이 있습니다.
  4. 고정된 스톱 로스/이익 목표가 다른 제품과 시장 조건에 적응하지 못해 조기 종료 위험이 있습니다.
  5. 트레일링 스톱은 불안한 시장에서 너무 자주 발생합니다.

대책:

  1. 감수성을 향상시키기 위해 MA 기간을 단축하십시오.
  2. 부피와 같은 다른 지표를 추가하여 신호를 필터합니다.
  3. 동적으로 거래 크기를 조정합니다.
  4. 시장 변동성에 따라 스톱 로스/이익 목표를 조정합니다.
  5. 후속 스톱 로스 포인트를 적절히 풀어

최적화 방향

  1. 최적의 매개 변수를 찾기 위해 다양한 단기/장기 이중 EMA 조합을 테스트합니다.
  2. RSI 계산 기간 매개 변수를 테스트하여 사망/황금 십자 신호의 신뢰성을 향상시킵니다.
  3. 부피, 볼링거 밴드 같은 지표를 추가하여 신호 소음을 필터합니다.
  4. 다이내믹하게 거래 크기와 매일 폐쇄 가격, 변동성 등에 기초한 스톱 로스/이익 목표를 조정합니다.
  5. 다른 제품과 시장 환경에 대한 후속 정지 메커니즘을 최적화합니다.

요약

전략은 명확한 기계적 규칙과 전반적으로 높은 신뢰성을 가지고 있으며, 중장기 트렌딩 제품에 적합합니다. 최적화되면 제어 가능한 위험을 가진 기계적 전략을 따르는 기본 트렌드가 될 수 있습니다. 라이브 성능에 대한 추가 평가가 가치가 있습니다.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='[STRATEGY][RS]DemaRSI V0', shorttitle='D', overlay=false, initial_capital=100000, currency=currency.USD)
src = input(close)
ma_length = input(21)
rsi_length = input(4)
rsi_smooth = input(4)

ma = ema(ema(src, ma_length), ma_length)
marsi = rsi(ma, rsi_length)
smooth = ema(marsi, rsi_smooth)
plot(title='M', series=marsi, color=black)
plot(title='S', series=smooth, color=red)
hline(0)
hline(50)
hline(100)

max_order_per_day = input(6)
// strategy.risk.max_intraday_filled_orders(max_order_per_day)
trade_size_as_equity_factor = input(false)
trade_size = input(type=float, defval=10000.00) * (trade_size_as_equity_factor ? strategy.equity : 1)
take_profit_in_points = input(100000)
stop_loss_in_points = input(100000)
trail_in_points = input(150)

USE_SESSION = input(true)
trade_session = input(title='Trade Session:', defval='0400-1500', confirm=false)
istradingsession = not USE_SESSION ? true : not na(time('1', trade_session))

buy_entry = istradingsession and crossover(marsi, smooth)
sel_entry = istradingsession and crossunder(marsi, smooth)

strategy.entry('buy', long=true, qty=1, when=buy_entry)
strategy.entry('sel', long=false, qty=1, when=sel_entry)

strategy.exit('buy.Exit', from_entry='buy', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.exit('sel.Exit', from_entry='sel', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.close_all(when=not istradingsession)

더 많은