
Chiến lược này dựa trên độ lệch của đường trung bình di chuyển đơn giản (SMA) để xác định xu hướng tăng và mở nhiều vị trí khi đáp ứng các điều kiện cụ thể. Đồng thời, giới thiệu một cơ chế tracking stop loss để bảo vệ lợi nhuận bằng cách điều chỉnh giá dừng lỗ một cách động. Ngoài ra, chiến lược này cũng đặt ra các điều kiện để tái nhập cảnh sau khi dừng lỗ để ngăn chặn việc xây dựng lại vị trí khi giá quá cao. Với các tính năng này, chiến lược có thể nắm bắt xu hướng tăng hiệu quả, kiểm soát rủi ro và thực hiện giao dịch có kỷ luật.
Chiến lược này sử dụng các cơ chế như theo dõi xu hướng SMA, theo dõi dừng lỗ và tái nhập kỷ luật để kiểm soát rủi ro trong khi nắm bắt xu hướng tăng. Các phương pháp như thiết lập tham số tối ưu hóa, tăng cường quản lý rủi ro, hỗ trợ giao dịch hai chiều và xác nhận khung thời gian đa dạng có thể tiếp tục nâng cao khả năng thích ứng và sức khỏe của chiến lược.
/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MA Incline Strategy with Optional Trailing Stop-Loss", overlay=true, calc_on_every_tick=true)
// Input parameters
windowSize = input.int(20, title="Window Size")
maLength = input.int(150, title="Moving Average Length")
minSlope = input.float(0.1, title="Minimum Slope")
useTrailingStop = input.bool(true, title="Use Trailing Stop-Loss")
trailingStopPercentage = input.float(2.8, title="Trailing Stop Percentage (%)") / 100
// Calculate the moving average
ma = ta.sma(close, maLength)
// Calculate the slope of the moving average over the window size
previousMa = ta.sma(close[windowSize], maLength)
slopeMa = (ma - previousMa) / windowSize
// Check conditions
isAboveMinSlope = slopeMa > minSlope
isAboveMa = close > ma
// Buy condition
buyCondition = isAboveMinSlope and isAboveMa
// Execute strategy
if (buyCondition and strategy.opentrades == 0)
strategy.entry("Long", strategy.long)
// Trailing stop-loss (optional)
if (strategy.opentrades == 1 and useTrailingStop and isAboveMa)
// Calculate the trailing stop price
trailPrice = close * (1 - trailingStopPercentage)
// Use the built-in strategy.exit function with the trailing stop
strategy.exit("Trail Stop", "Long", stop=trailPrice)
// Exit condition
sellCondition = ta.crossover(ma, close)
if (sellCondition and strategy.opentrades == 1)
strategy.close("Long")