
Die Strategie ist ein Trend-Tracking-Trading-System, das auf einem dynamischen Volatilitätsindikator (VIDYA) basiert, kombiniert mit ATR-Volatilitäten, um die Trenderkennung und Risikomanagement-Fähigkeit zu verbessern. Die Strategie ist in der Lage, die Reaktionsgeschwindigkeit auf Marktschwankungen durch dynamische Anpassung zu ändern, um die Marktumkehrsignale zeitnah zu erfassen, während die Trend-Tracking-Fähigkeit beibehalten wird.
Im Zentrum der Strategie steht die Nutzung der dynamischen Eigenschaften des VIDA-Indikators zur Identifizierung von Trends. VIDA passt die Gewichtung des Moving Averages dynamisch an, indem es die Dynamikveränderungen berechnet, wodurch es in verschiedenen Marktumgebungen unterschiedliche Empfindlichkeit hat.
Die Strategie ermöglicht die dynamische Verfolgung und Risikokontrolle von Markttrends durch die Kombination von VIDYA und ATR. Ihr zentraler Vorteil liegt in der Fähigkeit, sich an Marktfluktuationen anzupassen, während die Fähigkeit, Trends zu verfolgen, auch die Möglichkeit hat, umkehrende Gelegenheiten rechtzeitig zu erfassen. Obwohl es unter bestimmten Marktbedingungen möglicherweise mit Risiken verbunden ist, hat die Strategie durch vernünftige Parameteroptimierung und Risikomanagementmaßnahmen immer noch einen guten praktischen Wert.
/*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)