Chiến lược này là một hệ thống giao dịch theo xu hướng dựa trên Chỉ số Động lực Trung bình (VIDYA), kết hợp với các băng ATR để tăng cường khả năng xác định xu hướng và quản lý rủi ro. Chiến lược điều chỉnh năng động phản ứng của nó với sự biến động của thị trường trong khi duy trì khả năng theo xu hướng và nắm bắt các tín hiệu đảo ngược thị trường. Hệ thống sử dụng VIDYA làm chỉ số cốt lõi và các băng ATR để đặt dừng lỗ năng động.
Nguyên tắc cốt lõi nằm trong việc sử dụng các đặc điểm năng động của VIDYA để xác định xu hướng. VIDYA điều chỉnh trọng lượng trung bình động thông qua tính toán động lực, cung cấp độ nhạy khác nhau trong các điều kiện thị trường khác nhau:
Chiến lược này đạt được theo dõi xu hướng năng động và kiểm soát rủi ro bằng cách kết hợp VIDYA và ATR. Sức mạnh cốt lõi của nó nằm trong việc thích nghi với biến động thị trường trong khi duy trì khả năng theo xu hướng và nắm bắt cơ hội đảo ngược. Mặc dù nó có thể đối mặt với rủi ro trong một số điều kiện thị trường nhất định, chiến lược duy trì giá trị thực tế thông qua tối ưu hóa tham số và các biện pháp quản lý rủi ro thích hợp. Các nhà đầu tư nên tập trung vào kiểm soát rủi ro, cài đặt tham số thích hợp và điều chỉnh chiến lược kịp thời dựa trên điều kiện thị trường trong giao dịch trực tiếp.
/*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)