Strategi purata bergerak berganda Super Trend adalah strategi perdagangan kuantitatif berdasarkan penunjuk Super Trend dan purata bergerak mudah. Strategi ini menggunakan penunjuk Super Trend untuk menentukan arah trend pasaran, dan kemudian menggabungkan purata bergerak mudah 200 hari untuk menapis, membuka kedudukan panjang dan pendek di sepanjang arah trend utama.
Strategi ini menggunakan dua penunjuk:
Super Trend Indicator: Ia mengira rel atas dan bawah berdasarkan ATR turun naik yang sebenar dan pengganda. Apabila harga penutupan lebih tinggi daripada rel atas, ia menunjukkan pandangan menaik. Apabila lebih rendah daripada rel bawah, ia menunjukkan pandangan menurun.
Purata Bergerak Sederhana 200 Hari: Ia mengambil purata aritmetik harga penutupan selama 200 hari yang lalu. Apabila harga penutupan lebih tinggi daripada garis ini, ia mewakili trend menaik utama. Apabila lebih rendah daripada garis ini, ia mewakili trend penurunan utama.
Logik Strategi:
Apabila penunjuk Super Trend memberikan isyarat kenaikan (nilai Super Trend lebih besar daripada 0) dan harga penutupan lebih tinggi daripada MA 200 hari, pergi panjang.
Apabila penunjuk Super Trend memberi isyarat penurunan (nilai Super Trend kurang daripada 0) dan harga penutupan lebih rendah daripada MA 200 hari, pergi pendek.
Tutup kedudukan apabila penunjuk Super Trend memberikan isyarat terbalik terhadap yang sebelumnya.
Stop loss ditetapkan pada 25%.
Strategi ini menggabungkan penunjuk Super Trend untuk menentukan trend jangka pendek dan MA 200 hari untuk menentukan trend jangka panjang, yang secara berkesan dapat menapis pecah palsu, mengurangkan kekerapan dagangan sambil meningkatkan kadar kemenangan.
Risiko utama strategi ini adalah bahawa julat stop loss agak besar. Ia boleh meningkatkan risiko pembubaran paksa dalam situasi leverage yang tinggi. Di samping itu, apabila pasaran terikat julat, penunjuk Super Trend akan menghasilkan isyarat berlebihan, sehingga meningkatkan kos transaksi dan kekerapan perdagangan.
Risiko boleh dikurangkan dengan menyesuaikan tempoh ATR, parameter pengganda dan julat stop loss.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Sesuaikan tempoh ATR dan parameter pengganda untuk mengoptimumkan penunjuk Super Trend.
Cuba penunjuk MA lain seperti EMA dan VIDYA untuk penggantian.
Tambah penunjuk tambahan lain seperti saluran BOLL atau penunjuk KD untuk penapisan isyarat lanjut.
Mengoptimumkan strategi stop loss, seperti memindahkannya ke titik impas atau berhenti dengan tahap jangka masa yang lebih tinggi.
Secara keseluruhan, strategi ini sangat praktikal. Ia mempertimbangkan kedua-dua penilaian trend jangka pendek dan penilaian trend jangka panjang dengan tetapan stop loss yang munasabah. Ia dapat mencapai hasil yang lebih baik melalui penyesuaian parameter dan pengoptimuman, yang bernilai pengesahan dan aplikasi perdagangan sebenar.
/*backtest start: 2023-12-16 00:00:00 end: 2024-01-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/ // © wielkieef //@version=5 strategy("Smart SuperTrend Strategy ", shorttitle="ST Strategy", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.01) // Parametry wskaźnika SuperTrend atrLength = input(10, title="Lenght ATR") factor = input(3.0, title="Mult.") // Parametry dla SMA lengthSMA = input(200, title="Lenght SMA") // Parametry dla Stop Loss sl = input.float(25.0, '% Stop Loss', step=0.1) // Obliczanie ATR atr = ta.atr(atrLength) // Obliczanie podstawowej wartości SuperTrend up = hl2 - (factor * atr) dn = hl2 + (factor * atr) // Obliczanie 200-SMA sma200 = ta.sma(close, lengthSMA) // Inicjalizacja zmiennych var float upLevel = na var float dnLevel = na var int trend = na var int trendWithFilter = na // Logika SuperTrend upLevel := close[1] > upLevel[1] ? math.max(up, upLevel[1]) : up dnLevel := close[1] < dnLevel[1] ? math.min(dn, dnLevel[1]) : dn trend := close > dnLevel[1] ? 1 : close < upLevel[1] ? -1 : nz(trend[1], 1) // Filtr SMA i aktualizacja trendWithFilter trendWithFilter := close > sma200 ? math.max(trend, 0) : math.min(trend, 0) // Logika wejścia longCondition = trend == 1 shortCondition = trend == -1 // Wejście w pozycje if (longCondition) and close > sma200 strategy.entry("Long", strategy.long) if (shortCondition) and close < sma200 strategy.entry("Short", strategy.short) // Warunki zamknięcia pozycji Long_close = trend == -1 and close > sma200 Short_close = trend == 1 and close < sma200 // Zamknięcie pozycji if (Long_close) strategy.close("Long") if (Short_close) strategy.close("Short") // Kolory superTrendu z filtrem sma200 trendColor = trendWithFilter == 1 ? color.green : trendWithFilter == -1 ? color.red : color.blue //ploty plot(trendWithFilter == 1 ? upLevel : trendWithFilter == -1 ? dnLevel : na, color=trendColor, title="SuperTrend") // Stop Loss ( this code is from author RafaelZioni, modified by wielkieef ) per(procent) => strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) // -------------------------------------------------------------------------------------------------------------------- strategy.exit('SL',loss=per(sl)) //by wielkieef