Chiến lược giao dịch Supertrend Breakout

Tác giả:ChaoZhang, Ngày: 2024-02-18 14:19:58
Tags:

img

Tổng quan

Chiến lược này được phát triển dựa trên chỉ số Supertrend. Nó kết hợp hành động giá và hướng của kênh Supertrend để đánh giá xu hướng thị trường và tạo ra tín hiệu giao dịch khi hướng kênh thay đổi.

Khi giá vượt qua kênh Supertrend, đi dài; khi giá vượt qua kênh dưới của Supertrend, đi ngắn. Đồng thời, nó có cơ chế dừng lỗ theo dõi xu hướng.

Chiến lược logic

Kênh siêu xu hướng bao gồm một đường ray trên và một đường ray dưới. Khu vực bên trong kênh là khu vực củng cố và khu vực bên ngoài là khu vực xu hướng. Nó sử dụng phạm vi thực tế trung bình nhân một yếu tố để xác định chiều rộng của kênh.

Khi giá vượt qua đường ray trên từ dưới, đó là tín hiệu mua. Điều này có nghĩa là một xu hướng tăng mới đang bắt đầu. Khi giá vượt qua đường ray dưới từ trên, đó là tín hiệu bán. Điều này có nghĩa là một xu hướng giảm mới đang bắt đầu.

Chiến lược này sử dụng chỉ số Supertrend để đánh giá hướng xu hướng chính. Khi hướng kênh thay đổi, đó là khi giá phá vỡ các đường ray kênh, các tín hiệu giao dịch được tạo ra. Sau đó sử dụng dấu hiệu dừng lỗ theo dõi xu hướng để khóa lợi nhuận.

Phân tích lợi thế

Đây là một chiến lược đột phá tương đối đơn giản và trực quan.

  1. Sử dụng các kênh Supertrend để xác định hướng xu hướng chính và tránh giao dịch tiếng ồn.

  2. Đi theo xu hướng, đánh giá các cơ hội dài và ngắn dựa trên mối quan hệ của giá với kênh.

  3. Nó có một cơ chế dừng lỗ rõ ràng để kiểm soát rủi ro hiệu quả.

  4. Phương pháp dừng lỗ là theo dõi xu hướng dừng lỗ, có thể tối đa hóa việc khóa lợi nhuận.

Rủi ro và cải tiến

Ngoài ra còn có một số rủi ro cho chiến lược này, chủ yếu bao gồm:

  1. Cài đặt tham số không chính xác của Supertrend có thể dẫn đến tín hiệu sai.

  2. Các tín hiệu đột phá có thể là tín hiệu đảo ngược ngắn hạn, dẫn đến tổn thất.

  3. Phương pháp dừng lỗ chỉ là theo dõi xu hướng dừng lỗ, có thể dừng lỗ sớm.

Các biện pháp cải thiện tương ứng bao gồm:

  1. Kiểm tra dữ liệu từ các thị trường khác nhau và tối ưu hóa các thông số.

  2. Các tín hiệu lọc kết hợp với các chỉ số khác.

  3. Đánh giá độ tin cậy của tín hiệu đột phá kết hợp với cấu trúc giá.

  4. Tăng lỗ dừng nền để kiểm soát rủi ro hơn nữa.

Tóm lại

Nói chung, chiến lược này là một chiến lược theo xu hướng tương đối đơn giản và trực quan. Nó sử dụng các kênh Supertrend để xác định rõ hướng xu hướng và tạo ra các tín hiệu khi kênh thay đổi hướng. Sau đó sử dụng theo dõi xu hướng dừng lỗ để khóa lợi nhuận.

So với các chỉ số khác, kênh Supertrend có khả năng dung nạp tốt hơn cho biến động giá. Nhưng vẫn còn chỗ cho lợi nhuận cho chiến lược này. Nó có thể được tối ưu hóa về lọc tín hiệu và phương pháp dừng lỗ để cải thiện sự ổn định hơn nữa.


/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Supertrend TEST Strategy", overlay = true, format=format.price, precision=2)

Periods = input(title="ATR Period", type=input.integer, defval=4)
src = input(hlc3, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=4.7)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
tp=close
sl=close

atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green )
plotshape(buySignal and showsignals ? up : na, title="Лонг", text="Лонг", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white )
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red )
plotshape(sellSignal and showsignals ? dn : na, title="Шорт", text="Шорт", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white )
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white



if (strategy.position_size > 0)
	tp:=tp[1]
	sl:=up
	strategy.exit("Long_TP/SL","Long",limit=tp, stop=sl)
	
if (strategy.position_size < 0)
	tp:=tp[1]
	sl:=dn
	strategy.exit("Short_TP/SL","Short",limit=tp, stop=sl)



if buySignal 
	tp:=close+(close-up)*0.382
    strategy.entry("Long", strategy.long,  limit=tp, comment=tostring(round(tp)))
if sellSignal
	tp:=close-(dn-close)*0.382
    strategy.entry("Short", strategy.short, limit=tp, comment=tostring(round(tp)))




Thêm nữa