Strategi ini adalah sistem perdagangan trend-mengikuti berdasarkan Purata Dinamik Indeks Berubah (VIDYA), digabungkan dengan jalur ATR untuk meningkatkan pengenalan trend dan keupayaan pengurusan risiko. Strategi ini secara dinamik menyesuaikan tindak balasnya terhadap turun naik pasaran sambil mengekalkan keupayaan trend-mengikuti dan menangkap isyarat pembalikan pasaran. Sistem ini menggunakan VIDYA sebagai penunjuk utamanya dan jalur ATR untuk penempatan stop-loss dinamik.
Prinsip terasnya terletak pada penggunaan ciri dinamik VIDYA untuk pengenalan trend. VIDYA menyesuaikan berat purata bergerak melalui pengiraan momentum, memberikan kepekaan yang berbeza dalam pelbagai keadaan pasaran:
Strategi ini mencapai penjejakan trend dinamik dan kawalan risiko dengan menggabungkan VIDYA dan ATR. Kekuatannya utama terletak pada penyesuaian dengan turun naik pasaran sambil mengekalkan keupayaan mengikuti trend dan menangkap peluang pembalikan. Walaupun ia mungkin menghadapi risiko dalam keadaan pasaran tertentu, strategi ini mengekalkan nilai praktikal melalui pengoptimuman parameter yang betul dan langkah pengurusan risiko. Pelabur harus memberi tumpuan kepada kawalan risiko, tetapan parameter yang sesuai, dan penyesuaian strategi tepat pada masanya berdasarkan keadaan pasaran 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)