이 전략은 트렌드 식별 및 리스크 관리 기능을 향상시키기 위해 ATR 대역과 결합된 변수 지수 동적 평균 (VIDYA) 을 기반으로하는 트렌드 추적 거래 시스템입니다. 이 전략은 트렌드 추적 기능을 유지하고 시장 반전 신호를 캡처하는 동안 시장 변동성에 대한 반응을 동적으로 조정합니다. 시스템은 VIDYA를 핵심 지표로 사용하고 동적 스톱-로스 배치에 ATR 대역을 사용합니다.
핵심 원리는 트렌드 식별을 위해 VIDYA의 동적 특성을 활용하는 데 있습니다. VIDYA는 모멘텀 계산을 통해 이동 평균 무게를 조정하여 다양한 시장 조건에서 다른 민감도를 제공합니다.
이 전략은 VIDYA와 ATR을 결합하여 동적 트렌드 추적 및 리스크 통제를 달성합니다. 그것의 핵심 강점은 트렌드 추적 기능을 유지하면서 시장 변동성에 적응하고 역전 기회를 포착하는 데 있습니다. 특정 시장 조건에서 위험에 직면 할 수 있지만 전략은 적절한 매개 변수 최적화 및 리스크 관리 조치를 통해 실용적 가치를 유지합니다. 투자자는 리스크 제어, 적절한 매개 변수 설정 및 실시간 거래에서 시장 조건에 따라 적절한 전략 조정에 집중해야합니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-11 08:00:00 period: 1d basePeriod: 1d 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/ // © PakunFX //@version=5 strategy("VIDYA Auto-Trading(Reversal Logic)", overlay=true) // INPUTS ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― int vidya_length = input.int(10, "VIDYA Length") int vidya_momentum = input.int(20, "VIDYA Momentum") float band_distance = input.float(2, "Distance factor for upper/lower bands", step = 0.1) float source = input.source(close, "Source") color up_trend_color = input(#17dfad, "+") color down_trend_color = input(#dd326b, "-") bool shadow = input.bool(true, "Shadow") // Define VIDYA (Variable Index Dynamic Average) function vidya_calc(src, vidya_length, vidya_momentum) => float momentum = ta.change(src) float sum_pos_momentum = math.sum((momentum >= 0) ? momentum : 0.0, vidya_momentum) float sum_neg_momentum = math.sum((momentum >= 0) ? 0.0 : -momentum, vidya_momentum) float abs_cmo = math.abs(100 * (sum_pos_momentum - sum_neg_momentum) / (sum_pos_momentum + sum_neg_momentum)) float alpha = 2 / (vidya_length + 1) var float vidya_value = 0.0 vidya_value := alpha * abs_cmo / 100 * src + (1 - alpha * abs_cmo / 100) * nz(vidya_value[1]) ta.sma(vidya_value, 15) // Calculate VIDYA float vidya_value = vidya_calc(source, vidya_length, vidya_momentum) // Calculate upper and lower bands float atr_value = ta.atr(200) float upper_band = vidya_value + atr_value * band_distance float lower_band = vidya_value - atr_value * band_distance // Detect trend direction bool is_trend_up = na if ta.crossover(source, upper_band) is_trend_up := true if ta.crossunder(source, lower_band) is_trend_up := false // Smooth the trend line float smoothed_value = na if is_trend_up smoothed_value := lower_band if not is_trend_up smoothed_value := upper_band // Detect trend change bool trend_cross_up = ta.crossover(source, upper_band) bool trend_cross_down = ta.crossunder(source, lower_band) // ENTRY & EXIT ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― // Long logic: Enter long when down arrow appears and exit when up arrow appears if trend_cross_up strategy.close("Sell") // Close short position if any strategy.entry("Buy", strategy.long) if trend_cross_down strategy.close("Buy") // Close long position if any strategy.entry("Sell", strategy.short)