이중 이동 평균 교차와 RSI 지표를 결합한 양적 거래 전략


생성 날짜: 2023-11-21 12:09:50 마지막으로 수정됨: 2023-11-21 12:09:50
복사: 0 클릭수: 669
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이중 이동 평균 교차와 RSI 지표를 결합한 양적 거래 전략

개요

이 전략은 양평선 교차와 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)