DEMA 전략 MACD 지표 조합


생성 날짜: 2023-12-21 10:49:45 마지막으로 수정됨: 2023-12-21 10:49:45
복사: 1 클릭수: 931
avatar of ChaoZhang ChaoZhang
1
집중하다
1623
수행원

DEMA 전략 MACD 지표 조합

개요

이 전략의 이름은 DEMA MACD 조합 전략이다. DEMA 평균선 지표와 MACD 지표를 결합하여 쌍 지표 확인을 사용하여 매매 신호를 발송한다. 주요 아이디어는 동향 지표 DEMA와 동력 지표 MACD를 동시에 사용하여 다중 확인을 함으로써 신호 정확성을 높임으로써 더 나은 전략 성능을 얻는다.

전략 원칙

이 전략은 주로 DEMA 평균선 지표와 MACD 지표의 조합을 기반으로 한다. 구체적인 원칙은 다음과 같다:

  1. 21일 DEMA 평균선을 계산하여, 종결 가격 상단에서 DEMA 평균선을 통과하면 구매 신호로 간주하고, 아래에서 DEMA 평균선을 통과하면 판매 신호로 간주한다.

  2. MACD 지표의 차이를 계산하고 선택 가능한 변수를 추가하여 구매 신호의 추가 확인으로 MACD 차이가 0보다 크지 여부를 제어합니다.

  3. DEMA 평균선 구매 신호가 발생했을 때 MACD 차이는 0보다 큰 추가 확인이 활성화되면 MACD 차이가 긍정적으로 바뀌기 전까지는 실제 구매 신호를 유발할 필요가 있습니다.

  4. DEMA 평선 판매 신호가 나타났을 때, MACD 추가 확인이 필요 없이 직접 판매 신호를 발신한다.

이 쌍 지표 조합을 통해, DEMA 평균선을 사용하여 트렌드 방향을 판단 할 수 있으며, MACD 차이는 현재 트렌드 시작 단계에 있는지 판단 할 수 있으며, 과감한 추측을 피하고 수익 공간을 확대 할 수 있습니다. MACD 차이는 0보다 크다. 확인 구매는 지수 성장 기간 동안만 구매하도록합니다. DECL 평균선은 신속한 확인 판매를 통해 전략이 적시에 손실을 막을 수 있습니다.

우위 분석

이 전략은 DEMA 평균선과 MACD 지표의 장점을 다음과 같이 나타냅니다.

  1. DEMA의 반응은 더 민감하여 동향의 변화를 적시에 포착하여 충격 함정에 빠지는 것을 피할 수 있습니다.

  2. MACD 차이는 0보다 크다 확인하면 가짜 신호를 필터링 할 수 있으며, 트렌드 초기 단계에서만 구매하여 수익 공간을 확장 할 수 있습니다.

  3. MACD가 직접 DECL을 판매하는 것을 확인하지 않아도 빠르게 상쇄되어 수익을 최대한 보존할 수 있습니다.

  4. 이중 지표는 상호 검증으로 신호의 정확도를 높이고, 잘못된 거래의 확률을 낮춘다.

  5. 매개 변수 최적화 공간은 넓고, 매개 변수를 조정하여 다른 시장 환경에 적응할 수 있다.

위험 분석

이 전략에는 다음과 같은 위험들이 있습니다.

  1. DEMA 반응의 민감성은 또한 잘못된 신호를 발생시키는 데 더 취약하여 MACD 지표가 검증되어야 한다.

  2. MACD 지표는 지연성이 있으며, 최적의 구매 시점을 놓칠 수 있다. 다른 선행 지표를 사용하는 것이 좋습니다.

  3. 매개 변수 최적화에 따라, 각 매개 변수가 각 시장에 대한 적합성이 다르다. 최적의 매개 변수를 찾기 위해 지속적인 재검토가 필요합니다.

  4. 일련화 연관성 위험. DEMA와 MACD는 모두 EMA 계산에 의존하고 있으며, 연관성이 높으며, 신호 정확성은 의심스럽다.

대응방법은 다음과 같습니다.

  1. 다른 지표의 검증을 추가하고, 여러 지표의 조합을 구축하여 오류의 확률을 줄여줍니다.

  2. MACD를 BB, KD와 같은 선행 지표로 교체하여 구매 지점을 미리 잡으세요.

  3. 매개 변수 최적화 및 업데이트 메커니즘을 구축하고 매개 변수 건전성을 실시간으로 평가한다.

  4. 부관적인 지표들을 도입하는 시도, 예를 들어, 충격 지표는 연관성의 위험을 감소시킵니다.

최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. DEMA 파라미터를 수정하여 최적의 파라미터 조합을 찾으십시오. DEMA 파라미터는 직접적으로 전략에 영향을 미치는 민감도입니다.

  2. 스톱 메커니즘을 추가한다. 현재 전략은 DECL 판매 신호 스톱에만 의존하며, 이동 스톱 또는 퍼센티지 스톱을 설정할 수 있다.

  3. MACD를 대신하여 다른 선행 지표를 추가하여 더 이른 신호를 찾습니다. 예를 들어, 브린 라인, KDJ 등이 있습니다.

  4. 무관한 지표를 도입하여 전략의 안정성을 높여줍니다. 예를 들어, 거래량, 충격 지표 등을 추가합니다.

  5. 매개 변수 최적화 및 업데이트 메커니즘을 구축하고 매개 변수 건강성을 실시간으로 평가하고 매개 변수를 자동으로 조정합니다.

요약하다

이 전략은 DEMA 평균선과 MACD 지표를 조합하여 두 가지의 장점을 최대한 활용하여 구매 및 판매 신호를 확인하고 발송합니다. 단일 지표에 비해 더 높은 민감도와 신호 정확도를 가지고 있습니다. 또한 개선 할 수있는 여지가 있습니다.

전략 소스 코드
/*backtest
start: 2022-12-14 00:00:00
end: 2023-12-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/
// © melihtuna

//@version=1
strategy("DEMA Strategy with MACD", overlay=true)

// === Trend Trader Strategy ===
DemaLength = input(21, minval=1)
MacdControl = input(false, title="Control 'MACD Histogram is positive?' when Buy condition")

e1 = ema(close, DemaLength)
e2 = ema(e1, DemaLength)
dema1 = 2 * e1 - e2
pos = close > dema1 ? 1 : 0 
barcolor(pos == 0 ? red: pos == 1 ? green : blue )    
plot(dema1, color= blue , title="DEMA Strategy with MACD")

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2020, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// === MACD ===
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9)
macdCond= MacdControl ? histLine[0] > 0 ? true : false : true

strategy.entry("BUY", strategy.long, when = window() and pos == 1 and macdCond)
strategy.entry("SELL", strategy.short, when = window() and pos == 0)