50기간 지수 이동 평균 교차와 월별 고정 투자를 결합한 이중 최적화 추세 추종 전략

EMA DCA 趋势跟踪 资金管理 风险控制 定期投资 移动平均线交叉
생성 날짜: 2025-04-07 11:51:14 마지막으로 수정됨: 2025-04-07 11:51:14
복사: 0 클릭수: 402
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

50기간 지수 이동 평균 교차와 월별 고정 투자를 결합한 이중 최적화 추세 추종 전략 50기간 지수 이동 평균 교차와 월별 고정 투자를 결합한 이중 최적화 추세 추종 전략

개요

이 전략은 트렌드 추적 원칙과 주기적 일정 투자 (DCA) 방식을 교묘하게 결합하여 재원을 효율적으로 배포하면서 시장 선택의 위험을 최소화합니다. 이 전략은 주로 50주기 지수 이동 평균 (EMA) 을 시장 경향의 판단 지표로 사용하고 월간 고정 투자 방식으로 재원을 축적합니다. 가격이 50주기 EMA보다 낮으면 전략은 매월 고정 금액을 현금 저축에 추가합니다. 가격이 50주기 EMA를 돌파하면 전략은 즉시 모든 축적 된 자금을 시장에 투입하고 지분을 보유하는 동안 월간 고정 투자를 계속합니다. 가격이 50주기 EMA를 다시 넘어간다면 전략은 모든 지분을 청산하고 현금 축적 과정을 다시 시작합니다.

전략 원칙

이 전략의 핵심 원칙은 기술 분석의 트렌드 신호와 체계화된 자금 관리 방법을 결합하는 것이다. 구체적인 구현 메커니즘은 다음과 같다:

  1. 트렌드 판단 메커니즘: 50주기 EMA를 중·장기 경향의 지표로 사용한다. 가격이 EMA 위에 있을 때, 상승 경향으로 간주된다. 가격이 EMA 아래로 떨어질 때, 하락 경향으로 간주된다.

  2. 자금 축적 단계가격이 50주기 EMA보다 낮을 때, 전략은 시장위치 조작을 하지 않고, 매월 고정 금액을 (변수 설정은 10만 달러) 현금 저축에 추가한다. 이것은 불리한 시장 조건에서 자금이 지속적으로 축적될 수 있도록 보장한다.

  3. 자금 배포 단계이 전략은 50주기 EMA를 넘으면 다음과 같습니다.

    • 현재 포지션이 없는 경우, 자본 (재축된 현금 저축을 포함하여) 을 모두 사용하여 다자리 포지션을 설정합니다.
    • 현금 저축을 0으로 재설정합니다.
    • 지분 보유 기간 동안 매월 고정 금액으로 투자 구매를 계속합니다.
  4. 탈퇴 장치50주기 EMA 아래로 떨어지면, 전략은 모든 포지션을 청산하고 현금 저축 과정을 다시 시작합니다.

이 전략은 코드 구현에서cash_reserve현금, 사용량, 사용량을 추적하는 변수time_since_last_investment변수는 투입의 시간 간격이 약 한 달 (~ 30 일) 에 정확하게 제어되도록 하고,strategy.close_all()함수는 완전한 탈퇴 메커니즘을 구현한다.

전략적 이점

코드의 심층적인 분석을 통해, 이 전략은 다음과 같은 중요한 장점을 보여준다:

  1. 체계적인 투자 방법이 전략은 감정적 인 결정을 완전히 제거하고, 사전 설정 된 규칙으로 모든 시장 조건에서 자금이 체계적으로 배포 될 수 있도록 보장합니다. 이것은 인적 판단으로 인한 지연이나 주저를 피합니다.

  2. 자금의 효율성을 극대화하기 위해이 전략은 불리한 조건에서 자금을 축적하고, 유리한 조건이 발생했을 때 모든 축적된 자금을 한 번에 배포함으로써 자금 사용의 효율성을 극대화합니다. 이 방법은 하향 추세에서 조기에 투입되는 것을 피하고 상승 추세에서 충분히 참여하는 것을 보장합니다.

  3. 위험과 이익의 균형: 트렌드 추적과 고정 투자의 이중 메커니즘을 결합하여 자본 안전을 보호하면서 중요한 시장에서 수익 기회를 놓치지 않습니다. 트렌드 추적은 전반적인 위험을 통제하고 고정 투자는 시장에 지속적으로 참여합니다.

  4. 매우 적응력이 좋다: 전략의 매개 변수는 다른 시장 조건과 투자자의 위험 선호에 따라 조정할 수 있습니다. EMA 주기와 고정 투자 금액은 전략의 유연성을 증가시키는 조정 가능한 매개 변수입니다.

  5. 장기적인 수익효과월간 투입과 추세 판단을 통해 결합된 전략은 장기 시장에서 수익성 성장을 달성할 수 있으며, 특히 여러 시장 주기가 바뀌는 환경에서 탄력성을 나타냅니다.

  6. 간단하고 명확하게 실행전략의 개념은 더 진보했지만, 실행 규칙은 간단하고 명확하여, 동작의 복잡성과 잠재적인 실행 오류를 줄였습니다.

전략적 위험

이 전략은 신중하게 설계되었지만, 다음과 같은 잠재적인 위험들이 있습니다.

  1. 지연 위험EMA는 추세 전환점에서의 입출력 시기가 이상적이지 않을 수 있는 지표입니다. 특히 빠르게 변화하는 시장에서는 큰 회수 후에 퇴출 신호를 유발할 수 있습니다.

  2. 시장의 부진수평 변동 시장에서 가격이 EMA를 자주 통과하여 거래 비용을 증가시키고 손실을 초래할 수 있습니다.

  3. 재정 관리의 도전: 고정된 고정 투자 금액은 모든 시장 단계에 적합하지 않을 수 있으며, 높은 변동성 환경에서 더 유연한 자금 분배 전략이 필요할 수 있습니다.

  4. 주기적 의존성: 전략은 선택된 EMA 주기 (여기서는 50) 에 크게 의존하며, 다른 주기 설정은 매우 다른 결과를 낳고, 최적의 매개 변수를 결정하는 것은 어렵다.

  5. 실행 점 영향: 코드에 1점의 슬라이드 포인트가 설정되어 있지만 실제 거래에서, 특히 유동성이 부족한 시장에서, 실행된 슬라이드 포인트는 기본값보다 훨씬 커서 전략 성능에 영향을 줄 수 있다.

이러한 위험을 완화하기 위한 방법은 다음과 같습니다: 필터링 지표를 늘리고, 가짜 신호를 줄이고, 다이내믹 스톱저스 메커니즘을 도입하고, 변동율 조정된 자금 관리를 도입하고, 다중 주기 확인 신호를 사용하며, 다양한 시장 환경에서 광범위한 재측량과 변수 최적화를 수행한다.

전략 최적화 방향

코드의 심층적인 분석을 바탕으로, 이 전략은 다음과 같은 방향으로 최적화될 수 있습니다:

  1. 다중 지표 확인 메커니즘: 추가적인 기술 지표 (RSI, MACD 또는 거래량과 같은) 를 확인 신호로 도입하여 EMA 교차로 생성되는 가짜 신호를 줄여줍니다. 이것은 신호 품질을 향상시키고 불필요한 거래를 줄일 수 있습니다.

  2. 동적 자금 관리: 고정 투자 금액을 시장의 변동률이나 추세 강도에 연결하여 높은 확실성 환경에서 투자를 늘리고 불확실성이 높은 환경에서 투자를 줄인다. 예를 들어, ATR (진정한 변동幅度의 평균) 에 따라 투자 금액을 조정할 수 있다.

  3. 일부 포지션 관리: 한 번에 모든 창고를 운영하는 대신, 창고를 세분화하고 세분화하는 메커니즘을 구현하여 시기를 선택하는 압력을 덜어주고 더 부드러운 권리 이익 곡선을 제공합니다.

  4. EMA 주기 적응: 고정된 50주기 EMA를 시장 조건에 따라 자동으로 조정되는 적응형 이동 평균으로 바꾸어 다른 시장 단계와 주기에 더 잘 적응하도록 한다.

  5. 완벽한 손절매 메커니즘: EMA 교차 탈퇴에만 의존하지 않고 이동적 중지 또는 변동율 기반의 중지 장치를 추가하여 대폭적인 탈퇴 시 자본을 더 일찍 보호 할 수 있습니다.

  6. 시간 필터: 거래 시간 필터를 추가하여 알려진 비효율 거래 시간에 작업을 피하거나 특정 계절 모드에서 전략 매개 변수를 조정하십시오.

  7. 회귀 최적화 프레임워크: 매개 변수 최적화 프레임워크를 구현하고, 다양한 시장 조건에서 최적의 매개 변수 조합을 자동으로 찾고, 매개 변수의 안정성을 보장하기 위해 전향 검증을 수행한다.

이러한 최적화 방향의 공통적인 목표는 전략의 승률을 높이고, 회수를 줄이고, 자본 관리를 더 유연하고 효율적으로 만들어서, 원래의 전략의 핵심 논리를 유지하면서 다양한 시장 환경에서 적응성과 안정성을 향상시키는 것입니다.

요약하다

“50주기 지수 이동 평균 교차와 월간 투자가 결합된 이중 최적화 트렌드 추적 전략”은 기술 분석의 트렌드 판단과 전통적인 정기적 인 투자 개념을 교묘하게 결합한 균형 잡힌 체계화된 양적 거래 방법을 나타냅니다. 하향 추세에서 자금을 축적하고 상승 추세가 확립될 때 전력을 다하여 이 전략은 자금 사용 효율성과 위험 통제를 달성합니다.

EMA 지표의 부진과 변동 시장의 부진과 같은 고유한 위험이 있음에도 불구하고, 다중 지표 확인, 자금 관리 방법의 최적화 및 손해 막기 장치의 개선과 같은 조치를 도입함으로써 이러한 단점을 효과적으로 완화 할 수 있습니다. 특히, 이 전략의 유연성과 사용자 정의가 다양한 시장 환경과 투자 스타일에 적합합니다.

장기 투자의 관점에서, 이러한 결합된 투기 트렌드 추적 전략은 체계적인 투자 규율을 유지하면서 시장 참여 시기를 최적화하려는 투자자에게 특히 적합합니다. 불리한 트렌드에 대한 노출을 줄이고 상향 트렌드에 완전히 참여함으로써, 이 전략은 장기 시장 사이클에서 순전히 투기 또는 트렌드 추적보다 더 균형 잡힌 리스크 수익 특성을 얻을 수 있습니다.

개인 투자자나 전문 거래자 모두 이 전략은 복잡한 변화하는 시장 환경에서 더 체계적이고 객관적인 투자 결정을 내리는 데 도움이 되는 신뢰할 수 있는 프레임 워크를 제공합니다.

전략 소스 코드
/*backtest
start: 2024-10-23 00:00:00
end: 2024-12-23 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5 

//CELIA IS EEN KLEINE VIS

strategy("50 EMA Crossover With Monthly DCA", overlay=true, initial_capital=100000, slippage=1, default_qty_type=strategy.cash, process_orders_on_close=true)

// === Parameters ===
dca_amount = input.int(100000, title="DCA Investment Amount ($)", minval=1)  // Monthly DCA amount
//ema_length = input.int(50, title="EMA Length", minval=1)  // EMA length
emaValue = ta.ema(close, 50)
plot(emaValue, color=color.blue, title="50W EMA")

// === Tracking Variables ===
var float cash_reserve = 0  // To track the accumulated cash
var float total_invested = 0  // To track the total amount invested (cash + DCA)
var float last_investment_time = na
month_seconds = 30 * 24 * 60 * 60  // Approx 1 month in seconds


// === Time Check: Has 1 Month Passed? ===
time_since_last_investment = na(last_investment_time) ? month_seconds : (time - last_investment_time) / 1000

// === Strategy Conditions ===
longCondition = close > emaValue   // Buy when close is above the 50-week EMA
if longCondition 
    if strategy.opentrades == 0  // No open positions
        // Invest full capital (equity + cash), including DCA saved
        strategy.order("Open Order", strategy.long, qty = (strategy.equity+cash_reserve) / close)  
        cash_reserve := 0  // Reset cash reserve after full reinvestment
    
    if time_since_last_investment >= month_seconds
        // Accumulate DCA buy orders
        strategy.order("DCA Buy", strategy.long, qty = dca_amount / close)  
        last_investment_time := time  // Update the time of the last investment

// Accumulate DCA amount into cash reserve every month, regardless of long condition
if time_since_last_investment >= month_seconds 
    last_investment_time := time  

// === Exit Strategy ===
exitCondition = close < emaValue  // Exit if the price crosses below the 50-week EMA
if exitCondition
    strategy.close_all()  // Close the position when price crosses below the EMA

//plot(strategy.equity, style = plot.style_line, title = "Equity")
//plot(cash_reserve, style = plot.style_line, title = "DCA")

// Place the text below the current bar
var label myLabel = na
if (na(myLabel))
    myLabel := label.new(bar_index, low - 0.02, "Celia is een kleine vis", color=color.white, textcolor=color.black, style=label.style_label_up, size=size.normal)

// Update the position of the label each bar
label.set_xy(myLabel, bar_index, low - 200)