Strategi ini adalah sistem perdagangan yang mengikuti tren berdasarkan Variable Index Dynamic Average (VIDYA), dikombinasikan dengan band ATR untuk meningkatkan kemampuan identifikasi tren dan manajemen risiko. Strategi secara dinamis menyesuaikan tanggapannya terhadap volatilitas pasar sambil mempertahankan kemampuan mengikuti tren dan menangkap sinyal pembalikan pasar. Sistem ini menggunakan VIDYA sebagai indikator inti dan band ATR untuk penempatan stop-loss dinamis.
Prinsip utamanya terletak pada memanfaatkan karakteristik dinamis VIDYA untuk identifikasi tren. VIDYA menyesuaikan bobot rata-rata bergerak melalui perhitungan momentum, memberikan sensitivitas yang berbeda dalam berbagai kondisi pasar:
Strategi ini mencapai pelacakan tren dan pengendalian risiko yang dinamis dengan menggabungkan VIDYA dan ATR. Kekuatannya utama terletak pada beradaptasi dengan volatilitas pasar sambil mempertahankan kemampuan mengikuti tren dan menangkap peluang pembalikan. Meskipun dapat menghadapi risiko dalam kondisi pasar tertentu, strategi ini mempertahankan nilai praktis melalui optimasi parameter yang tepat dan langkah-langkah manajemen risiko. Investor harus fokus pada pengendalian risiko, pengaturan parameter yang tepat, dan penyesuaian strategi yang tepat waktu berdasarkan kondisi pasar dalam perdagangan langsung.
/*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)