Đây là một chiến lược theo dõi siêu xu hướng chủ yếu kết hợp các chỉ số siêu xu hướng với các cài đặt tham số khác nhau để đạt được hiệu ứng theo dõi và sử dụng chỉ số lọc để kiểm soát rủi ro. Ý tưởng cốt lõi của chiến lược đơn giản và thực tế, dễ hiểu và phù hợp cho người mới bắt đầu học.
Chiến lược này chủ yếu bao gồm ba nhóm chỉ số siêu xu hướng với các thiết lập tham số khác nhau. Nhóm đầu tiên là chỉ số siêu xu hướng chính sử dụng các tham số mặc định để đánh giá các xu hướng thị trường cơ bản. Nhóm thứ hai là chỉ số siêu xu hướng phó đạt được theo dõi sự thay đổi giá nhạy cảm hơn bằng cách giảm khoảng thời gian ATR và tăng nhân ATR. Nhóm thứ ba là chỉ số siêu xu hướng lọc tăng đúng khoảng thời gian ATR và nhân ATR để lọc các đột phá sai.
Khi siêu xu hướng chính phát ra tín hiệu mua, nếu siêu xu hướng phụ cũng phát ra tín hiệu đồng bộ và hướng siêu xu hướng bộ lọc tăng lên, chiến lược sẽ theo dõi mua. Khi siêu xu hướng chính phát ra tín hiệu bán, nếu siêu xu hướng phụ cũng phát ra tín hiệu đồng bộ và hướng siêu xu hướng bộ lọc giảm xuống, chiến lược sẽ theo dõi bán. Điều này có thể nắm bắt xu hướng chính trong khi sử dụng chỉ số siêu xu hướng phụ linh hoạt để theo dõi các điều chỉnh nhỏ và đạt được bước vào và dừng lỗ kịp thời.
Các biện pháp phòng ngừa rủi ro chính:
Ý tưởng tổng thể của chiến lược này là rõ ràng và đơn giản. Bằng cách phối hợp nhiều nhóm chỉ số siêu xu hướng với các thiết lập tham số khác nhau, nó nhận ra việc theo dõi nhập cảnh và kiểm soát rủi ro. Tín hiệu chiến lược chính xác hơn với hiệu suất trực tiếp tốt. Nó phù hợp cho người mới bắt đầu học, và cũng có thể được sử dụng như một mẫu để kiểm tra và tối ưu hóa các chỉ số và tham số khác nhau. Đây là một chiến lược siêu xu hướng đáng khuyên.
/*backtest start: 2023-11-25 00:00:00 end: 2023-12-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Supertrend TEST 2 Strategy", overlay = true, format=format.price, precision=2) Periods = input(title="ATR Period", type=input.integer, defval=4) src = input(hl2, 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 sPeriods=input(title="ATR Period", type=input.integer, defval=8) sMultiplier=input(title="dop ATR Multiplier", type=input.float, step=0.1, defval=1.5) satr2 = sma(tr, sPeriods) satr= changeATR ? atr(sPeriods) : satr2 ssup=ohlc4-(sMultiplier*satr) ssup1 = nz(ssup[1],ssup) ssup := close[1] > ssup1 ? max(ssup,ssup1) : ssup sdn=ohlc4+(sMultiplier*satr) sdn1 = nz(sdn[1], sdn) sdn := close[1] < sdn1 ? min(sdn, sdn1) : sdn strend = 1 strend := nz(strend[1], strend) strend := strend == -1 and close > sdn1 ? 1 : strend == 1 and close < ssup1 ? -1 : strend sbuySignal = strend == 1 and strend[1] == -1 ssellSignal = strend == -1 and strend[1] == 1 fPeriods=input(title="ATR Period", type=input.integer, defval=10) fMultiplier=input(title="filter ATR Multiplier", type=input.float, step=0.1, defval=5) fatr2 = sma(tr, fPeriods) fatr= changeATR ? atr(fPeriods) : fatr2 fup=ohlc4-(fMultiplier*fatr) fup1 = nz(fup[1],fup) fup := close[1] > fup1 ? max(fup,fup1) : fup fdn=ohlc4+(fMultiplier*fatr) fdn1 = nz(fdn[1], fdn) fdn := close[1] < fdn1 ? min(fdn, fdn1) : fdn ftrend = 1 ftrend := nz(ftrend[1], ftrend) ftrend := ftrend == -1 and close > fdn1 ? 1 : ftrend == 1 and close < fup1 ? -1 : ftrend fbuySignal = ftrend == 1 and ftrend[1] == -1 fsellSignal = ftrend == -1 and ftrend[1] == 1 tcolor=color.new(color.gray,50) fdnPlot = plot(ftrend == 1 ? na : fdn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=tcolor) fupPlot = plot(ftrend == 1 ? fup : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=tcolor) 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 and ftrend==1) or (sbuySignal and trend==1 and ftrend==1)) tp:=close+(close-up)*0.382 strategy.entry("Long", strategy.long, limit=tp, comment=tostring(round(tp))) if ((sellSignal and ftrend==-1) or (ssellSignal and trend==-1 and ftrend==-1)) tp:=close-(dn-close)*0.382 strategy.entry("Short", strategy.short, limit=tp, comment=tostring(round(tp)))