
Chiến lược này là hệ thống giao dịch theo xu hướng tiên tiến dựa trên chỉ báo Supertrend, kết hợp nhiều cơ chế xác nhận tín hiệu và quản lý vị thế năng động. Cốt lõi của chiến lược này là tính toán đường Supertrend thông qua ATR (phạm vi thực trung bình) và tạo ra các tín hiệu giao dịch dựa trên xu hướng giá và cửa sổ thời gian nắm giữ để nắm bắt thông minh xu hướng thị trường.
Chiến lược này sử dụng cơ chế lọc tín hiệu ba lớp:
Về mặt quản lý vốn, chiến lược sử dụng 15% vốn chủ sở hữu tài khoản làm khối lượng giao dịch duy nhất. Kiểm soát vị thế bảo thủ này giúp quản lý rủi ro.
Đây là chiến lược theo dõi xu hướng có cấu trúc hoàn chỉnh và logic chặt chẽ. Nó có giá trị ứng dụng thực tế tốt thông qua nhiều cơ chế xác nhận tín hiệu và hệ thống quản lý rủi ro hoàn chỉnh. Chiến lược này có khả năng mở rộng cao và tính ổn định cũng như lợi nhuận của nó có thể được cải thiện hơn nữa thông qua các hướng tối ưu hóa được đề xuất.
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supertrend Strategy", overlay=true)
atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step=0.01)
// Compute supertrend values
[supertrendValue, supertrendDirection] = ta.supertrend(factor, atrPeriod)
var float direction = na
if not na(supertrendDirection[1]) and supertrendDirection[1] != supertrendDirection
direction := supertrendDirection > 0 ? 1 : -1
// Variables to track conditions
var int lastShortTime = na
var int lastLongTime = na
// Detecting short and long entries
if direction == -1
strategy.entry("My Short Entry Id", strategy.short)
lastShortTime := bar_index
if direction == 1
strategy.entry("My Long Entry Id", strategy.long)
lastLongTime := bar_index
// Custom signal logic
bool bullishSignal = false
bool bearishSignal = false
// Define bullish signal conditions
if not na(lastShortTime) and (bar_index - lastShortTime >= 15 and bar_index - lastShortTime <= 19)
if close > open and close[1] > open[1] and close[2] > open[2]
bullishSignal := true
// Define bearish signal conditions
if not na(lastLongTime) and (bar_index - lastLongTime >= 15 and bar_index - lastLongTime <= 19)
if close < open and close[1] < open[1] and close[2] < open[2]
bearishSignal := true
// Plot signals
if bullishSignal
strategy.entry("Bullish Upward Signal", strategy.long)
label.new(bar_index, close, text="Bullish", style=label.style_circle, color=color.green, textcolor=color.white)
if bearishSignal
strategy.entry("Bearish Downward Signal", strategy.short)
label.new(bar_index, close, text="Bearish", style=label.style_circle, color=color.red, textcolor=color.white)
// Optionally plot the strategy equity
//plot(strategy.equity, title="Equity", color=color.red, linewidth=2, style=plot.style_areabr)