Chiến lược này được thiết kế cho một mục nhập vị trí dài với một kích hoạt cụ thể ngày và một cơ chế dừng lỗ cuối cùng để quản lý rủi ro. Nó đặc biệt hữu ích cho các nhà giao dịch muốn tự động hóa các mục nhập của họ dựa trên các ngày lịch cụ thể và quản lý các vị trí của họ bằng một phương pháp kiểm soát rủi ro năng động như dừng lỗ cuối cùng.
Chiến lược đầu tiên lấy đầu vào của các ngày nhập cụ thể, bao gồm cả tháng và ngày, sau đó tính toán dấu thời gian nhập chính xác dựa trên các ngày này.
Vào ngày nhập cảnh, chiến lược sẽ mở một vị trí dài. Đồng thời, nó ghi lại giá cao nhất (highestPrice) và giá dừng lỗ (stopLoss). Giá cao nhất tiếp tục cập nhật theo thời gian, trong khi stopLoss theo sau nó xuống một tỷ lệ phần trăm nhất định.
Nếu giá giảm xuống dưới mức stopLoss, vị trí sẽ được đóng. Nếu không, vị trí vẫn mở, và stopLoss tiếp tục theo sau mức giá cao nhất để khóa lợi nhuận và kiểm soát rủi ro.
Những lợi thế chính của chiến lược này là:
Ngoài ra còn có một số rủi ro:
Những cải tiến có thể:
Các hướng tối ưu hóa có thể:
Chiến lược này cung cấp nhập tự động dựa trên ngày và quản lý rủi ro năng động thông qua việc dừng lỗ. Dễ dàng và trực quan để vận hành, phù hợp với cổ phần dài hạn.
/*backtest start: 2024-01-24 00:00:00 end: 2024-01-31 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Trailing Stop Loss Percent", overlay=true, pyramiding=1) // Input for the specific entry date entryDay = input.int(defval = 1, title = "Entry Day", minval = 1, maxval = 31) entryMonth = input.int(defval = 1, title = "Entry Month", minval = 1, maxval = 12) entryYear = input.int(defval = 2023, title = "Entry Year", minval = 1970) // Calculate the entry date timestamp entryDate = timestamp(entryYear, entryMonth, entryDay, 00, 00) // Trailing Stop Loss Percentage trailStopPercent = input.float(defval = 5.0, title = "Trailing Stop Loss (%)", minval = 0.1) // Entry Condition enterTrade = true // Variables to track the highest price and stop loss level since entry var float highestPrice = na var float stopLoss = na // Update the highest price and stop loss level if strategy.position_size > 0 highestPrice := math.max(highestPrice, high) stopLoss := highestPrice * (1 - trailStopPercent / 100) // Enter the strategy if enterTrade strategy.entry("Long Entry", strategy.long) highestPrice := high stopLoss := highestPrice * (1 - trailStopPercent / 100) // Exit the strategy if the stop loss is hit if strategy.position_size > 0 and low <= stopLoss strategy.close("Long Entry") // Plotting the stop loss level for reference plot(strategy.position_size > 0 ? stopLoss : na, "Trailing Stop Loss", color=color.red)