Chiến lược siêu xu hướng cho giao dịch Ethereum

Tác giả:ChaoZhang, Ngày: 2024-01-08 14:35:37
Tags:

img

Tổng quan

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 logic

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.

  1. Đường dừng lỗ xu hướng tăng để giữ các vị trí dài trong xu hướng tăng;
  2. Đường dừng lỗ xu hướng giảm để giữ các vị trí ngắn trong xu hướng giảm.

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ỗ.

Ưu điểm

Đâ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:

  1. Sử dụng chỉ số SuperTrend để xác định hướng xu hướng một cách đáng tin cậy;
  2. Áp dụng ATR stop loss thích nghi để kiểm soát rủi ro một cách hiệu quả;
  3. Logic chiến lược đơn giản và rõ ràng, dễ hiểu và sửa đổi;
  4. Lợi nhuận trong thị trường tiền điện tử biến động cao.

Rủi ro

Ngoài ra còn có một số rủi ro với chiến lược này:

  1. Có khả năng chỉ số SuperTrend đánh giá sai, có thể gây ra tổn thất không cần thiết;
  2. ATR stop loss có thể quá mạnh, bị dừng bởi sự đảo ngược giá;
  3. Sự biến động cao trên thị trường tiền điện tử làm tăng khả năng dừng lỗ bị tấn công;
  4. Phí giao dịch cao hơn trên một số sàn giao dịch ảnh hưởng đến lợi nhuận cuối cùng.

Để 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.

Hướng dẫn cải thiện

Có chỗ cải thiện thêm:

  1. Đưa ra nhiều chỉ số hơn để cải thiện độ chính xác tín hiệu;
  2. Nghiên cứu các giá trị tối ưu cho chiều dài và hệ số ATR;
  3. Thực hiện định giá vị trí năng động dựa trên tỷ lệ rủi ro-lợi nhuận;
  4. Kiểm tra hiệu quả chiến lược trên nhiều cặp giao dịch tiền điện tử hơn.

Kết luận

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")
    

Thêm nữa