더블 지수 이동 평균 RSI 거래 전략


생성 날짜: 2024-01-30 15:44:11 마지막으로 수정됨: 2024-01-30 15:44:11
복사: 0 클릭수: 721
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 지수 이동 평균 RSI 거래 전략

개요

이 전략의 이름은 쌍 지수 이동 평균 RSI 거래 전략 . 이 전략은 쌍 지수 이동 평균 ((Double EMA) 과 상대적으로 강한 지수 ((RSI) 를 주요 거래 지표로 사용하여 기계화 거래를 수행한다.

전략 원칙

이 전략은 우선 가격의 이중 지수 이동 평균 ((MA) 를 계산하고, 그 다음 MA를 기반으로 RSI를 계산하고, 그 다음 RSI의 지수 이동 평균 ((Smooth) 을 계산한다. RSI가 이동 평균을 통과하면 구매 신호를 생성하고, RSI가 이동 평균을 통과하면 판매 신호를 생성한다. 옵션으로, 이 전략은 또한 최대 거래 수, 거래 자본 비율, 거래 기간, 스톱 스톱 스톱 및 수 추적 스톱 스톱 포인트 수와 같은 매개 변수를 설정합니다.

전략적 이점

  1. 이중 지수 이동 평균을 사용하여 가격 변화에 더 빨리 반응하여 일부 소음을 필터링 할 수 있습니다.
  2. 이동 평균을 기반으로 RSI를 계산하여 더 안정적이고 잘못된 거래를 방지합니다.
  3. RSI의 이동 평균은 거래 신호를 확인하고 가짜 브레이크를 필터링하는 데 도움이됩니다.
  4. 최대 거래 횟수를 설정하여 매일의 위험을 조절할 수 있습니다.
  5. 거래자금의 비율을 설정하여 단일 손실이 너무 크지 않도록하십시오.
  6. 거래 기간을 설정하고, 중요한 시간 노드를 피하고, 유동성 위험을 통제하십시오.
  7. 단편적 손실을 제한하는 데 도움이 되는 스톱로스 스톱포인트를 설정합니다.
  8. 스톱포인트를 추적하는 것은 파장을 차단하고 회수를 줄이는 데 도움이 됩니다.

전략적 위험

  1. 이중 지수 이동 평균은 시장의 갑작스러운 사건에 느리게 반응하여 단선 거래 기회를 놓칠 수 있습니다.
  2. RSI는 데드포크와 골드 크로스 등의 잘못된 신호를 형성할 수 있다. 다른 지표와 함께 신중하게 거래해야 한다.
  3. 고정 거래자금 비율은 시장의 변동에 대응할 수 없으며, 자금 사용률이 부족할 위험이 있습니다.
  4. 고정 손실 차단기는 다양한 품종과 시장 조건에 적응하기 어렵고, 조기 손실 또는 중단의 위험이 있습니다.
  5. 추적 중지 (trace stop) 는 지진 상황에서 너무 자주 작동될 수 있습니다.

대책:

  1. 이동 평균 주기를 적절히 단축하고 민감성을 높여라.
  2. 다른 지표와 결합하여 트래픽량 필터링 신호.
  3. 동적으로 조정된 거래자금 비율
  4. 시장의 변동성 및 변화에 따라 상쇄금액을 조정한다.
  5. 적당히 느슨한 추적 스톱포인트

전략 최적화 방향

  1. 서로 다른 길고 짧은 기간의 쌍 지수 이동 평균 조합을 테스트하여 최적의 변수를 찾습니다.
  2. RSI의 계산 주기 변수를 테스트하여 금/죽은 포크 신호의 신뢰성을 높인다.
  3. 거래량, 브린 밴드 등의 지표가 추가되어 신호소음을 필터링한다.
  4. 당일 종결 가격, 변동률 등의 동적으로 조정되는 거래자금 비율과 스톱로스 스톱 상승률.
  5. 다양한 품종 특성과 시장 환경 최적화에 따라 손실 추적 장치.

요약하다

이 전략의 전체적인 mechanic 규칙은 명확하고, 신뢰성이 높으며, 중·장선 트렌드 품종에 적용된다. 최적화되면 트렌드를 추적하는 기계적 거래 전략의 기초가 될 수 있으며, 위험은 통제할 수 있으며, 실장 효과를 추가로 평가할 가치가 있다.

전략 소스 코드
/*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)