지능형 고정 금액 고정 투자 전략 및 보안 주문의 다단계 최적화

DCA SO TP PMAC VWAP ROI
생성 날짜: 2025-07-14 10:37:41 마지막으로 수정됨: 2025-07-14 10:37:41
복사: 2 클릭수: 202
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

지능형 고정 금액 고정 투자 전략 및 보안 주문의 다단계 최적화 지능형 고정 금액 고정 투자 전략 및 보안 주문의 다단계 최적화

전략 개요

지능형 고정 분량 투자 전략은 달러 비용 평균 (DCA) 에 기반한 장기 거래 시스템으로, 기본 주문과 안전 주문의 조합을 설정하여 자산 축적 과정을 최적화한다. 이 전략은 시장이 떨어질 때 자동으로 구매 입력량을 증가시키고, 예상 수익 목표가 달성될 때 전체 포지션을 평정하고, 주기적 이익을 달성한다. 전략의 핵심 설계에는 초기 고정 금액 입금, 다단계 보안 주문 보충 포지션 동적 평균 비용 계산 및 정밀 퇴출 메커니즘이 있으며, 특히 변동성 시장에서 장기 자산 축적에 적합하다.

전략 원칙

이 전략은 비용평등법의 핵심적 사고에 기초하고 있지만, 다단계 보안 주문 메커니즘을 통해 눈에 띄게 강화되었다. 전략 실행 과정은 다음과 같다:

  1. 기본 주문 입국: 입장이 없을 때, 시스템은 기본 고정된 달러 금액 (baseOrderSize) 을 현재 가격으로 구매하고, 입점 가격과 수치를 기록한다.

  2. 보안 명령 발동 장치포지션 보유 기간 동안, 가격이 예상된 편차 비율을 넘어 떨어지고, 최대 안전 주문 수 제한이 미치지 않으면, 시스템은 포지션을 보충한다.

  3. 동적 주문 규모 조정: 각 보안 주문의 크기는 곱셈을 통해 동적으로 확장된다. 계산 공식은: baseOrderSize * orderSizeMultiplier^(safetyOrderCount+1) ᅳ

  4. 평균 비용 계산: 시스템은 실시간으로 총비용과 총량을 추적하고, 총비용을 총량으로 나누면 평균 진입 가격을 동적으로 계산한다.

  5. 정지 탈퇴 메커니즘: 시장 가격이 평균 비용과 기본 수익 목표 비율로 상승하면 시스템 자동으로 모든 포지션을 청산하여 전체 거래 주기를 완료합니다.

이 전략은 순환적인 디자인을 적용하여, 매번 매매 후 모든 카운터와 추적 변수가 재설정되어 다음 거래 주기를 시작할 준비가 됩니다.

전략적 이점

  1. 비용 평균 효과를 극대화이 시스템은 가격 하락에 따라 자동으로 구매를 늘리고, 평균 보유 비용을 크게 낮추고, 향후 수익을 창출할 수 있는 공간을 제공합니다.

  2. 위험 관리 자동화: 사전 설정된 안전 주문 메커니즘을 통해, 전략은 시장이 하락할 때 미리 정의된 계획에 따라 포지션을 보충하여 감정적 인 결정을 피할 수 있습니다.

  3. 자금 사용 효율성 최적화주문 규모의 곱셈을 통해, 전략은 가격이 떨어질 때 더 많은 자금을 투입할 수 있고, 더 유리한 가격 지점에서 더 많은 자산을 축적할 수 있다.

  4. 정확한 수익 목표 관리: 평균 입시 가격에 기반한 동적 정지 메커니즘, 각 거래 주기가 기본 수익 목표에 도달 할 때 수익을 잠금 할 수 있도록 보장합니다.

  5. 고도의 사용자 정의: 사용자는 다양한 시장 조건과 개인 위험 선호에 따라 기본 주문 크기, 편차 비율, 최대 안전 주문 수, 주문 규모 곱하기 및 수익 목표와 같은 파라미터를 조정할 수 있습니다.

  6. 비주얼 트랜잭션 레퍼런스전략: 거래 결정을 돕기 위해 평균 입시 가격, 정지 목표 가격 및 보안 주문의 발동 가격의 실시간 가시성을 제공합니다.

전략적 위험

  1. 하락 시장 자본 소모: 계속 하락하는 시장에서, 전략은 사용 가능한 자금을 빠르게 소모할 수 있습니다, 특히 더 높은 주문 크기를 설정할 때. 해결책은 합리적으로 최대 안전 주문 수를 설정하고 시장 주기에 따라 기본 주문 크기를 조정하는 것입니다.

  2. 무손실 메커니즘: 현재 전략 설계에는 손실 제도가 없습니다. 이는 극한 시장 조건에서 큰 손실을 초래할 수 있습니다.

  3. 매개변수 민감도: 전략 성능은 파라미터 설정에 크게 의존하며, 부적절한 파라미터 조합은 부적절한 효과를 초래할 수 있다. 역사 데이터 회색을 통해 최적의 파라미터 조합을 찾는 것이 좋습니다.

  4. 시장의 추세를 파악하지 않고: 전략에는 트렌드 식별 장치가 포함되어 있지 않으며, 강한 하향 추세에서 조기 진입이 가능합니다. 간단한 트렌드 지표의 통합을 진입 필터 조건으로 고려할 수 있습니다.

  5. 유동성 위험: 낮은 유동성 시장에서, 대규모 보안 주문은 슬라이드 포인트 또는 거래에 어려움을 겪을 수 있습니다. 높은 유동성 시장에서 유동성 검사 메커니즘을 적용하거나 추가하는 것이 좋습니다.

전략 최적화 방향

  1. 트렌드 필터 통합: 간단한 트렌드 식별 지표 (예를 들어 이동 평균의 교차 또는 상대 강도 지수) 를 입시 논리에 통합하여 강력한 하향 추세에서 조기 포지션을 설정하는 것을 피하십시오. 이러한 최적화는 전략의 리스크 조정 수익률을 크게 향상시킬 수 있습니다.

  2. 동적 편차 비율시장의 변동성에 따라 보안 주문의 촉발 편차 비율을 조정합니다. 높은 변동성 시장에서 더 큰 편차를 설정하고 낮은 변동성 시장에서 더 작은 편차를 설정하여 다른 시장 환경에 적응합니다.

  3. 부분 차단 장치: 점진적 정지 메커니즘을 도입하여 일부 수익 수준에 도달했을 때 전체적으로 퇴출하지 않고 일부 청산을 허용하여 일부 시장의 틈새를 유지하면서 일부 수익을 잠금 할 수 있습니다.

  4. 위험 관리 강화: 시간 또는 가격에 기반한 조건부 스톱로드를 추가하고, 극한 시장 조건에서 과도한 손실을 방지하기 위한 최대 손실 제한.

  5. 자금 관리 최적화더 복잡한 자금 관리 알고리즘을 적용하여, 단순히 고정된 배수를 사용하는 대신, 계정 규모, 시장의 변동성 및 현재 적자 상태에 따라 주문 크기를 조정합니다.

  6. 통제를 철회한다: 역사적 회수 분석에 기반한 적응 변수 조정 메커니즘을 추가하고, 큰 회수가 감지되면 자동으로 주문 크기를 줄이거나 오차 비율을 증가시켜 하락시장에서 자금 압박을 줄일 수 있습니다.

요약하다

스마트 고정 분량 투자 전략은 기본 주문 입수와 다단계 보안 주문 보충 메커니즘을 결합하여 장기 자산 축적에 대한 체계화된 방법을 제공합니다. 이 전략은 주기적으로 변동하는 시장에 특히 적합하며, 가격 회전을 효과적으로 활용하여 더 많은 자산을 축적하고 반발시 수익을 잠금 할 수 있습니다.

전략의 주요 장점은 단순하고 강력한 비용 평균 효과 최대화 메커니즘과 명확한 수익 목표 관리이지만, 하락 시장의 자본 소모 및 중단 장치의 부족과 같은 위험에 직면합니다. 트렌드 필터, 동적 파라미터 조정 및 강화 된 위험 관리 기능을 통합하여 전략은 더욱 최적화되어 다양한 시장 환경에서 적응성과 성능을 향상시킬 수 있습니다.

이러한 강화된 DCA 전략은 자산 축적과 변동성 시장에서 위험을 관리하는 체계적인 방법을 찾는 투자자에게 신뢰할 수 있고 사용자 정의 가능한 프레임 워크를 제공하며 특히 중장기 투자 기간에 적합합니다.

전략 소스 코드
/*backtest
start: 2025-06-13 00:00:00
end: 2025-07-13 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":200000}]
*/

//@version=5
strategy("Simple DCA Strategy", overlay=true)

// --- Strategy Inputs ---
baseOrderSize = input.float(10, "Base Order Size (USD/Quote Currency)", minval=0.01)
priceDeviation = input.float(1.0, "Price Deviation for Safety Order (%)", minval=0.1) / 100
maxSafetyOrders = input.int(5, "Maximum Safety Orders", minval=0)
takeProfit = input.float(1.0, "Take Profit (%)", minval=0.1) / 100
orderSizeMultiplier = input.float(1.5, "Order Size Multiplier", minval=1.0)

// --- Internal Variables ---
var float lastEntryPrice = na
var int safetyOrderCount = 0
var float totalQuantity = 0.0
var float totalCost = 0.0
var float averageEntryPrice = na

// --- Reset Logic for New Cycles ---
// Reset variables when no open positions (or when strategy is initialized)
if  strategy.position_size == 0
    lastEntryPrice := na
    safetyOrderCount := 0
    totalQuantity := 0.0
    totalCost := 0.0
    averageEntryPrice := na

// --- Entry Logic (Base Order and Safety Orders) ---
// Base Order
if  strategy.position_size == 0
    // Enter a long position with the base order size
    strategy.entry("Base Order", strategy.long, qty=baseOrderSize / close) // Convert USD/Quote Currency to quantity
    lastEntryPrice := close
    totalQuantity := baseOrderSize / close
    totalCost := baseOrderSize
    averageEntryPrice := close
    safetyOrderCount := 0
else
    // Safety Order Logic
    // Check if price has deviated enough and we haven't reached max safety orders
    if low < lastEntryPrice * (1 - priceDeviation) and safetyOrderCount < maxSafetyOrders
        currentOrderSize = baseOrderSize * math.pow(orderSizeMultiplier, safetyOrderCount + 1) // Calculate next order size
        strategy.entry("SO " + str.tostring(safetyOrderCount + 1), strategy.long, qty=currentOrderSize / close)

        // Update tracking variables
        lastEntryPrice := close
        totalQuantity := totalQuantity + (currentOrderSize / close)
        totalCost := totalCost + currentOrderSize
        averageEntryPrice := totalCost / totalQuantity // Recalculate average entry price
        safetyOrderCount := safetyOrderCount + 1

// --- Exit Logic (Take Profit) ---
if strategy.position_size > 0
    // Calculate the target price for take profit
    targetPrice = averageEntryPrice * (1 + takeProfit)

    // Close the position if the current price reaches the target price
    if high >= targetPrice
        strategy.close_all()

// --- Plotting for Visualization ---
plot(averageEntryPrice, "Average Entry Price", color=color.blue, style=plot.style_linebr)
plot(strategy.position_size > 0 ? averageEntryPrice * (1 + takeProfit) : na, "Take Profit Target", color=color.green, style=plot.style_linebr)
plot(strategy.position_size > 0 ? lastEntryPrice * (1 - priceDeviation) : na, "saftyorder", color=color.rgb(175, 91, 76), style=plot.style_linebr)