DCA 전략 후속 수익

저자:차오장, 2024-02-23 14:01:20
태그:

img

전반적인 설명

이 전략은 달러 비용 평균 (DCA) 을 거래소 플랫폼에서 사용할 수있는 후속 수익률 기능과 결합합니다. 구매에 1%의 가격 오차를 설정하고 매 매출에서 0.5%의 수익을 목표로합니다. 작은 수익을 목표로하는 이유는 트레이딩 봇의 원활한 운영을 보장하고, 느린 시장 기간 동안 고착되는 것을 피하는 것입니다. 백테스팅을 기반으로,이 봇은 시장 변동과 조작에 견딜 수있는 충분한 적응력을 입증했습니다. 연평균 비율 (APR) 이 예외적으로 높지 않을 수도 있지만, 전통적인 구매 및 보유 (HODL) 전략을 종종 능가하는 장기 투자에 대한 만족스럽고 안전한 옵션을 제공합니다.

원칙

전략은 먼저 트레일링 스톱 퍼센티션, 최대 DCA 주문, 가격 오차 퍼센티션 등 구성 가능한 매개 변수를 설정합니다. 그 다음 마지막 구매 가격, 구매 수, 초기 구매 가격, 트레일링 스톱 가격 등 변수를 추적합니다. 구매 논리에서는 현재 가격이 마지막 구매 가격 * (1 - 가격 오차 퍼센트) 이하이고 구매 수가 최대 DCA 주문에 도달하지 않은 경우 구매 신호를 발급하고 구매 가격을 기록합니다. 판매 논리에서는 현재 가격이 마지막 구매 가격 * (1 + 이익 취득 비율) 이상이라면 트레일링 스톱 가격을 설정합니다. 가격이 그 트레일링 스톱 가격 이상으로 계속 상승하면 트레일링 스톱 가격이 현재 가격 * (1 - 트레일링 퍼센티션) 로 업데이트됩니다. 가격이 트레일링 스톱 가격 이하로 떨어지면 판매 신호가 발급되며, 다음 라운드의 DCA 구매 변수를 재설정 할 준비가됩니다.

장점

  1. DCA와 트래일링 스톱 로스를 결합하여 비용 평균을 보장하고 부분 수익을 차단하여 마감을 피합니다.

  2. 유연한 트레일링 스톱 메커니즘, 조정 가능한 수익 및 트레일링 비율로 위험을 최소화합니다.

  3. 백테스트된 결과는 구매와 보유를 능가하며, 장기 투자에 적합한 안정적인 연간 수익률이 있습니다.

  4. 주요 거래소 플랫폼에서 쉽게 적용할 수 있도록 조정 가능한 매개 변수로 구현하기 쉽습니다.

위험성

  1. DCA 구매의 제한된 수는 시장 추세가 장기적으로 하락하면 손실이 증가할 수 있음을 의미합니다.

  2. 저조한 스톱 로스 설정으로 인해 조기 수익을 취하거나 손실이 발생할 수 있습니다.

  3. 거래 비용은 수익에 영향을 줄 수 있습니다. 높은 후속 스톱 로스 설정은 거래 수를 증가시킵니다.

  4. 빈번한 DCA 구매를 지원하기 위해 충분한 자본이 필요합니다. 초기 자본이 부족해서 구매 수를 제한합니다.

개선

  1. 적응적인 트레일링 스톱을 구현하고, 특정 이익의 마일리그에 도달하면 트레일링 비율을 낮추십시오.

  2. 이동평균을 포함하고 주요 지지 부위에 대한 구매 금액을 증가시킵니다.

  3. 재균형 메커니즘을 추가하여 전체 자산에 기초한 DCA 금액을 조정합니다.

  4. 매개 변수 설정을 최적화하고 다양한 보유 기간 동안 수익성을 테스트합니다.

결론

이 전략은 DCA와 트레일링 스톱을 결합하여 장기간에 걸쳐 안정적인 알고리즘 거래 수익을 창출합니다. 백테스트 된 결과는 강하며 안정적인 성장에 초점을 맞춘 투자자에게 적합합니다. 단순하고 깨끗한 코드는 이해하기 쉽고 구현 할 수 있습니다. 매개 변수 최적화 및 추가 지표를 통합하여 추가 성능 향상을 달성 할 수 있습니다. 전반적으로 투자자에게 비교적 안전하고 일관된 수치화 된 거래 솔루션을 제공합니다.


/*backtest
start: 2023-02-16 00:00:00
end: 2024-02-22 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/
// © Stavolt

//@version=5
strategy("DCA Strategy with Trailing Take Profit", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Correctly using input to define user-configurable parameters
takeProfitPercent = input.float(0.6, title="Take Profit (%)", minval=0.1, maxval=5)
trailingPercent = input.float(0.1, title="Trailing Stop (%)", minval=0.05, maxval=1)
maxDCAOrders = input.int(10, title="Max DCA Orders", minval=1, maxval=20)
priceDeviationPercent = input.float(1.0, title="Price Deviation (%)", minval=0.5, maxval=5)

var float lastBuyPrice = na
var int buyCount = 0
var float initialBuyPrice = na
var float trailingStopPrice = na

// Strategy logic here...
// Note: The detailed logic for buying and selling based on the DCA strategy
// needs to be tailored to your specific requirements and tested for correctness.

if (buyCount < maxDCAOrders)
    if (na(lastBuyPrice) or close < lastBuyPrice * (1 - priceDeviationPercent / 100))
        strategy.entry("Buy", strategy.long)
        lastBuyPrice := close
        buyCount += 1
        if (na(initialBuyPrice))
            initialBuyPrice := close

if (not na(lastBuyPrice) and close > lastBuyPrice * (1 + takeProfitPercent / 100))
    if (na(trailingStopPrice) or close > trailingStopPrice)
        trailingStopPrice := close * (1 - trailingPercent / 100)
    if (close < trailingStopPrice)
        strategy.close("Buy")
        lastBuyPrice := na
        trailingStopPrice := na
        buyCount := 0
        initialBuyPrice := na


더 많은