
이 전략은 달러 비용 평균 (Dollar Cost Averaging, DCA) 과 거래소 플랫폼의 트레일링 테이크 프로피트 (Trailing Take Profit) 기능을 결합합니다. 그것은 구매를 위해 1%의 가격 편차를 설정하고 매매 당 0.5%의 수익을 목표로합니다. 이러한 미세한 수익은 거래 로봇이 원활하게 작동하도록 보장하고 시장의 느린 기간에 갇히지 않도록합니다.
이 전략은 먼저 슬라이드 스톱 손실 비율, 최대 DCA 주문 수, 가격 오차 비율 등의 구성 가능한 파라미터를 설정한다. 그 다음에는 마지막 구매 가격, 구매 횟수, 초기 구매 가격 및 슬라이드 스톱 손실 가격 등의 변수를 추적한다. 구매 논리적으로, 현재 가격이 이전 구매 가격보다 낮다면 구매 신호를 발송하고 구매 주문 수를 기록한다. 판매 논리적으로, 현재 가격이 이전 구매 가격보다 높다면 판매 스톱 손실 값을 설정한다. 가격이 계속 상승하면 슬라이드 스톱 포인트를 깨고, 슬라이드 스톱 포인트를 업데이트합니다.
DCA 고정투자와 슬라이드 스톱을 결합하여, 정기적 인 금액을 매입하는 데 필요한 평균 비용 효과를 보장하고, 수익의 일부를 철회하지 않도록 고정합니다.
슬라이드 포인트 스톱 손실 메커니즘은 시장 상황에 따라 슬라이드 포인트 비율과 스톱 폭을 조정하여 위험을 줄일 수 있습니다.
회귀는 전통적인 구매 보유 전략보다 우수한 성과를 내고 연간 수익률이 평형하여 장기 투자에 적합하다.
단순하고, 변수 설정이 유연하며, 주류 거래소 플랫폼에서 실제 적용하기 쉽다.
DCA 구매는 제한되어 있으며, 장기적인 경기 하락으로 인해 손실이 확대될 수 있습니다.
슬라이드 포인트 중지 손실 설정이 잘못되면 수익이 자주 잠겨 있거나 손실이 커질 수 있습니다.
거래 비용은 수익에 영향을 미칩니다. 높은 슬라이드 포인트 중지 손실 설정은 거래 횟수를 증가시킵니다.
충분한 자금이 필요한 DCA의 자주 구매를 지원하기 위해. 초기 자금이 부족하면 충분한 구매가 이루어지지 않을 수 있습니다.
부동 슬라이드 스톱로스를 설정할 수 있으며, 이익이 일정 비율에 도달했을 때 슬라이드 스톱을 점차적으로 줄일 수 있다.
평평선 지표와 결합하여 핵심지원점 근처에서 더 많은 지분을 구매하십시오.
재균형 메커니즘에 가입하여 총자산에 따라 DCA 매입 금액을 조정합니다.
최적화 매개 변수 설정, 다른 지주주기에서의 수익률 테스트.
이 전략은 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