
이 전략은 혁신적인 트렌드 추적 거래 시스템으로, 시장의 트렌드를 식별하기 위해 이중 인덱스 평준화 기술을 사용합니다. 이 시스템은 가격 데이터를 특수 인덱스 평준화 처리하여 시장의 단기 및 장기 이동을 포착하는 두 가지 트렌드 라인을 생성합니다. 이 시스템은 스톱 스톱 손실 설정 및 유연한 위치 관리 기능을 포함한 전체 위험 관리 모듈을 통합합니다.
이 전략의 핵심은 고유한 쌍방향 지수 평형 알고리즘이다. 첫째, 이 시스템은 종식 가격에 중점을 두며, 계산 방법은 ((최고 가격 + 최저 가격 + 2*마감 가격) / 4로, 시장 소음의 영향을 줄일 수 있습니다. 그리고 사용자 정의 지수 평준화 함수를 통해 각각 9주기 및 30주기 평준화 곡선을 계산합니다. 단기 곡선이 장기 곡선을 통과하면 거래 신호가 생성됩니다. 상위 횡단은 다중 신호를 생성하고 하위 횡단은 빈 신호를 생성합니다. 시스템에는 또한 백분율 기반의 포지션 관리 시스템이 포함되어 있으며, 기본으로 계좌의 100%의 자금을 사용하여 거래합니다.
이것은 합리적이고 논리적으로 설계된 트렌드 추적 시스템이다. 이중 지수 평준화 기술과 완전한 위험 관리 시스템을 통해 이 전략은 트렌드 시장에서 좋은 성능을 발휘할 수 있다. 그러나 사용자는 자신의 위험 수용 능력에 따라 포지션 크기를 조정할 필요가 있으며, 실물 거래 전에 충분한 재검토를 수행하는 것이 좋습니다.
/*backtest
start: 2024-02-10 00:00:00
end: 2025-02-08 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Dynamic Trend Navigator AI [CodingView]", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity , default_qty_value=200 )
// ==================================================================================================
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © CodingView_23
//
// Script Name: Dynamic Trend Navigator
// Developed by: theCodingView Team
// Contact: [email protected]
// Website: www.theCodingView.com
//
// Description: Implements an adaptive trend-following strategy using proprietary smoothing algorithms.
// Features include:
// - Dual timeframe trend analysis
// - Custom exponential smoothing technique
// - Integrated risk management (profit targets & stop-loss)
// - Visual trend direction indicators
// ==================================================================================================
// ====== Enhanced Input Configuration ======
primaryLookbackWindow = input.int(9, "Primary Trend Window", minval=2)
secondaryLookbackWindow = input.int(30, "Secondary Trend Window", minval=5)
// ====== Custom Exponential Smoothing Implementation ======
customSmoothingFactor(periods) =>
smoothingWeight = 2.0 / (periods + 1)
smoothingWeight
adaptivePricePosition(priceSource, lookback) =>
weightedSum = 0.0
smoothingCoefficient = customSmoothingFactor(lookback)
cumulativeWeight = 0.0
for iteration = 0 to lookback - 1 by 1
historicalWeight = math.pow(1 - smoothingCoefficient, iteration)
weightedSum := weightedSum + priceSource[iteration] * historicalWeight
cumulativeWeight := cumulativeWeight + historicalWeight
weightedSum / cumulativeWeight
// ====== Price Transformation Pipeline ======
modifiedClose = (high + low + close * 2) / 4
smoothedSeries1 = adaptivePricePosition(modifiedClose, primaryLookbackWindow)
smoothedSeries2 = adaptivePricePosition(modifiedClose, secondaryLookbackWindow)
// ====== Signal Detection System ======
trendDirectionUp = smoothedSeries1 > smoothedSeries2 and smoothedSeries1[1] <= smoothedSeries2[1]
trendDirectionDown = smoothedSeries1 < smoothedSeries2 and smoothedSeries1[1] >= smoothedSeries2[1]
// ====== Visual Representation Module ======
plot(smoothedSeries1, "Dynamic Trend Line", #4CAF50, 2)
plot(smoothedSeries2, "Market Phase Reference", #F44336, 2)
// ====== Risk Management Configuration ======
enableRiskParameters = input.bool(true, "Activate Risk Controls")
profitTargetUnits = input.float(30, "Profit Target Points")
lossLimitUnits = input.float(30, "Stop-Loss Points")
// ====== Position Management Logic ======
var float entryPrice = na
var float profitTarget = na
var float stopLoss = na
// ====== Long Position Logic ======
if trendDirectionUp
strategy.close("Short", comment="Short Close")
strategy.entry("Long", strategy.long)
entryPrice := close
profitTarget := close + profitTargetUnits
stopLoss := close - lossLimitUnits
if enableRiskParameters
strategy.exit("Long Exit", "Long", limit=profitTarget, stop=stopLoss)
// ====== Short Position Logic ======
if trendDirectionDown
strategy.close("Long", comment="Long Close")
strategy.entry("Short", strategy.short)
entryPrice := close
profitTarget := close - profitTargetUnits
stopLoss := close + lossLimitUnits
if enableRiskParameters
strategy.exit("Short Exit", "Short", limit=profitTarget, stop=stopLoss)
// ====== Visual Signals ======
plotshape(trendDirectionUp, "Bullish", shape.labelup, location.belowbar, #00C853, text="▲", textcolor=color.white)
plotshape(trendDirectionDown, "Bearish", shape.labeldown, location.abovebar, #D50000, text="▼", textcolor=color.white)
// ====== Branding Module ======
var brandingTable = table.new(position.bottom_right, 1, 1)
if barstate.islast
table.cell(brandingTable, 0, 0, "Trading System v2.0", text_color=color.new(#607D8B, 50))