GM-8 & ADX 이중 이동 평균 전략

ADX EMA
생성 날짜: 2024-04-30 15:50:57 마지막으로 수정됨: 2024-04-30 15:50:57
복사: 8 클릭수: 576
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

GM-8 & ADX 이중 이동 평균 전략

개요

GM-8 & ADX 쌍평선 전략은 여러 기술 지표들을 결합한 수치 거래 전략이다. 이 전략은 GM-8 지표, ADX 지표와 두 번째 EMA 지표를 사용하여 잠재적인 매수 신호를 식별한다. GM-8 지표는 가격 경향을 판단하는데, ADX 지표는 트렌드 강도를 확인하는데, 두 번째 EMA 지표는 트렌드 방향을 판단하는데 도움을 준다. GM-8 평균을 깨고 ADX 지표가 경량보다 높을 때 매수 신호를 생성한다. 이 전략의 장점은 여러 지표를 결합하여 신호의 신뢰성을 높이는 데 있다.

전략 원칙

GM-8 & ADX 쌍평선 전략의 원리는 다음과 같다:

  1. 가격 트렌드를 판단하기 위해 GM-8 지수를 계산한다. GM-8 평균선을 상단/아래로 통과하면 트렌드가 역전될 수 있음을 나타냅니다.
  2. 추세 강도를 확인하기 위해 ADX 지표를 계산한다. ADX 지표가 34와 같은 기한보다 높을 때, 현재 추세가 강하다는 것을 나타내는 경우, 입시를 고려할 수 있다.
  3. 두 번째 EMA 지표를 계산하여 트렌드 방향을 결정하는 데 도움을줍니다. 가격이 두 번째 EMA 위에있을 때, 더 많은 것을 할 경향이 있습니다. 반대로 빈 것을 할 경향이 있습니다.
  4. GM-8과 ADX, 그리고 두 번째 EMA를 종합적으로 고려하면, 구매/판매 신호가 발생한다:
    • 다중 신호: 현재 종결 가격에 GM-8 평균선을 뚫고 GM-8과 2번째 EMA보다 높으며, ADX는 경량보다 높다.
    • 공백 신호: 현재 폐쇄 가격 아래 GM-8 평균선을 뚫고 GM-8과 두 번째 EMA보다 낮고, ADX는 경량보다 높다.
  5. 출전 시, 출전 전까지의 신호가 나타납니다:
    • 핑도 신호: 현재 종전 가격 아래 GM-8의 평균선을 통과하고 GM-8보다 낮다.
    • 평평한 신호: 현재 종결 가격에 GM-8의 평균선을 통과하고 GM-8보다 높다.

전략적 이점

  1. 여러 지표와 결합하여 신호 신뢰도를 높여줍니다. 이 전략은 트렌드 지표 (GM-8), 트렌드 강도 지표 (ADX) 및 트렌드 방향 지표 (EMA) 를 통합하여 일부 가짜 신호를 효과적으로 필터링 할 수 있습니다.
  2. 매개 변수 조정 가능, 유연성 높다: 이 전략의 매개 변수들은 GM-8 주기, ADX 주기, ADX 하락, 제2의 EMA 주기 등과 같이 시장 특성과 개인 선호에 따라 조정될 수 있으며, 서로 다른 거래 스타일에 적합하다.
  3. 논리적으로 명확하고 실행하기 쉽다: 이 전략의 거래 논리는 비교적 간단하고 이해하기 쉽고 실행하기 쉽다.

전략적 위험

  1. 트렌드 인식 지연: GM-8과 같은 트렌드 클래스 지표는 본질적으로 지연 지표이며, 트렌드 인식 지연이 발생할 수 있으며, 이는 최적의 진입 시간을 놓치거나 손실을 증가시킬 수 있습니다.
  2. 빈번한 거래: 이 전략은 상대적으로 많은 매매 신호를 가지고 있으며, 빈번한 거래로 이어져 수수료 비용이 증가하고, 불안정한 시장에서 좋지 않은 성과를 낼 수 있다.
  3. 매개 변수 선택의 난이도: 이 전략은 여러 매개 변수를 포함하고, 최적의 매개 변수 조합을 찾는 것은 많은 회수 및 분석 작업이 필요하며, 초보자에게는 다소 어려움이 있다.

전략 최적화 방향

  1. 더 많은 필터링 조건을 도입: GM-8, ADX 및 EMA 외에도, 교차량, 변동률 등과 같은 다른 보조 지표를 추가하여 신호 품질을 더욱 향상시킬 수 있습니다.
  2. 진입 및 출퇴근 시기를 최적화: 단계적 포지션 구축 및 단계적 중지 손실과 같은 방법을 도입하여 단일 거래 위험을 줄이고 전체 수익성을 향상시킬 수 있습니다.
  3. 동적 조정 파라미터: 시장 상태의 변화에 따라 동적으로 조정하는 전략 파라미터, 예를 들어 트렌드형 시장에서 더 긴 GM-8 주기를 사용하거나, 흔들리는 시장에서 더 짧은 GM-8 주기를 사용한다.
  4. 포지션 관리에 참여: 계좌 자금 상태, 위험 선호 등에 따라 거래 당 포지션 크기를 제어하여 과도한 위험 집중을 피하십시오.

요약하다

GM-8 & ADX 쌍평선 전략은 여러 기술 지표를 결합하여 매매 신호를 식별하는 고전적인 정량화 거래 전략이다. 이 전략의 장점은 논리적으로 간단하고 명확하며, 신호는 상대적으로 신뢰할 수 있으며, 초보자 학습에 적합하다. 그러나 동시에 트렌드 식별 지연, 빈번한 거래, 파라미터 선택의 어려움 등의 위험도 존재한다. 전략의 성능을 더욱 향상시키기 위해, 더 많은 필터링 조건을 도입하는 것을 고려할 수 있다.

전략 소스 코드
/*backtest
start: 2023-04-24 00:00:00
end: 2024-04-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("GM-8 and ADX Strategy with Second EMA", overlay=true)

// Input parameters
gm_period = input(15, title="GM-15 Period")
second_ema_period = input(59, title="Second EMA Period")
adx_period = input(8, title="ADX Period")
adx_threshold = input(34, title="ADX Threshold")
lot_size = input.float(0.4, title="Lot Size")

// Calculate the ADX manually
adx(high, low, close, length) =>
    sum_truerange = 0.0
    sum_plusDM = 0.0
    sum_minusDM = 0.0
    for i = 1 to length
        truerange_calc = high[i] - low[i]
        truerange_prev_close = high[i] - close[i-1]
        truerange_close = low[i] - close[i-1]
        truerange_calc := truerange_prev_close > truerange_calc ? truerange_prev_close : truerange_calc
        truerange_calc := truerange_close > truerange_calc ? truerange_close : truerange_calc
        sum_truerange := sum_truerange + truerange_calc
        plusDM = high[i] - high[i-1] > low[i-1] - low[i] and high[i] - high[i-1] > 0 ? high[i] - high[i-1] : 0
        sum_plusDM := sum_plusDM + plusDM
        minusDM = low[i-1] - low[i] > high[i] - high[i-1] and low[i-1] - low[i] > 0 ? low[i-1] - low[i] : 0
        sum_minusDM := sum_minusDM + minusDM
    plusDI = sum_plusDM / sum_truerange * 100
    minusDI = sum_minusDM / sum_truerange * 100
    sumDI = plusDI + minusDI
    adx_value = 100 * (plusDI - minusDI) / (sumDI == 0 ? 1 : sumDI)

// Calculate indicators
gm_8 = ta.sma(close, gm_period)
second_ema = ta.ema(close, second_ema_period)
adx_value = adx(high, low, close, adx_period)

// Define buy and sell conditions
buy_condition = ta.crossover(close, gm_8) and close > gm_8 and close > second_ema and adx_value > adx_threshold
sell_condition = ta.crossunder(close, gm_8) and close < gm_8 and close < second_ema and adx_value > adx_threshold

// Entry and exit logic
if (buy_condition)
    strategy.entry("Buy", strategy.long, qty=lot_size)

if (sell_condition)
    strategy.entry("Sell", strategy.short, qty=lot_size)

// Exit conditions
exit_buy_condition = ta.crossunder(close, gm_8) and close < gm_8
exit_sell_condition = ta.crossover(close, gm_8) and close > gm_8

if (exit_buy_condition)
    strategy.close("Buy")

if (exit_sell_condition)
    strategy.close("Sell")