Chiến lược này tính toán khối lượng giao dịch cao nhất và thấp nhất trong một khoảng thời gian gần đây nhất định để hình thành một phạm vi biến động thích nghi. Khi khối lượng giao dịch của chu kỳ hiện tại vượt qua phạm vi này, các tín hiệu giao dịch được tạo ra.
Lý thuyết cốt lõi là tính toán các giá trị cao nhất và thấp nhất của khối lượng giao dịch dương và âm trong các chu kỳ N gần đây nhất để tạo thành một phạm vi biến động thích nghi. Xác định xem có đột phá xảy ra trong giai đoạn hiện tại dựa trên phạm vi này trong khi xem xét tín hiệu đường Yin Yang để hoàn thành phán quyết.
Quá trình tính toán cụ thể là:
Những lợi thế chính của chiến lược này là:
Chiến lược này cũng có một số rủi ro:
Điều chỉnh các tham số chu kỳ và kết hợp các chỉ số khác để lọc có thể tối ưu hóa.
Chiến lược có thể được tối ưu hóa theo nhiều cách:
Chiến lược này nói chung là đơn giản và thực tế. Bằng cách kết hợp phân tích giá phạm vi thích ứng và khối lượng, nó có thể nắm bắt hiệu quả các thị trường bùng nổ một mặt. Tuy nhiên, cũng có một số rủi ro về tín hiệu sai, đòi hỏi phải điều chỉnh tham số thích hợp và các công cụ bổ sung trước khi nó có thể đạt được tác động tối đa.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © EvoCrypto //@version=4 strategy("Ranged Volume Strategy - evo", shorttitle="Ranged Volume", format=format.volume) // INPUTS { Range_Length = input(5, title="Range Length", minval=1) Heikin_Ashi = input(true, title="Heikin Ashi Colors") Display_Bars = input(true, title="Show Bar Colors") Display_Break = input(true, title="Show Break-Out") Display_Range = input(true, title="Show Range") // } // SETTINGS { Close = Heikin_Ashi ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close Open = Heikin_Ashi ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open Positive = volume Negative = -volume Highest = highest(volume, Range_Length) Lowest = lowest(-volume, Range_Length) Up = Highest > Highest[1] and Close > Open Dn = Highest > Highest[1] and Close < Open Volume_Color = Display_Break and Up ? color.new(#ffeb3b, 0) : Display_Break and Dn ? color.new(#f44336, 0) : Close > Open ? color.new(#00c0ff, 60) : Close < Open ? color.new(#000000, 60) : na // } //PLOTS { plot(Positive, title="Positive Volume", color=Volume_Color, style=plot.style_histogram, linewidth=4) plot(Negative, title="Negative Volume", color=Volume_Color, style=plot.style_histogram, linewidth=4) plot(Display_Range ? Highest : na, title="Highest", color=color.new(#000000, 0), style=plot.style_line, linewidth=2) plot(Display_Range ? Lowest : na, title="Lowest", color=color.new(#000000, 0), style=plot.style_line, linewidth=2) barcolor(Display_Bars ? Volume_Color : na) // } if (Up) strategy.entry("Long Entry", strategy.long) if (Dn) strategy.entry("Short Entry", strategy.short)