
Chiến lược này là chiến lược giao dịch lưới tăng vị thế dựa trên mức độ giảm giá và đóng vị thế khi đạt được mục tiêu lợi nhuận cố định. Logic cốt lõi của chiến lược này là mua khi thị trường giảm xuống phạm vi được đặt trước và đóng toàn bộ vị thế khi giá phục hồi để đạt được lợi nhuận mục tiêu và kiếm lợi nhuận bằng cách liên tục lặp lại quá trình này. Chiến lược này đặc biệt phù hợp để nắm bắt cơ hội phục hồi ngắn hạn trong thị trường biến động.
Chiến lược này sử dụng cơ chế tổng hợp của giao dịch lưới và chốt lời theo hướng:
Đây là một chiến lược giao dịch lưới đơn giản nhưng thiết thực, xây dựng các vị thế theo từng đợt theo phạm vi giảm được cài đặt trước và đóng tất cả các vị thế khi đạt được mục tiêu lợi nhuận. Ưu điểm cốt lõi của chiến lược này nằm ở tính chắc chắn khi thực hiện và sự đa dạng hóa rủi ro, nhưng khi sử dụng chiến lược này, cần chú ý đến việc lựa chọn môi trường thị trường và tối ưu hóa các thông số. Vẫn còn nhiều chỗ để tối ưu hóa chiến lược bằng cách thêm lệnh dừng lỗ động, cải thiện quản lý vị thế, v.v. Khi sử dụng trong giao dịch thực tế, bạn nên tiến hành kiểm tra ngược đầy đủ trước và điều chỉnh các thông số dựa trên điều kiện thực tế của thị trường.
/*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, "#.##") + "%")