Chiến lược này là một hệ thống giao dịch lưới mà thêm các vị trí dựa trên giá giảm và đóng các vị trí khi đạt được mục tiêu lợi nhuận cố định. logic cốt lõi là mua khi thị trường giảm xuống một tỷ lệ phần trăm đã được đặt trước, đóng tất cả các vị trí khi giá tăng trở lại lợi nhuận mục tiêu, và tạo ra lợi nhuận bằng cách lặp đi lặp lại thực hiện quá trình này. Chiến lược này đặc biệt phù hợp để nắm bắt sự phục hồi ngắn hạn trong thị trường dao động.
Chiến lược sử dụng một cơ chế kết hợp giao dịch lưới điện và lợi nhuận theo hướng:
Đây là một chiến lược giao dịch lưới đơn giản về mặt cấu trúc nhưng thực tế, xây dựng các vị trí theo lô ở mức giá giảm trước và đóng cửa các vị trí đồng đều khi đạt được mục tiêu lợi nhuận. Ưu điểm chính của chiến lược nằm ở tính chắc chắn thực hiện và đa dạng hóa rủi ro, nhưng việc lựa chọn môi trường thị trường và tối ưu hóa tham số là rất quan trọng trong quá trình thực hiện. Có tiềm năng tối ưu hóa đáng kể thông qua việc thêm stop-loss năng động và cải thiện quản lý vị trí. Đối với giao dịch trực tiếp, nên kiểm tra kỹ lưỡng và điều chỉnh tham số dựa trên điều kiện thị trường thực tế.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Buy Down 5%, Sell at 5% Profit", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1) // Inputs initial_date = input(timestamp("2024-01-01 00:00:00"), title="Initial Purchase Date") profit_target = input.float(5.0, title="Profit Target (%)", minval=0.1) // Target profit percentage rebuy_drop = input.float(5.0, title="Rebuy Drop (%)", minval=0.1) // Drop percentage to rebuy // Variables var float initial_price = na // Initial purchase price var int entries = 0 // Count of entries var float total_profit = 0 // Cumulative profit var bool active_trade = false // Whether an active trade exists // Entry Condition: Buy on or after the initial date if not active_trade initial_price := close strategy.entry("Buy", strategy.long) entries += 1 active_trade := true // Rebuy Condition: Buy if price drops 5% or more from the initial price rebuy_price = initial_price * (1 - rebuy_drop / 100) if active_trade and close <= rebuy_price strategy.entry("Rebuy", strategy.long) entries += 1 // Exit Condition: Sell if the price gives a 5% profit on the initial investment target_price = initial_price * (1 + profit_target / 100) if active_trade and close >= target_price strategy.close_all(comment="Profit Target Hit") active_trade := false total_profit += profit_target // Display information on the chart plotshape(series=close >= target_price, title="Target Hit", style=shape.labelup, location=location.absolute, color=color.green, text="Sell") plotshape(series=close <= rebuy_price, title="Rebuy", style=shape.labeldown, location=location.absolute, color=color.red, text="Rebuy") // Draw statistics on the chart var label stats_label = na if (na(stats_label)) stats_label := label.new(x=bar_index, y=close, text="", style=label.style_none, size=size.small) label.set_xy(stats_label, bar_index, close) label.set_text(stats_label, "Entries: " + str.tostring(entries) + "\nTotal Profit: " + str.tostring(total_profit, "#.##") + "%")