Chiến lược này dựa trên chỉ số SuperTrend và sử dụng ATR để thiết lập các đường dừng lỗ để kiếm lợi nhuận từ xu hướng mạnh của Ethereum. Nó có thể chạy trên cặp giao dịch ETH / USD trên sàn giao dịch Coinbase.
Chiến lược sử dụng một chỉ số theo xu hướng cổ điển - chỉ số SuperTrend để xác định hướng xu hướng.
Khi giá chuyển từ xu hướng tăng lên xu hướng giảm, mở vị trí ngắn. Khi giá chuyển từ xu hướng giảm sang xu hướng tăng, mở vị trí dài.
Ngoài ra, chiến lược sử dụng chỉ số ATR để điều chỉnh động đường dừng lỗ. Cụ thể, vị trí đường dừng lỗ xu hướng tăng là trung bình của mức cao nhất và thấp nhất trừ ATR nhân một hệ số; vị trí đường dừng lỗ xu hướng giảm là trung bình của mức cao nhất và thấp nhất cộng với ATR nhân một hệ số. Điều này cho phép điều chỉnh mức dừng lỗ dựa trên sự biến động của thị trường.
Sau khi các tín hiệu nhập cảnh được kích hoạt, nếu giá phá vỡ trở lại trên đường dừng lỗ, dừng lại với lỗ.
Đây là một xu hướng tương đối trưởng thành theo chiến lược với những lợi thế sau:
Ngoài ra còn có một số rủi ro với chiến lược này:
Để giảm thiểu các rủi ro trên, hệ số ATR có thể được điều chỉnh hoặc thêm các bộ lọc với các chỉ số khác.
Có chỗ cải thiện thêm:
Nói chung đây là một chiến lược theo xu hướng trưởng thành và đáng tin cậy. Nó sử dụng chỉ số SuperTrend để xác định hướng xu hướng và điều chỉnh dừng lỗ với ATR để kiểm soát rủi ro trong khi kiếm lợi nhuận. Chiến lược hoạt động tốt cho các loại tiền điện tử biến động cao như Ethereum.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SuperTrend Strategy", overlay=true, initial_capital=2e3, process_orders_on_close=true, commission_type=strategy.commission.percent, commission_value=0.1 ) length = input(title="ATR Period", type=input.integer, defval=21) mult = input(title="ATR Multiplier", type=input.float, step=.25, defval=6.2) wicks = input(title="Take Wicks into Account ?", type=input.bool, defval=false) useDate = input(title="Start from Specific Date ?", defval=false) yearStart = input(title="Start Year", defval=2019) monthStart = input(title="Start Month", minval=1, maxval=12, defval=1) dayStart = input(title="Start Day", minval=1, maxval=31, defval=1) startTime = timestamp(yearStart, monthStart, dayStart, 0, 0) startFrom = useDate ? time(timeframe.period) >= startTime : true atr = mult * ta.atr(length) longStop = hl2 - atr longStopPrev = nz(longStop[1], longStop) longStop := (wicks ? low[1] : close[1]) > longStopPrev ? math.max(longStop, longStopPrev) : longStop shortStop = hl2 + atr shortStopPrev = nz(shortStop[1], shortStop) shortStop := (wicks ? high[1] : close[1]) < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and (wicks ? high : close) > shortStopPrev ? 1 : dir == 1 and (wicks ? low : close) < longStopPrev ? -1 : dir longColor = color.green shortColor = color.red plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=2, color=longColor) plotshape(dir == 1 and dir[1] == -1 ? longStop : na, title="Long Start", location=location.absolute, style=shape.circle, size=size.tiny, color=longColor, transp=0) plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=2, color=shortColor) plotshape(dir == -1 and dir[1] == 1 ? shortStop : na, title="Short Start", location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor, transp=0) longCondition = dir[1] == -1 and dir == 1 if longCondition and startFrom strategy.entry("Long", strategy.long, stop=longStop) else strategy.cancel("Long") shortCondition = dir[1] == 1 and dir == -1 if shortCondition and startFrom strategy.entry("Short", strategy.short, stop=shortStop) else strategy.cancel("Short")