이중 이동 평균 크로스오버와 RSI 지표 양적 거래 전략

저자:차오장, 날짜: 2023-11-21 12:09:50
태그:

img

전반적인 설명

이 전략은 트렌드 방향과 과잉 구매 / 과잉 판매 상황을 식별하기 위해 이중 이동 평균 크로스오버와 RSI 지표를 결합합니다. 구매 조건이 충족되면 장기간에 걸쳐서 판매 조건이 발생하면 포지션을 닫습니다. 목표는 트렌드 방향을 결정하기 위해 이동 평균 크로스오버를 사용하여 RSI 지표를 사용하여 정상에서 잘못 구매하고 바닥에서 판매하는 것을 피하여 더 나은 이익을 창출하는 것입니다.

전략 논리

급속한 9주기 이동 평균이 느린 50주기 이동 평균을 넘을 때, 그것은 짧은 시간 프레임에서 상향 트렌드와 더 긴 시간 프레임에서 상향 트렌드를 신호합니다. 이는 전형적인 상승 신호입니다. 한편, RSI가 이전 기간보다 5 포인트 더 크고 70 미만인 경우 자산이 접근하고 있지만 아직 과잉 매입 영역에 있지 않다는 것을 의미합니다.

빠른 9주기 이동 평균이 느린 50주기 이동 평균을 넘으면 하락 시장의 시작을 알리고 기존의 긴 포지션은 종료되어야 합니다.

이점 분석

  • 이중 이동 평균은 전체 시장 방향을 결정하고 잘못된 파장을 피하는 데 도움이됩니다.
  • RSI 지표는 전환점에 잘못된 움직임을 방지합니다.
  • 이동 평균 기간을 다른 기호와 시간 틀에 맞게 조정할 수 있는 유연성
  • 제어 가능한 스톱 로스 전략

위험 분석

  • 크로스오버 신호가 지연되어 손실이 발생할 수 있습니다.
  • 부적절한 RSI 매개 변수 설정은 최고의 입력 시기를 놓칠 수 있습니다.
  • 거래량을 관찰해야 가격 움직임을 지원하는지 확인합니다
  • 블랙 스완 사건은 수동 개입이 필요합니다.

최적화 방향

  • 최고의 결과를 위해 RSI 매개 변수를 최적화
  • 잘못된 신호를 피하기 위해 거래량을 포함합니다.
  • 기호와 시간 프레임에 기초한 최적의 이동 평균 기간을 테스트
  • 일찍 중단되는 것을 피하기 위해 손해를 멈추는 것을 느슨하게

요약

이 전략은 방향과 RSI를 결정하기 위해 이중 이동 평균 크로스오버를 활용하여 상위와 하위 추격을 피합니다. 안정적인 수익을 위해 중장기 트렌드를 효과적으로 탈 수 있습니다. 그러나 크로스오버 신호의 후진 성격과 RSI 매개 변수 조정에 주의해야합니다. 또한 가격과 볼륨을 상관해야합니다. 지속적인 테스트와 최적화로이 전략은 더 나은 결과를 얻을 수 있습니다.


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 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/
// © joshuajcoop01

//@version=5
strategy("Bitpanda Coinrule Template",
         overlay=true,
         initial_capital=1000,
         process_orders_on_close=true,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=30,
         commission_type=strategy.commission.percent,
         commission_value=0.1)

showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2020, 1, 1, 0, 0)
notInTrade = strategy.position_size <= 0


// RSI
length = input(14)
vrsi = ta.rsi(close, length)

// Moving  Averages for Buy Condition
buyFastEMA = ta.ema(close, 9)
buySlowEMA = ta.ema(close, 50)
buyCondition1 = ta.crossover(buyFastEMA, buySlowEMA)


increase = 5
if ((vrsi > vrsi[1]+increase) and buyCondition1 and vrsi < 70 and timePeriod)
    strategy.entry("Long", strategy.long)


// Moving  Averages for Sell Condition
sellFastEMA = ta.ema(close, 9)
sellSlowEMA = ta.ema(close, 50)
plot(request.security(syminfo.tickerid, "60", sellFastEMA), color = color.blue)
plot(request.security(syminfo.tickerid, "60", sellSlowEMA), color = color.green)


condition = ta.crossover(sellSlowEMA, sellFastEMA)
//sellCondition1 = request.security(syminfo.tickerid, "60", condition)

strategy.close('Long', when = condition and timePeriod)





더 많은