
Chiến lược này được gọi là chiến lược phá vỡ động lực dựa trên theo dõi xu hướng. Chiến lược này sử dụng chỉ số siêu xu hướng để xác định hướng xu hướng hiện tại và kết hợp với hướng của thực thể K-line để theo dõi xu hướng và thực hiện giao dịch phá vỡ động lực.
Chiến lược này chủ yếu dựa vào chỉ số siêu xu hướng để xác định hướng xu hướng hiện tại. Chỉ số siêu xu hướng kết hợp với bước sóng thực trung bình (ATR) tính trên đường ray và xuống đường ray, báo hiệu lạc quan khi giá phá vỡ đường ray, báo hiệu giảm giá khi giá rơi xuống đường ray.
Khi chỉ số siêu xu hướng được đánh giá là xu hướng tăng, nếu đường K là thực thể màu đỏ ((giá đóng cửa thấp hơn giá mở cửa), hãy làm nhiều; khi chỉ số siêu xu hướng được đánh giá là xu hướng giảm, nếu đường K là thực thể màu xanh lá cây ((giá đóng cửa cao hơn giá mở cửa), hãy làm trống. Như vậy, giao dịch phá vỡ động lực theo dõi xu hướng đã được thực hiện.
Chiến lược này kết hợp sự phán đoán xu hướng và tính năng động lượng, có thể lọc hiệu quả các đột phá giả mạo, tăng hiệu quả của tín hiệu giao dịch. Ngoài ra, theo dõi xu hướng để giao dịch, tránh hoạt động ngược lại, làm tăng đáng kể khả năng kiếm lợi nhuận.
Những ưu điểm được tóm tắt như sau:
Chiến lược này có những rủi ro chính như sau:
Phản ứng như sau:
Chiến lược này có thể được tối ưu hóa theo các hướng sau:
Chiến lược này nói chung rất phù hợp để nắm giữ vị trí ngắn hạn và trung hạn. Kết hợp với tính năng phán đoán xu hướng và động lực đột phá, có thể lọc tiếng ồn hiệu quả, tăng tỷ lệ chiến thắng giao dịch. Đồng thời, chiến lược này cũng có một số thông số tối ưu hóa, có thể đạt được hiệu quả chiến lược tốt hơn bằng cách tối ưu hóa hơn nữa.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy("Noro's SuperTrend Strategy v1.0", shorttitle = "ST str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
cloud = input(25, defval = 25, minval = 5, maxval = 50, title = "cloud, % of ATR")
Factor = input(title = "Super Trend", defval = 3, minval = 1, maxval = 100)
ATR = input(title = "ATR", defval = 7, minval = 1,maxval = 100)
centr = input(true, defval = true, title = "need center of ATR?")
border = input(false, defval = false, title = "need border?")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//Super Trend ATR 1
src = close
Up=hl2-(Factor*atr(ATR))
Dn=hl2+(Factor*atr(ATR))
TUp=close[1]>TUp[1]? max(Up,TUp[1]) : Up
TDown=close[1]<TDown[1]? min(Dn,TDown[1]) : Dn
Trend = close > TDown[1] ? 1: close< TUp[1]? -1: nz(Trend[1],1)
Tsl1 = Trend==1? TUp: TDown
Tsl2 = Trend==1? TDown: TUp
limit = (Tsl1 - Tsl2) / 100 * cloud
upcloud = Tsl1 - limit
dncloud = Tsl2 + limit
//Cloud
linecolor = Trend == 1 ? green : red
centercolor = centr == true ? blue : na
cloudcolor = Trend == 1 ? green : red
cline = (Tsl1 + Tsl2) / 2
P1 = plot(Tsl1, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-1")
P2 = plot(Tsl2, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-2")
P3 = plot(cline, color = centercolor , style = line , linewidth = 1,title = "SuperTrend Center")
P4 = plot(upcloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center+1")
P5 = plot(dncloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center-1")
fill(P1, P4, color = linecolor == red ? red : lime, transp = 50)
fill(P2, P5, color = linecolor == red ? red : lime, transp = 50)
//Signals
up = Trend == 1 and close < open //and low < cline
dn = Trend == -1 and close > open //and high > cline
//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
strategy.entry("Long", strategy.long, needlong ? lot : 0)
if dn
strategy.entry("Short", strategy.short, needshort ? lot : 0)