다중 지표 추세 추종 전략

MACD MA RSI ATR
생성 날짜: 2024-04-28 14:25:12 마지막으로 수정됨: 2024-04-28 14:25:12
복사: 0 클릭수: 598
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 지표 추세 추종 전략

개요

이 전략은 Jancok Strategycs v3라고 불리며, 이동 평균 (MA), 이동 평균 수렴 스캐들 (MACD), 상대적으로 강한 지표 (RSI) 및 평균 실제 범위 (ATR) 를 기반으로 한 다중 지표 트렌드 추적 전략입니다. 이 전략의 주요 아이디어는 여러 지표의 조합을 사용하여 시장 추세를 판단하고 트렌드 방향으로 거래하는 것입니다.

전략 원칙

이 전략은 다음의 네 가지 지표를 사용하여 시장의 흐름을 판단합니다.

  1. 이동 평균 ((MA): 단기 ((9주기) 와 장기 ((21주기) 의 이동 평균을 계산하여, 단기 평균선 위에 장기 평균선 을 뚫을 때 상승 경향을 나타냅니다. 단기 평균선 아래에 장기 평균선 을 뚫을 때 하향 경향을 나타냅니다.
  2. 이동 평균의 수렴 분산도 ((MACD): MACD 선과 신호선을 계산하여 MACD 선 위에 신호선을 통과하면 상승세를 나타냅니다. MACD 선 아래 신호선을 통과하면 하락세를 나타냅니다.
  3. 상대적으로 약한 지표 ((RSI): RSI를 계산하는 14주기, RSI가 70보다 크면 시장이 과매매 할 수 있음을 나타냅니다. RSI가 30보다 작으면 시장이 과매매 할 수 있음을 나타냅니다.
  4. 평균 실제 범위 ((ATR): 시장의 변동성을 측정하고 스톱 로즈 스톱포인트를 설정하기 위해 14주기의 ATR을 계산한다.

이 전략의 거래 논리는 다음과 같습니다.

  • 단기 평균선에서 장기 평균선, MACD 선에서 신호선, 거래량이 이동 평균선보다 많고, 변동률이 마이너스보다 낮을 때 더 많은 상품을 엽니다.
  • 단기 평균선 아래에서 장기 평균선과 MACD 선 아래에서 신호선을 뚫고 거래량이 이동 평균선보다 많고 변동률이 마이너스보다 낮을 때 공백을 엽니다.
  • 스톱피스 및 스톱포인트는 ATR의 동적 설정에 따라 스톱포인트는 ATR의 2배이고 스톱포인트는 ATR의 4배이다.
  • ATR 기반의 트래킹 스톱로스를 사용할 수 있으며, 트래킹 스톱로스는 ATR의 2.5배이다.

전략적 이점

  1. 트렌드 판단의 정확성을 높이기 위해 다중 지표 조합을 사용한다.
  2. 동적 중지 및 정지, 시장의 변동성에 따라 적응하여 위험을 더 잘 제어하고 수익을 최적화하십시오.
  3. 거래량과 변동률 필터를 도입하여 낮은 유동성 및 높은 변동성의 시간에 거래하는 것을 피하고 가짜 신호를 줄입니다.
  4. 트렌드가 지속될 때 더 많은 수익을 유지하기 위해 스톱로스를 추적할 수 있습니다.

전략적 위험

  1. 위기시장이나 트렌드 전환 시, 잘못된 신호가 발생하여 손실이 발생할 수 있다.
  2. 매개 변수 설정은 전략 성능에 큰 영향을 미치며, 다른 시장과 자산에 따라 최적화가 필요합니다.
  3. 과도한 최적화 파라미터는 실제 거래에서 좋지 않은 성능을 낼 수 있습니다.
  4. 시장의 불규칙한 변동이나 블랙 스 사건이 발생하면, 전략은 큰 손실을 입을 수 있다.

전략 최적화 방향

  1. 더 많은 지표들, 예를 들어, 브린 밴드, 무작위 지표들, 등이 도입되어 추세 판단의 정확성을 더욱 높일 수 있습니다.
  2. 최적화된 변수 선택, 예를 들어 유전 알고리즘, 그리드 검색과 같은 방법을 사용하여 최적의 변수 조합을 찾는다.
  3. 다른 시장과 자산에 대해 다른 매개 변수와 규칙을 설정하여 전략의 적응성을 향상시킵니다.
  4. 포지션 관리에 참여하여, 시장 추세의 강도와 계정 리스크에 따라 포지션 크기를 동적으로 조정합니다.
  5. 최대 인출 제한을 설정하고, 계좌가 최대 인출에 도달했을 때 거래를 중지하거나 포지션을 줄여서 위험을 제어한다.

요약하다

“Jancok Strategycs v3”은 다중 지표 조합을 기반으로 한 트렌드 추적 전략으로, 이동 평균, MACD, RSI 및 ATR과 같은 지표를 통해 시장 추세를 판단하고, 동적 스톱 손실 및 추적 스톱 손실과 같은 위험 관리 수단을 사용하여 위험을 제어하고 수익을 최적화한다. 이 전략의 장점은 트렌드 판단 정확도가 높고, 위험 관리는 유연하고 적응력이 강하다. 그러나 가짜 신호, 파라미터 설정 민감성 및 블랙 스윙 사건과 같은 특정 위험도 존재한다.

전략 소스 코드
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © financialAccou42381

//@version=5
strategy("Jancok Strategycs v3", overlay=true, initial_capital=100, currency="USD")

// Inputs
short_ma_length = input.int(9, title="Short MA Length", minval=1)
long_ma_length = input.int(21, title="Long MA Length", minval=1)
atr_multiplier_for_sl = input.float(2, title="ATR Multiplier for Stop Loss", minval=1.0)
atr_multiplier_for_tp = input.float(4, title="ATR Multiplier for Take Profit", minval=1.0)
volume_ma_length = input.int(20, title="Volume MA Length", minval=1)
volatility_threshold = input.float(1.5, title="Volatility Threshold", minval=0.1, step=0.1)
use_trailing_stop = input.bool(false, title="Use Trailing Stop")
trailing_stop_atr_multiplier = input.float(2.5, title="Trailing Stop ATR Multiplier", minval=1.0)

// Calculating indicators
short_ma = ta.sma(close, short_ma_length)
long_ma = ta.sma(close, long_ma_length)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
atr = ta.atr(14)
volume_ma = ta.sma(volume, volume_ma_length)
volatility = atr / close

// Plotting indicators
plot(short_ma, color=color.red)
plot(long_ma, color=color.blue)

// Defining entry conditions with added indicators and filters
long_condition = ta.crossover(short_ma, long_ma) and (macdLine > signalLine) and (volume > volume_ma) and (volatility < volatility_threshold)
short_condition = ta.crossunder(short_ma, long_ma) and (macdLine < signalLine) and (volume > volume_ma) and (volatility < volatility_threshold)

// Entering trades with dynamic stop loss and take profit based on ATR
if (long_condition)
    strategy.entry("Long", strategy.long)
    if use_trailing_stop
        strategy.exit("Exit Long", "Long", trail_points=atr * trailing_stop_atr_multiplier, trail_offset=atr * 0.5)
    else
        strategy.exit("Exit Long", "Long", loss=atr * atr_multiplier_for_sl, profit=atr * atr_multiplier_for_tp)

if (short_condition)
    strategy.entry("Short", strategy.short)
    if use_trailing_stop
        strategy.exit("Exit Short", "Short", trail_points=atr * trailing_stop_atr_multiplier, trail_offset=atr * 0.5)
    else
        strategy.exit("Exit Short", "Short", loss=atr * atr_multiplier_for_sl, profit=atr * atr_multiplier_for_tp)