Chiến lược được đặt tên là
Cốt lõi của chiến lược này dựa trên chỉ số siêu xu hướng để đánh giá hướng xu hướng hiện tại. Chỉ số siêu xu hướng tính toán các dải trên và dưới dựa trên phạm vi trung bình (ATR). Khi giá vượt qua dải trên, đó là tín hiệu tăng, và khi giá vượt qua dải dưới, đó là tín hiệu giảm.
Khi chỉ số siêu xu hướng xác định xu hướng tăng, nếu ngọn nến là một cơ thể màu đỏ (khép dưới mở), đi dài. Khi chỉ số siêu xu hướng xác định xu hướng giảm, nếu ngọn nến là một cơ thể màu xanh lá cây (khép trên mở), đi ngắn. Điều này đạt được xu hướng sau khi giao dịch đột phá đà.
Chiến lược này kết hợp đánh giá xu hướng và đặc điểm động lực để lọc hiệu quả các đột phá sai và tăng tính hợp lệ của các tín hiệu giao dịch.
Những lợi thế chính được tóm tắt như sau:
Những rủi ro chính của chiến lược này là:
Các biện pháp đối phó là:
Chiến lược này có thể được tối ưu hóa trong các khía cạnh sau:
Nói chung, chiến lược này rất phù hợp cho các vị trí trung hạn và ngắn hạn. Bằng cách kết hợp phán đoán xu hướng và động lực đột phá, nó có thể lọc hiệu quả tiếng ồn và cải thiện tỷ lệ thắng. Đồng thời, vẫn còn chỗ cho tối ưu hóa tham số để có được hiệu suất chiến lược tốt hơn.
/*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)