Strategi purata bergerak berganda Super Trend

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

img

Ringkasan

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.

Logika Strategi

Strategi ini menggunakan dua penunjuk:

  1. 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.

  2. 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:

  1. 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.

  2. Apabila penunjuk Super Trend memberi isyarat penurunan (nilai Super Trend kurang daripada 0) dan harga penutupan lebih rendah daripada MA 200 hari, pergi pendek.

  3. Tutup kedudukan apabila penunjuk Super Trend memberikan isyarat terbalik terhadap yang sebelumnya.

  4. Stop loss ditetapkan pada 25%.

Analisis Kelebihan

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.

Analisis Risiko

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.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Sesuaikan tempoh ATR dan parameter pengganda untuk mengoptimumkan penunjuk Super Trend.

  2. Cuba penunjuk MA lain seperti EMA dan VIDYA untuk penggantian.

  3. Tambah penunjuk tambahan lain seperti saluran BOLL atau penunjuk KD untuk penapisan isyarat lanjut.

  4. Mengoptimumkan strategi stop loss, seperti memindahkannya ke titik impas atau berhenti dengan tahap jangka masa yang lebih tinggi.

Ringkasan

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


Lebih lanjut