Chiến lược Breakout Pullback là một chiến lược theo xu hướng. Nguyên tắc cơ bản của nó là đi dài hoặc ngắn khi giá phá vỡ mức cao hoặc thấp của ngọn nến trước đó và để lợi nhuận tiếp tục chạy sau khi thiết lập Take Profit và Stop Loss.
Lý thuyết cốt lõi của chiến lược này là xác định thời gian nhập khẩu bằng cách đánh giá liệu giá có phá vỡ mức cao hay thấp của ngọn nến trước đó hay không.
Nếu mức cao của ngọn nến hiện tại cao hơn mức cao của ngọn nến trước đó, một tín hiệu dài sẽ được kích hoạt.
Nếu mức thấp của ngọn nến hiện tại thấp hơn mức thấp của ngọn nến trước đó, một tín hiệu ngắn sẽ được kích hoạt.
Sau khi nhận được tín hiệu dài hoặc ngắn, hãy nhập vào vị trí ngay lập tức. Sau khi nhập vào vị trí, đặt lợi nhuận lấy 50 pips và dừng lỗ lên 100 pips.
Khi lỗ lớn hơn hoặc bằng các pips dừng lỗ hoặc lợi nhuận lớn hơn hoặc bằng các pips lấy lợi nhuận, thoát khỏi vị trí một cách tích cực.
Chiến lược rút lui này có những lợi thế sau:
Chiến lược này cũng có một số rủi ro:
Chiến lược có thể được tối ưu hóa thêm trong các khía cạnh sau:
Thêm kiểm tra tính hợp lệ cho sự đột phá giá để tránh sự đột phá sai, chẳng hạn như sử dụng bộ lọc chỉ số và xác nhận khối lượng.
Thêm cơ chế xác định xu hướng để tránh mắc kẹt rủi ro trong các thị trường giới hạn phạm vi.
Tối ưu hóa chiến lược lấy lợi nhuận và dừng lỗ, chẳng hạn như dừng lỗ, di chuyển dừng lỗ sau lợi nhuận, v.v., để tối đa hóa lợi nhuận.
Tối ưu hóa tham số để tìm ra lợi nhuận tối ưu và dừng lỗ.
Nói chung, chiến lược rút lui đột phá này có lợi thế về logic đơn giản, dễ thực hiện và nắm bắt hiệu quả xu hướng bắt đầu. Nó cũng có khả năng kiểm soát tốt rủi ro và giảm. Với tối ưu hóa hơn nữa, nó có thể trở thành một chiến lược lượng rất thực tế.
/*backtest start: 2023-01-25 00:00:00 end: 2024-01-31 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Breakout Strategy", shorttitle="BS", overlay=true) // Input for take profit and stop loss in pips tp_pips = input(50, title="Take Profit (in pips)") sl_pips = input(100, title="Stop Loss (in pips)") // Calculate take profit and stop loss levels in points tp_level = tp_pips * syminfo.mintick sl_level = sl_pips * syminfo.mintick // Function to check if a breakout has occurred breakout(high_or_low) => high_or_low > request.security(syminfo.tickerid, "D", high[1]) ? true : false // Buy condition buy_condition = breakout(high) strategy.entry("Buy", strategy.long, when=buy_condition) // Sell condition sell_condition = breakout(low) strategy.entry("Sell", strategy.short, when=sell_condition) // Take profit and stop loss conditions for Buy tp_buy_condition = strategy.position_avg_price + tp_level sl_buy_condition = strategy.position_avg_price - sl_level strategy.exit("Take Profit/Close Buy", from_entry="Buy", profit=tp_buy_condition, loss=sl_buy_condition) // Take profit and stop loss conditions for Sell tp_sell_condition = strategy.position_avg_price - tp_level sl_sell_condition = strategy.position_avg_price + sl_level strategy.exit("Take Profit/Close Sell", from_entry="Sell", profit=tp_sell_condition, loss=sl_sell_condition)