Chiến lược mua đột phá giá và khối lượng là một chiến lược giao dịch được thiết kế để xác định các cơ hội mua bằng cách phát hiện đột phá giá và khối lượng đồng thời trên một phạm vi cụ thể của nến. Chiến lược đầu tiên lấy số lượng nến cụ thể làm cửa sổ kiểm tra cho cả giá và khối lượng. Các giá trị này được sử dụng làm điểm chuẩn để xác định điều kiện đột phá. Một giao dịch được bắt đầu khi cả giá đóng cửa và khối lượng giao dịch vượt quá các giá trị tối đa được quan sát trong cửa sổ đã xác định trước. Giá phải trên một đường trung bình động được chỉ định, phục vụ như là chỉ số xu hướng, đảm bảo rằng tất cả các giao dịch phù hợp với xu hướng thị trường hiện hành.
Chiến lược mua đột phá giá và khối lượng là một chiến lược theo xu hướng phù hợp với các thị trường biến động cao. Bằng cách xem xét cả đột phá giá và khối lượng, và kết hợp SMA dài hạn như một bộ lọc xu hướng, chiến lược này có thể nắm bắt tốt hơn các cơ hội giao dịch ở các thị trường mạnh. Tuy nhiên, chiến lược này có thể hoạt động kém ở các thị trường không có xu hướng rõ ràng hoặc biến động thấp và có thể phải đối mặt với rủi ro giao dịch thường xuyên. Do đó, trong các ứng dụng thực tế, cần phải tối ưu hóa và điều chỉnh chiến lược phù hợp theo các đặc điểm thị trường khác nhau và phong cách giao dịch cá nhân để cải thiện sự ổn định và lợi nhuận của nó.
/*backtest start: 2023-05-11 00:00:00 end: 2024-05-16 00:00:00 period: 1d basePeriod: 1h 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/ // © tradedots //@version=5 strategy("Price and Volume Breakout Buy Strategy [TradeDots]", overlay=true, initial_capital = 10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 70, commission_type = strategy.commission.percent, commission_value = 0.01) input_price_breakout_period = input.int(60, "Price Breakout Period") input_volume_breakout_period = input.int(60, "Volume Breakout Period") input_trendline_legnth = input.int(200, "Trendline Length") input_order_direction = input.string("Long", options = ["Long", "Short", "Long and Short"], title = "Order Direction") price_highest = ta.highest(input_price_breakout_period) price_lowest = ta.lowest(input_price_breakout_period) volume_highest = ta.highest(volume, input_volume_breakout_period) // Long Orders if close > price_highest[1] and volume > volume_highest[1] and close > ta.sma(close, input_trendline_legnth) and strategy.opentrades == 0 and input_order_direction != "Short" strategy.entry("Long", strategy.long) // line.new(bar_index[input_price_breakout_period], price_highest[1], bar_index, price_highest[1], color = #9cff87, width = 2) // label.new(bar_index,low, "🟢 Breakout Buy", style = label.style_label_up, color = #9cff87) // Close when price is below moving average for 5 consecutive days if close < ta.sma(close, input_trendline_legnth) and close[1] < ta.sma(close, input_trendline_legnth) and close[2] < ta.sma(close, input_trendline_legnth) and close[3] < ta.sma(close, input_trendline_legnth) and close[4] < ta.sma(close, input_trendline_legnth) and strategy.opentrades.size(strategy.opentrades - 1) > 0 strategy.close("Long") // label.new(bar_index, high, "🔴 Close Position", style = label.style_label_down, color = #f9396a, textcolor = color.white) // Short Orders if close < price_lowest[1] and volume > volume_highest[1] and close < ta.sma(close, input_trendline_legnth) and strategy.opentrades == 0 and input_order_direction != "Long" strategy.entry("Short", strategy.short) // line.new(bar_index[input_price_breakout_period], price_lowest[1], bar_index, price_lowest[1], color = #f9396a, width = 2) // label.new(bar_index,high , "🔴 Breakout Sell", style = label.style_label_down, color = #f9396a, textcolor = color.white) // Close when price is above moving average for 5 consecutive days if close > ta.sma(close, input_trendline_legnth) and close[1] > ta.sma(close, input_trendline_legnth) and close[2] > ta.sma(close, input_trendline_legnth) and close[3] > ta.sma(close, input_trendline_legnth) and close[4] > ta.sma(close, input_trendline_legnth) and strategy.opentrades.size(strategy.opentrades - 1) < 0 strategy.close("Short") // label.new(bar_index, low, "🟢 Close Position", style = label.style_label_up, color = #9cff87) plot(ta.sma(close, input_trendline_legnth), color = color.white, linewidth = 2) plotcandle(open, high, low, close, title='Candles', color = (close > ta.sma(close, input_trendline_legnth) ? #9cff87 : #f9396a), wickcolor=(close > ta.sma(close, input_trendline_legnth) ? #9cff87 : #f9396a), force_overlay = true)