MACD 조합 거래 전략과 함께 듀얼 슈퍼 트렌드

저자:차오장, 날짜: 2023-09-26 17:45:03
태그:

전반적인 설명

이중 슈퍼 트렌드와 MACD 조합 거래 전략은 두 가지 트렌드 추종 지표 (슈퍼 트렌드 1 및 슈퍼 트렌드 2) 와 동력 오시레이터 (MACD) 를 통합하여 재량 결정 없이 체계적인 접근 방식을 제공합니다.

이 전략의 주요 장점:

  • 이중 슈퍼 트렌드 검증 - 트렌드 방향을 확인하기 위해 다른 ATR 기간과 요인을 가진 두 개의 슈퍼 트렌드 지표를 사용하여 잘못된 신호를 최소화합니다.

  • 모멘텀 확인 - MACD 히스토그램은 입출입을 검증하는 모멘텀 필터 역할을 합니다.

  • 목표 출입 및 출입 규칙 - 전략은 트렌드와 추진력의 조합에 기초하여 명확한 구매 및 판매 신호를 생성합니다.

  • 자동화 거래 관리 - 수수료, 슬리핑 및 초기 자본에 대한 내장 설정은 거래 실행 프로세스를 자동화합니다.

  • 사용자 정의 가능성 - 모든 매개 변수는 특정 거래 필요와 변화하는 시장 조건에 맞게 쉽게 사용자 정의 할 수 있습니다.

어떻게 작동 합니까?

이 전략은 정의된 규칙에 따라 작동하며, 주로 듀얼 슈퍼트렌드 (Dual SuperTrend) 에 의해 확인된 트렌드 방향과 MACD 히스토그램 (MACD histogram) 에 의해 표시된 모멘텀 (momentum) 에 초점을 맞추고 있습니다.

입국 규칙

  • 장거리 진입: 슈퍼트렌드 상승률과 MACD 히스토그램 모두 0 이상입니다.

  • 쇼트 엔트리: 슈퍼트렌드 마이너스 및 MACD 히스토그램 모두 0 이하입니다.

출입규칙

  • 긴 출구: 슈퍼 트렌드가 하향으로 변하거나 MACD 히스토그램이 0 이하로 떨어집니다.

  • 외출 단축: 슈퍼 트렌드가 상승세를 타거나 MACD 히스토그램이 0 이상 상승합니다.

무역 관리

  • 고정 수수료율과 미끄러짐 설정

  • 과도한 노출을 방지하기 위한 자동차 위험 관리

거래 방향

이 전략은 상승 시장과 하락 시장 모두에서 거래 할 수 있습니다. 사용자는 시장 시각에 맞춰 방향 (장, 단 또는 둘 다) 을 선택할 수 있습니다.

사용

  • 추세가 명백한 시간 프레임에 가장 잘 적용됩니다.

  • 사용자는 슈퍼트렌드와 MACD 매개 변수를 사용자 정의할 수 있습니다.

기본 설정

  • 슈퍼트렌드 1 ATR 기간: 10

  • 슈퍼 트렌드 1 인자 3.0

  • 슈퍼트렌드 2 ATR 기간: 20

  • 슈퍼 트렌드 2 인자: 5.0

  • MACD 빠른 길이: 12

  • MACD 느린 길이: 26

  • MACD 신호 평형: 9

  • 수수료: 0.1%

  • 미끄러짐: 1점

  • 감독: 둘 다

기본 매개 변수는 균형 잡힌 접근법을 제공하지만 사용자 정의 할 수 있습니다.

장점

이 전략의 주요 장점:

  1. 이중 트렌드 검증은 잘못된 신호를 최소화합니다.

두 개의 슈퍼 트렌드 지표를 사용하는 것은 단일 지표 전략에 비해 잘못된 신호를 크게 감소시킵니다. 이중 확인 메커니즘은 신뢰성을 향상시킵니다.

  1. MACD 모멘텀 필터는 정확성을 향상시킵니다.

MACD 히스토그램은 이상적이지 않은 거래 신호를 필터링하여 입력 정확도를 향상시킵니다.

  1. 효율적인 채용 통제

이중 트렌드 지표의 조합은 트렌드가 변할 때 빠른 출구를 허용하며, 마감량을 제어하는 데 도움이됩니다.

  1. 높은 자동화 수준, 사유가 필요하지 않습니다.

잘 정의된 입국과 출입 규칙은 주관적 해석과 인간의 오류를 제거합니다.

  1. 더 넓은 적용을 위해 매우 사용자 정의 가능

조정 가능한 매개 변수들은 이 전략을 다른 도구와 거래 선호도에 맞게 견고하게 만듭니다.

위험 과 최적화

잠재적인 위험은 다음과 같습니다.

  1. 역동적인 트렌드 전환의 어려움

빈번한 트렌드 반전은 이중 트렌드 지표 설정에 도전이 될 수 있습니다.

  1. 강한 추세에서 제한된 유출 통제

스톱 로즈는 강한 트렌드 움직임을 지연시켜 더 큰 드래운으로 이어질 수 있습니다.

  1. 갑작스러운 사건에 반응할 수 없는 것

블랙 스완 사건에 빠르게 적응할 수 없어 철수 위험이 커집니다.

최적화 기회:

  1. 다양한 악기들을 위한 세밀한 조율 매개 변수들

  2. 더 많은 수단을 제어하기 위해 후속 스톱과 같은 스톱 손실 메커니즘을 추가하십시오.

  3. 갑작스러운 사건들을 파악하고 사용량을 줄이기 위해 다른 지표를 포함합니다.

결론

요약하자면, 듀얼 슈퍼트렌드와 MACD 조합 전략은 트렌드 추적 및 모멘텀 분석의 장점을 결합합니다. 명확한 규칙과 높은 수준의 자동화로 노이즈를 효과적으로 필터링하고 강력한 실용적 유용성을 제공 할 수 있습니다. 그러나 마감 제어 및 매개 변수 최적화가 해결되어야합니다. 전반적으로 이것은 체계적인 트렌드 거래 전략의 가장 좋은 예 중 하나입니다.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-25 00:00:00
period: 30m
basePeriod: 15m
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/
// © PresentTrading

//@version=5
// Define the strategy settings
// strategy("Dual-Supertrend with MACD - Strategy [presentTrading]", overlay=true, precision=3, default_qty_type=strategy.cash, 
//  commission_value= 0.1, commission_type=strategy.commission.percent, slippage= 1, 
//   currency=currency.USD, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital= 10000)

// Trading Direction Dropdown
tradeDirection = input.string("both", "Trading Direction", options=["long", "short", "both"])

// MACD Inputs
fast_length = input(12, "Fast Length")
slow_length = input(26, "Slow Length")
signal_length = input(9, "Signal Smoothing")
sma_source = input.string("EMA", "Oscillator MA Type", options=["SMA", "EMA"])
sma_signal = input.string("EMA", "Signal Line MA Type", options=["SMA", "EMA"])


// MACD Calculation
fast_ma = sma_source == "SMA" ? ta.sma(close, fast_length) : ta.ema(close, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(close, slow_length) : ta.ema(close, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal

// Input Parameters for Supertrend 1
atrPeriod1 = input(10, "ATR Length for Supertrend 1")
factor1 = input.float(3.0, "Factor for Supertrend 1", step=0.01)

// Supertrend Calculation for 1
[supertrend1, direction1] = ta.supertrend(factor1, atrPeriod1)

// Input Parameters for Supertrend 2
atrPeriod2 = input(20, "ATR Length for Supertrend 2")
factor2 = input.float(5.0, "Factor for Supertrend 2", step=0.01)

// Supertrend Calculation for 2
[supertrend2, direction2] = ta.supertrend(factor2, atrPeriod2)

// Combined Conditions
isBullish = direction1 < 0 and direction2 < 0 and hist > 0
isBearish = direction1 > 0 and direction2 > 0 and hist < 0
exitLong = direction1 > 0 or direction2 > 0 or hist < 0
exitShort = direction1 < 0 or direction2 < 0 or hist > 0

// Strategy Entry and Exit based on Trading Direction
if (tradeDirection == "both" or tradeDirection == "long")
    strategy.entry("Buy", strategy.long, when=isBullish)
    strategy.close("Buy", when=exitLong)

if (tradeDirection == "both" or tradeDirection == "short")
    strategy.entry("Sell", strategy.short, when=isBearish)
    strategy.close("Sell", when=exitShort)

bodyMiddle1 = plot((open + close) / 2, display=display.none)
upTrend1 = plot(direction1 < 0 ? supertrend1 : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend1 = plot(direction1 < 0? na : supertrend1, "Down Trend", color = color.red, style=plot.style_linebr)

fill(bodyMiddle1, upTrend1, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle1, downTrend1, color.new(color.red, 90), fillgaps=false)

bodyMiddle2 = plot((open + close) / 2, display=display.none)
upTrend2 = plot(direction2 < 0 ? supertrend2 : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend2 = plot(direction2 < 0? na : supertrend2, "Down Trend", color = color.red, style=plot.style_linebr)

fill(bodyMiddle2, upTrend2, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle2, downTrend2, color.new(color.red, 90), fillgaps=false)

더 많은