
지능형 점진적 가격 포괄 네트워크 라인 다이내믹 가저 전략은 이동 평균 라인 포괄 네트워크 라인 기반의 긴 라인 거래 전략으로, 가격이 하향 포괄 네트워크 라인 아래로 떨어질 때 구매하고, 단계적으로 위험을 통제합니다. 이 전략은 최대 8 개의 구매를 지원하며, 구매 사이에 냉각 기간을 설정하고, 평균 입시 가격에 따라 스톱을 설정하거나 위험 제어에 따라 스톱을 설정합니다. 이 전략은 재측정할 때 거래 범위를 최근 365일로 제한하여 더 통제 가능한 재측정 결과를 제공합니다.
전략의 핵심 아이디어는 가격 회귀가 이동 평균을 포괄하는 반지대 하향 경로에서 구매하는 것입니다. 이것은 일반적으로 단기 오버셀 지역을 나타냅니다. 그리고 가격 회귀가 상향 경로로 갈 때 이익을 얻고, 합리적인 손실을 설정하여 위험을 제어합니다. 이 전략은 가격 변동 특성을 최대한 활용하여 여러 차례의 대량 구매를 통해 평균 비용을 낮추고, 높은 변동성이있는 시장 환경에서 적합합니다.
이 전략의 핵심은 다음과 같은 몇 가지 핵심 요소에 기반합니다.
이동 평균 포괄 띠 계산:
입학 조건:
출전 조건:
포지션 관리:
트렌드 판단:
점진적 위험 제어: 이 전략은 한 번에 모든 포지션을 구입하는 대신 점진적 인 포지션 방식을 채택하여 출입 위험을 효과적으로 분산시킵니다. 최대 8 번의 포지션 기회를 통해 하향 추세에서 평균 비용을 지속적으로 낮추고 최종 수익률을 높입니다.
자동화된 출입 및 출입: 전략은 명확한 기술 지표 (移動平均包網帶) 를 기반으로 자동으로 입점과 출구 지점을 판단하여 주관적 판단으로 인한 감정적 거래 결정을 줄인다.
유연한 변수 조정: 전략은 포괄 라인 길이, 편향 비율, 스톱 스톱 손실 비율 및 구매 냉각 기간 등과 같은 풍부한 조정 가능한 파라미터를 제공하며, 다양한 시장 환경에 따라 최적화 할 수 있습니다.
트렌드를 감지하는 능력: 전략은 기준선의 방향을 판단하여 트렌드를 식별하고, 상승 추세에서 구매 조건을 적절하게 완화하여 전략의 유연성과 적응력을 향상시킵니다.
변동성 활용: 특히 높은 변동성이 있는 시장에서 적용할 수 있으며, 가격 변동성을 효과적으로 활용하여 포지션과 수익을 창출할 수 있습니다. 변동성이 커질수록 전략의 잠재적 수익도 높아집니다.
추세 반전 위험: 강렬한 하향 추세에서, 가격은 포괄적 인 대역을 계속 뚫을 수 있으며, 이로 인해 여러 번 포지션이 추가 된 후에도 손실이 발생할 수 있습니다.
매개변수 민감도: 전략 성능은 파라미터 설정에 크게 의존하며, 다른 시장 환경에는 다른 파라미터 조합이 필요할 수 있습니다. 잘못된 파라미터 설정은 과도한 거래 또는 놓친 거래 기회를 초래할 수 있습니다.
재정적 필요: 전략이 최대 8번의 구매를 허용하기 때문에, 시장이 계속 하락하면, 여러 번의 상장을 지원할 충분한 자금이 준비되어야 하며, 이는 소액 계좌의 견딜 수 있는 능력 이상일 수 있다.
냉각기 설정 위험: 냉각 기간을 잘못 설정하면 중요한 구매 기회를 놓칠 수 있고, 부적절한 시기에 조기 상장할 수도 있다.
리스크를 설정: 스톱퍼센티지를 너무 높게 설정하면 수익 기회를 놓칠 수 있고, 너무 낮게 설정하면 잠재적인 수익 공간을 제한할 수 있다.
동적 패키지 띠 변수 조정: 시장의 변동성에 따라 자동으로 조정되는 포괄망의 편차 비율을 고려할 수 있으며, 낮은 변동성 시장에서 더 작은 편차를 사용하고 높은 변동성 시장에서 더 큰 편차를 사용합니다. 이것은 다른 시장 환경에 더 잘 적응 할 수 있습니다.
더 복잡한 트렌드 필터를 추가합니다: 현재 전략은 간단한 기준선 방향 판단 트렌드를 사용하며, 더 복잡한 트렌드 지표 (MACD, ADX 등) 를 추가하여 트렌드 판단의 정확성을 높이고, 강렬한 하락 트렌드에서 조기 구매를 피하는 것을 고려할 수 있다.
다이내믹 스틸 스피드 메커니즘: 고정된 퍼센트의 스톱로스를 시장의 변동성에 기반한 동적 조정 메커니즘으로 바꿀 수 있습니다. 예를 들어 ATR에 기반한 스톱로스 레벨을 설정합니다.
자금 관리 최적화: 매번 매입에 고정된 금액이 아닌 동적으로 포지션 할당이 가능합니다. 예를 들어, 처음 매입에 적은 비율의 자금을 사용하여 가격이 계속 떨어지면서 매입 금액을 점차적으로 증가시킬 수 있습니다.
시간 필터를 추가: 시간 기반 필터링 조건을 추가하는 것을 고려하여 시장 활동이 낮은 시간에 거래하는 것을 피하거나 역사적인 통계 자료에 따라 가장 유리한 거래 시간을 식별하십시오.
지능형 점진적 가격 포트 라인 다이내믹 포팅 전략은 기술 분석과 위험 관리를 결합한 체계화된 거래 방법이다. 이 전략은 이동 평균 포트 라인 라인을 통해 잠재적인 구매 기회를 식별하고, 점진적 포팅을 사용하여 평균 비용을 낮추고, 명확한 스톱 손실 규칙을 설정하여 위험을 제어한다.
이 전략은 특히 변동성이 높은 시장에서 적용되며, 가격 변동을 효과적으로 활용하여 수익 기회를 창출할 수 있습니다. 동시에, 매개 변수 최적화 및 추가 필터를 추가함으로써 이 전략에는 많은 개선의 여지가 있습니다. 그러나, 사용자는 전략의 위험에 주의를 기울여야합니다.
전체적으로, 이 전략은 트렌드 추적과 역전 거래의 요소를 결합한 체계화된 거래 프레임워크를 제공하며, 명확한 규칙을 통해 감정적 인 결정을 줄이고, 규율된 거래 습관을 기르는 데 도움이됩니다.
/*backtest
start: 2024-05-14 00:00:00
end: 2025-05-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("SmartScale Envelope DCA",
overlay=true,
pyramiding=8,
default_qty_type=strategy.cash,
default_qty_value=25, // Order size = $25 CAD
initial_capital=200, // Initial capital = $200 CAD
currency=currency.CAD) // Base currency = CAD
// === Inputs
len = input.int(13, title="Envelope Length", minval=1)
percent = input.float(6.6, title="Envelope % Offset", step=0.1) / 100
src = input(close, title="Source")
exponential = input(false)
stopLossPctInput = input.float(15.0, title="Stop Loss %", minval=0.1, step=0.1)
takeProfitPctInput = input.float(5.0, title="Take Profit % from Avg Entry", minval=0.1, step=0.1)
cooldown = input.int(7, title="Candles Between Buys") // moved to bottom
stopLossPct = stopLossPctInput / 100
takeProfitPct = takeProfitPctInput / 100
maxBuys = 8 // Hardcoded max buy-ins
// === Envelope Calculation
basis = exponential ? ta.ema(src, len) : ta.sma(src, len)
upper = basis * (1 + percent)
lower = basis * (1 - percent)
// === Limit Backtest to Last 365 Days
startDate = timestamp("GMT-5", year(timenow), month(timenow), dayofmonth(timenow)) - 365 * 24 * 60 * 60 * 1000
inDateRange = time >= startDate
// === State Tracking
var float avgEntryPrice = na
var float lastBuyPrice = na
var int buyCount = 0
var int lastBuyBar = na
// === Trend Detection
isUptrend = basis > basis[1]
// === Entry Conditions
lowBelowLower = low < lower
cooldownPassed = na(lastBuyBar) or (bar_index - lastBuyBar >= cooldown)
belowAvgEntry = na(avgEntryPrice) or close < avgEntryPrice
lowerThanLastBuy = na(lastBuyPrice) or close < lastBuyPrice
allowBuyIn = (belowAvgEntry and lowerThanLastBuy) or isUptrend
highAboveUpper = high > upper
// === Exit Conditions
sellCondition = not na(avgEntryPrice) and close >= avgEntryPrice * (1 + takeProfitPct)
stopLossTriggered = not na(avgEntryPrice) and close <= avgEntryPrice * (1 - stopLossPct)
// === Buy Logic
if inDateRange and lowBelowLower and cooldownPassed and buyCount < maxBuys and allowBuyIn and (na(lastBuyPrice) or close <= lastBuyPrice)
buyCount += 1
strategy.entry("Buy in " + str.tostring(buyCount), strategy.long)
lastBuyBar := bar_index
lastBuyPrice := close
avgEntryPrice := na(avgEntryPrice) ? close : (avgEntryPrice * (buyCount - 1) + close) / buyCount
// === Sell Logic
if strategy.position_size > 0 and highAboveUpper and sellCondition
strategy.close_all(comment="Take Profit")
avgEntryPrice := na
buyCount := 0
lastBuyBar := na
lastBuyPrice := na
// === Stop Loss Logic
if strategy.position_size > 0 and stopLossTriggered
strategy.close_all(comment="Stop Loss Hit")
avgEntryPrice := na
buyCount := 0
lastBuyBar := na
lastBuyPrice := na
// === Plot Envelope
plot(basis, "Basis", color=color.orange)
u = plot(upper, "Upper", color=color.blue)
l = plot(lower, "Lower", color=color.blue)
fill(u, l, color=color.rgb(33, 150, 243, 95), title="Envelope Background")
// === Plot Avg Entry Price
plot(strategy.position_size > 0 and not na(avgEntryPrice) ? avgEntryPrice : na,
title="Avg Entry Price",
color=color.rgb(173, 195, 226),
linewidth=2,
style=plot.style_line)