Super Trend Strategi Rata-rata Bergerak Ganda

Penulis:ChaoZhang, Tanggal: 2024-01-16 15:19:09
Tag:

img

Gambaran umum

Strategi Super Trend Dual Moving Average adalah strategi perdagangan kuantitatif berdasarkan indikator Super Trend dan moving average sederhana. Strategi ini menggunakan indikator Super Trend untuk menentukan arah tren pasar, dan kemudian menggabungkan rata-rata bergerak sederhana 200 hari untuk menyaring, membuka posisi panjang dan pendek di sepanjang arah tren utama.

Logika Strategi

Strategi ini menggunakan dua indikator:

  1. Super Trend Indicator: Ini menghitung rel atas dan bawah berdasarkan ATR volatilitas sejati dan pengganda. Ketika harga penutupan lebih tinggi dari rel atas, ini menunjukkan pandangan bullish. Ketika lebih rendah dari rel bawah, ini menunjukkan pandangan bearish.

  2. 200-Day Simple Moving Average: Ini mengambil rata-rata aritmatika harga penutupan selama 200 hari terakhir. Ketika harga penutupan lebih tinggi dari garis ini, itu mewakili tren bullish utama. Ketika lebih rendah dari garis ini, itu mewakili tren bearish utama.

Logika Strategi:

  1. Ketika indikator Super Trend memberikan sinyal bullish (nilai Super Trend lebih besar dari 0) dan harga penutupan lebih tinggi dari MA 200 hari, pergi panjang.

  2. Ketika indikator Super Trend memberikan sinyal penurunan (nilai Super Trend kurang dari 0) dan harga penutupan lebih rendah dari MA 200 hari, pergi pendek.

  3. Tutup posisi ketika indikator Super Trend memberikan sinyal terbalik terhadap yang sebelumnya.

  4. Stop loss ditetapkan sebesar 25%.

Analisis Keuntungan

Strategi ini menggabungkan indikator Super Trend untuk menentukan tren jangka pendek dan MA 200 hari untuk menentukan tren jangka panjang, yang secara efektif dapat menyaring breakout palsu, mengurangi frekuensi perdagangan sambil meningkatkan tingkat kemenangan.

Analisis Risiko

Risiko utama dari strategi ini adalah bahwa rentang stop loss relatif besar. Hal ini dapat meningkatkan risiko likuidasi paksa dalam situasi leverage tinggi. Selain itu, ketika pasar terikat rentang, indikator Super Trend akan menghasilkan sinyal berlebihan, sehingga meningkatkan biaya transaksi dan frekuensi perdagangan.

Risiko dapat dikurangi dengan menyesuaikan periode ATR, parameter multiplier dan rentang stop loss dengan tepat.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Sesuaikan periode ATR dan parameter multiplier untuk mengoptimalkan indikator Super Trend.

  2. Cobalah indikator MA lainnya seperti EMA dan VIDYA untuk penggantian.

  3. Tambahkan indikator tambahan lainnya seperti saluran BOLL atau indikator KD untuk penyaringan sinyal lebih lanjut.

  4. Mengoptimalkan strategi stop loss, seperti memindahkannya ke titik impas atau trailing stop bersama dengan tingkat timeframe yang lebih tinggi.

Ringkasan

Secara keseluruhan, strategi ini sangat praktis. Ini mempertimbangkan penilaian tren jangka pendek dan penilaian tren jangka panjang dengan pengaturan stop loss yang wajar. Ini dapat mencapai hasil yang lebih baik melalui penyesuaian dan optimalisasi parameter, yang layak verifikasi dan aplikasi perdagangan nyata.


/*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


Lebih banyak