다중 주파수 고정 기간 투자 백테스팅 전략 분석 및 최적화 도구

DCA ROI BACKTEST Overlay
생성 날짜: 2025-04-30 13:39:48 마지막으로 수정됨: 2025-04-30 13:39:48
복사: 0 클릭수: 566
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

다중 주파수 고정 기간 투자 백테스팅 전략 분석 및 최적화 도구 다중 주파수 고정 기간 투자 백테스팅 전략 분석 및 최적화 도구

개요

다중 주파수 리버스 측정 전략 분석 및 최적화 도구는 수량 거래자를 위해 특별히 설계된 강력한 전략 테스트 도구이며, 주로 다양한 투자의 빈도, 다양한 투자 금액의 투자 전략 효과를 테스트 및 최적화하기 위해 사용됩니다. 이 전략은 사용자가 투자 빈도 (일, 주 또는 월), 투자 금액 및 시간을 유연하게 선택할 수 있도록 허용합니다.

전략 원칙

다중 주파수 시정 투사 역측정 전략의 핵심 원리는 시간 동원 된 자동화 시정 장치이다. 전략은 주로 다음과 같은 몇 가지 중요한 단계를 통해 구현된다:

  1. 주파수 설정: 전략은 세 가지 주파수 옵션을 제공하며, 현재 시점이 주파수 조건에 부합하는지 판단하기 위해 should_dca () 함수를 사용합니다. 매일 주파수는 거래 당일마다 실행됩니다. 주파수는 매주 월요일에 실행됩니다. 월 주파수는 사용자가 지정한 월 날짜에 실행됩니다.

  2. 시간 필터: 전략은 사용자 설정된 시간 범위 ((start_date to end_date) 에서만 투기 작업을 수행하여 재측정 기간의 정확한 통제를 보장한다.

  3. 포지션 관리: 매번 투자할 때, 시스템은 현재 가격과 고정 투자 금액에 따라 구매할 수 있는 양을 계산합니다.

  4. 데이터 추적: 전략은 총 투자 금액, 총 보유 금액 및 평균 비용의 세 가지 핵심 변수를 유지함으로써 투자 결정을위한 데이터 지원을 제공합니다.

  5. 수익 계산: 전략은 실시간으로 현재 시장가치 (current_value = total_shares * close), 실현되지 않은 이익 (unrealized_profit = current_value - total_invested) 및 투자 수익률 (roi_percent = unrealized_profit / total_invested * 100) 을 계산하고 투자의 효과를 직관적으로 보여줍니다.

  6. 시각적 표시: 전략은 plot 함수를 사용하여 평균 가격 선을 그리고, table를 사용하여 투자 총액, 보유량, 평균 가격, 현재 시장 가치 및 수익을 포함한 주요 투자 지표를 표시합니다.

전략적 이점

다중 주파수 시정 투사 역검사 전략은 다음과 같은 중요한 장점을 가지고 있다:

  1. 높은 유연성: 전략은 사용자가 투자의 주파수 (일간/주간/월간), 투자 금액 및 시간 범위를 사용자 정의 할 수 있도록 허용합니다. 이는 다양한 투자자의 개인화 된 요구를 충족시키고 다양한 시장 환경과 투자 목표에 적합합니다.

  2. 자동화 실행: 전략은 should_dca () 함수를 통해 실행 조건을 자동으로 판단하고, 인적 개입이 필요하지 않으며, 투자 결정에 대한 감정 요소의 영향을 줄여서 전략의 일관성 실행을 보장한다.

  3. 정확한 자금 관리: 전략은 고정 금액을 투자하는 방식을 채택하고, 매번 투입되는 자금의 양을 정확하게 제어하여 투자자가 엄격한 자금 계획과 위험을 제어하는 데 도움이됩니다.

  4. 포괄적 인 데이터 추적: 전략은 총 투자 금액, 지분, 평균 비용, 현재 시장 가치 및 수익률을 포함한 주요 투자 지표를 실시간으로 유지 및 업데이트하여 투자자에게 투자의 전체 상태를 평가할 수 있습니다.

  5. 직관적인 시각적 피드백: 평균 가격 라인을 그리고 실시간으로 업데이트되는 데이터 테이블을 통해 투자자는 투자 전략의 실행 효과를 직관적으로 알 수 있으며, 특히 평균 비용과 현재 가격의 대조를 통해 가치 평형화의 효과를 이해할 수 있습니다.

  6. 높은 호환성: 전략 설계는 다른 시간 주기와 다른 자산 클래스의 적용성을 고려합니다. 주식, ETF 또는 암호화폐와 같은 금융 상품은 전략으로 투기 역으로 분석 할 수 있습니다.

전략적 위험

다중 주파수 시정 투사 역측정 전략은 여러 장점이 있지만, 사용 과정에서 다음과 같은 잠재적인 위험이 존재한다:

  1. 역사적 데이터 편차: 전략적 재검토는 역사적 데이터를 기반으로, 재검토 결과가 너무 낙관적이어서 미래 시장의 성과를 완전히 반영하지 못할 수 있는 “생존자 편차”의 위험이 있습니다. 해결책은 다중 시점, 다중 시장 환경에서 재검토를 실시하여 샘플 다양성을 높이는 것입니다.

  2. 변수 감수성: 서로 다른 투자의 빈도와 투자 금액은 매우 다른 피드백 결과를 초래할 수 있으며, 과도한 적합성의 위험이 있습니다. 변수 감수성 분석을 수행하여 변수 변경이 전략 성능에 미치는 영향을 테스트하는 것이 좋습니다.

  3. 유동성 고려가 부족하다: 현재 전략은 시장 유동성 요소를 고려하지 않으며, 낮은 유동성 자산에 대해 예상된 가격에 따라 거래를 실행할 수 없습니다. 유동성 조건 필터를 추가하거나, 낮은 유동성 시장에 대한 슬라이드 포인트 모형을 설정해야합니다.

  4. 거래 비용 무시: 전략은 거래 비용, 세금 등의 비용 요소를 고려하지 않아 재검토 결과와 실제 상황의 오차가 발생할 수 있습니다. 거래 비용 계산 모듈을 추가하여 투자 환경을 더 현실적으로 모의하는 것이 좋습니다.

  5. 단독 전략 위험: 순전히 고정 투자 전략은 시장 적응력이 없으며, 장기적 인 불시장에서 큰 회전을 겪을 수 있습니다. 전략의 시장 적응력을 높이기 위해 기술 지표 또는 기본 지표와 결합한 전략을 고려하십시오.

  6. 자본 효율성 문제: 고정 주파수 투자는 시장의 저점을 충분히 활용하지 못할 수 있으며, 자본 사용 효율성이 떨어질 수 있다. 가격 조건 촉발 장치를 증가시키고, 가격이 크게 떨어지면 투자 금액을 증가시키는 것을 고려할 수 있다.

전략 최적화 방향

현재 전략에 대한 심층적인 분석을 바탕으로 몇 가지 잠재적인 최적화 방향은 다음과 같습니다.

  1. 다이내믹 투자 금액: 현재 전략은 고정 금액을 사용하여 시장의 변동성에 기반한 다이내믹 투자 전략으로 최적화 할 수 있습니다. 예를 들어 시장이 크게 떨어질 때 투자 금액을 늘리고 시장이 상승 할 때 투자 금액을 줄여 시장의 변동성을 더 잘 활용하기 위해 투자 금액을 줄일 수 있습니다.이 방법은 자본 사용 효율을 높이고 더 많은 저렴한 가격의 구매 기회를 잡을 수 있습니다.

  2. 다중 지표 복합 트리거: 시간 트리거에 기초하여 기술 지표 트리거 조건을 추가합니다. 예를 들어, 상대적으로 약한 지수 ((RSI)) 와 이동 평균과 같은 지표가 결합되어 기술 지표가 초과 판매를 표시 할 때 투자 힘을 증가시킵니다.

  3. 손해 방지 장치 통합: 현재 전략에는 위험 제어 장치가 없으며, 회수량이나 절대 손실 금액에 기반한 손해 방지 기능을 추가하여 극한 시장 환경에서 지속적인 손실을 방지 할 수 있습니다. 이것은 투자 자본을 보호하기 위해 중요합니다.

  4. 분산 투자 기능: 확장 전략은 여러 자산의 동시 투자를 지원하고, 포트폴리오의 자동 재균형을 구현한다. 이 방법은 단일 자산의 위험을 줄이고, 전체 포트폴리오의 안정성을 향상시킬 수 있다.

  5. 탈퇴 전략 설계: 현재 전략은 구매 결정에 초점을 맞추고 명확한 탈퇴 메커니즘이 없습니다. 목표 수익률, 보유 시간 또는 근본적인 변화에 따라 탈퇴 조건을 추가하여 전략의 전체 수명 주기를 관리 할 수 있습니다.

  6. 거래 비용 시뮬레이션: 거래 수수료, 슬라이드 포인트 및 세금 계산을 추가하여 실제 거래 환경에 대한 재검토 결과를 더 가깝게 만듭니다. 이것은 실제 시장에서 전략을 평가하는 데 중요합니다.

  7. 데이터 시각화 강화: 더 많은 그래프와 투자 수익률 시간의 변화 곡선, 다른 주파수 대조 분석과 같은 지표를 추가하여 사용자가 전략의 성능을 더 포괄적으로 이해할 수 있도록 도와줍니다. 이것은 전략의 가용성을 향상시킬뿐만 아니라 사용자가 더 현명한 투자 결정을 내릴 수 있도록 도와줍니다.

요약하다

다중 주파수 투기 역검사 전략 분석 및 최적화 도구는 다양한 시장 환경에서 다양한 투기 전략을 테스트하고 평가하는 데 필요한 포괄적이고 유연한 프레임 워크를 제공합니다. 사용자가 투기 주파수, 투자 금액 및 시간 범위를 사용자 정의 할 수있게 함으로써, 이 전략은 다양한 투자 스타일과 목표에 적합합니다.

이 전략의 핵심 장점은 단순하지만 강력한 실행 논리, 자동화된 투기기술, 그리고 전체적인 데이터 추적 및 시각화 표시 기능에 있습니다. 역사적 데이터의 편차, 파라미터의 민감성 등의 잠재적인 위험에도 불구하고, 이러한 위험은 권장된 최적화 방향에 의해 효과적으로 완화 될 수 있습니다.

동적 투자 금액, 다중 지표 복합 트리거, 중단 메커니즘 등의 최적화를 도입함으로써 이 전략은 더욱 적응성과 효과를 향상시킬 수 있습니다. 특히, 분산 투자 기능과 개선된 탈퇴 전략 디자인은 더 포괄적인 투자 의사 결정 지원 도구로 만들 것입니다.

이 전략은 장기 투자자에게 체계화된 투자 방법을 제공하는 것뿐만 아니라 투자가들이 가치 평형화를 이해하고 준수하도록 도와주는 투자의 철학을 직관적 인 데이터로 보여줍니다. 이 전략 도구는 경험이 풍부한 양적 거래자 또는 투자 여정을 시작하는 초보자 모두에게 귀중한 통찰력과 실용적인 의사 결정 지원을 제공합니다.

전략 소스 코드
/*backtest
start: 2024-04-30 00:00:00
end: 2025-04-28 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("DCA Strategy Tester", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding = 999999)

// Strategy Parameters
dca_interval = input.string("Monthly", "DCA Frequency", options=["Daily", "Weekly", "Monthly"])
investment_amount = input.float(1000, "Investment Amount", minval=1)
monthly_dca_day = input.int(4, "Monthly DCA Day", minval=1, maxval=31, tooltip="Day of the month to perform DCA when using Monthly frequency")

// Function to determine if we should execute DCA today
should_dca() =>
    result = false
    
    if dca_interval == "Daily"
        result := true
    else if dca_interval == "Weekly" and dayofweek == 1  // Monday
        result := true
    else if dca_interval == "Monthly" and dayofmonth == monthly_dca_day
        result := true
    
    result

// Variables to track investment
var float total_invested = 0.0
var float total_shares = 0.0
var float avg_price = 0.0

// Execute DCA if conditions are met
if should_dca()
    shares_bought = investment_amount / close
    
    strategy.entry("DCA Buy", strategy.long, qty=shares_bought)
    
    // Update our tracking variables
    total_invested := total_invested + investment_amount
    total_shares := total_shares + shares_bought
    avg_price := total_invested / total_shares

// Display current stats
current_value = total_shares * close
unrealized_profit = current_value - total_invested
roi_percent = unrealized_profit / total_invested * 100

// Plot average price line
plot(avg_price > 0 ? avg_price : na, "Average Price", color=color.blue, linewidth=2, style=plot.style_line)

// Also add a table that will always be visible
var table stats_table = table.new(position.top_right, 1, 6, bgcolor=color.new(color.black, 70), border_width=1)

table.cell(stats_table, 0, 0, "DCA Strategy Results", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(stats_table, 0, 1, "Total Invested: $" + str.tostring(total_invested, "#.##"), text_color=color.white)
table.cell(stats_table, 0, 2, "Shares Owned: " + str.tostring(total_shares, "#.####"), text_color=color.white)
table.cell(stats_table, 0, 3, "Average Price: $" + str.tostring(avg_price, "#.##"), text_color=color.white)
table.cell(stats_table, 0, 4, "Current Value: $" + str.tostring(current_value, "#.##"), text_color=color.white)

profit_color = unrealized_profit >= 0 ? color.green : color.red
table.cell(stats_table, 0, 5, "Profit/Loss: $" + str.tostring(unrealized_profit, "#.##") + " (" + str.tostring(roi_percent, "#.##") + "%)", text_color=profit_color)