이중 이동 평균 크로스오버 전략 (Dual Moving Average Crossover Strategy) 은 일반적인 양적 거래 전략이다. 이 전략은 구매 및 판매 신호로 서로 다른 기간을 가진 두 개의 이동 평균을 사용합니다. 단기 이동 평균이 장기 이동 평균보다 높을 때 구매하고 단기 이동 평균이 장기 이동 평균보다 낮을 때 판매합니다. 전략 코드는 간단한 이동 평균 (SMA), 기하급수적 이동 평균 (EMA), 이중 기하급수적 이동 평균 (DEMA), 삼배 기하급수적 이동 평균 (TEMA), 중량 이동 평균 (WMA), 볼륨 중량 이동 평균 (VWMA) 과 같은 다양한 일반적인 이동 평균 유형을 지원합니다. 또한 단기 및 장기 이동 평균의 기간에 대한 유연한 설정을 허용합니다. 또한 전략 전략은 전형적인 평균, 높은, 낮은, 닫은 및 개방 가격, 중간에 가까운 이동 가격, 중간에 가까운 이동 가격, 열 가격을 포함하여 다양한 유형의 이동 평균을 선택할 수 있습니다.
이 전략의 핵심 원칙은 서로 다른 기간의 두 이동 평균의 트렌드 특성 및 지연을 활용하여 가격 추세를 파악하는 것입니다. 일반적으로 단기 이동 평균은 가격 변화에 더 민감하며, 장기 이동 평균은 상대적으로 지연됩니다. 가격이 상승 추세에있을 때, 단기 이동 평균은 장기 이동 평균 전에 상승 추세로 이동하고 궁극적으로 그것을 넘어서서 구매 신호를 형성합니다. 반대로, 가격이 하락 추세에있을 때 단기 이동 평균은 장기 이동 평균 전에 하락 추세로 이동하고 궁극적으로 그 아래로 넘어서서 판매 신호를 형성합니다. 황금 십자가와 죽음의 십자가 신호를 캡처함으로써이 전략은 가격의 주요 추세에 따라 거래 할 수 있습니다.
간단하고 사용하기 쉬운: 이중 이동 평균 크로스오버 전략은 초보 트레이더가 배우고 사용하는 데 적합한 간단하고 이해하기 쉽고 구현하기 쉬운 양적 거래 전략입니다.
폭넓은 적용 가능성: 이 전략은 다양한 금융 시장과 거래 도구, 주식, 선물, 외환, 암호화폐 등에 적용될 수 있으며, 강력한 다재다능성을 갖는다.
유연한 매개 변수: 전략 코드는 여러 가지 일반적인 이동 평균과 가격 유형을 지원하며 사용자가 다른 시장 조건과 거래 스타일에 적응하기 위해 필요에 따라 매개 변수를 유연하게 설정할 수 있습니다.
트렌드 추적: 서로 다른 기간의 두 이동 평균의 크로스오버 신호를 사용하여 이 전략은 가격의 주요 트렌드를 효과적으로 파악할 수 있으며, 트렌드를 따라가며 역 트렌드 거래를 피하는 데 도움이됩니다.
지연: 이동평균은 본질적으로 트렌드를 따르는 지표이며 특정 지연을 가지고 있으며 가장 좋은 입출시기를 놓칠 수 있습니다.
범위에 묶인 시장에서의 비효율성: 범위에 묶인 시장이나 옆 시장에서는 가격 변동이 크며 이동 평균 크로스오버 신호가 자주 발생하며 이는 빈번한 거래로 이어질 수 있으며 높은 거래 비용과 자본 손실을 초래할 수 있습니다.
매개 변수 최적화의 어려움: 이동 평균 기간의 선택은 전략 성과에 상당한 영향을 미치지만 최적 매개 변수는 시장 조건에 따라 종종 달라지며, 보편적으로 적용 가능한 최적 매개 변수 조합을 찾는 것이 어렵습니다.
트렌드 필터를 도입하십시오. 이동 평균 크로스오버 신호 외에도 MACD 및 ADX와 같은 다른 트렌드 지표가 트렌드 필터링에 포함될 수 있으며, 트렌드가 명확할 때만 거래하여 범위 제한 시장에서 빈번한 거래를 피할 수 있습니다.
수익을 취하고 손실을 멈추는 것을 최적화하십시오. 단일 거래 위험을 제어하고 전략의 위험/이익 비율을 향상시키기 위해 트래일링 스톱 로스 및 변동성 기반 스톱 로스와 같은 합리적인 수익을 취하고 손실을 멈추는 논리를 전략에 포함하십시오.
동적 매개 변수 최적화: 다른 시장 환경에 대해, 전략이 시장 변화에 적응하고 안정성을 향상시킬 수 있도록 이동 평균 기간과 같은 매개 변수에 대해 주기적으로 동적 최적화를 수행합니다.
다중 요인 조합: 더 견고하고 효과적인 다중 요인 전략을 형성하기 위해 이중 이동 평균 크로스오버 신호와 다른 효과적인 수치 요인 (동력, 가치, 부피 등) 을 결합합니다.
이중 이동 평균 크로스오버 전략 (Dual Moving Average Crossover Strategy) 은 트렌딩 시장에 적합한 다른 기간을 가진 두 개의 이동 평균의 크로스오버 신호를 통해 가격 트렌드를 포착하는 간단하고 고전적인 트렌드 추후 전략이다. 그러나 이 전략은 또한 트렌드 필터링, 동적 파라미터 최적화, 멀티-팩터 조합 등 최적화 및 개선을위한 다른 방법과 조합을 필요로하는 지연 및 매개 변수 최적화 등의 문제도 있습니다. 전반적으로 이중 이동 평균 크로스오버 전략은 양적 거래의 기초 전략 중 하나로 작용할 수 있으며 양적 매니아에 의해 학습 및 연구에 가치가 있습니다.
/*backtest start: 2023-05-08 00:00:00 end: 2024-05-13 00:00:00 period: 1d basePeriod: 1h 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/ // © SustainableInvestment //@version=5 strategy("Moving average strategy (이동평균선 전략)", overlay=true) // === INPUTS === basisType = input.string(defval = "EMA", title = "MA Type: SMA, EMA, DEMA, TEMA, WMA, VWMA ",options=["SMA", "EMA", "DEMA", "TEMA", "WMA", "VWMA"]) shortLen = input.int(defval = 1, title = "Short MA Period", minval = 1) longLen = input.int(defval = 20, title = "Long MA Period", minval = 1) price = input.string(defval = "Typical", title = "Price Type : Close, High, Open, Low, Typical, Center ",options=["Close", "High", "Open", "Low", "Typical", "Center"]) // === BASE FUNCTIONS === // 가격 종류 설정 priceType(price) => Typical = (high+low+close)/3 Center = (high+low) / 2 price=="High"?high : price=="Low"?low : price=="Open"?open : price=="Typical"?Typical : price=="Center"?Center : close // 이동평균선 종류 설정 variant(type, src, len) => v1 = ta.sma(src, len) // Simple v2 = ta.ema(src, len) // Exponential v3 = 2 * v2 - ta.ema(v2, len) // Double Exponential v4 = 3 * (v2 - ta.ema(v2, len)) + ta.ema(ta.ema(v2, len), len) // Triple Exponential v5 = ta.wma(src, len) // Weighted v6 = ta.vwma(src, len) // Volume Weighted type=="EMA"?v2 : type=="DEMA"?v3 : type=="TEMA"?v4 : type=="WMA"?v5 : type=="VWMA"?v6 : v1 longCondition = ta.crossover(variant(basisType, priceType(price), shortLen), variant(basisType, priceType(price), longLen)) if (longCondition) strategy.entry("Long Entry", strategy.long) exitCondition = ta.crossunder(variant(basisType, priceType(price), shortLen), variant(basisType, priceType(price), longLen)) if (exitCondition) strategy.close("Long Entry","Long Exit")