EMA Mempertingkatkan Strategi SuperTrend

Penulis:ChaoZhang, Tarikh: 2023-10-07 10:07:15
Tag:

Ringkasan

Strategi ini menilai arah trend harga dengan membandingkan ATR dan harga, digabungkan dengan penilaian pembantu purata bergerak.

Prinsip Strategi

Langkah utama strategi ini untuk menentukan trend harga adalah:

  1. Mengira ATR N hari terakhir, menggunakan kaedah pengiraan ATR Wilder, yang dapat mencerminkan lebih baik turun naik pasaran semasa.

  2. Mengira jalur atas dan bawah berdasarkan ATR dan pekali atk. Pantai atas = harga - (atk x ATR); Pantai bawah = harga + (atk x ATR). atk biasanya ditetapkan antara 2-3.

  3. Bandingkan harga dengan band atas dan bawah untuk menentukan arah trend. Penembusan harga band atas adalah isyarat kenaikan; Penembusan harga band bawah adalah isyarat penurunan.

  4. Ambil panjang atau pendek apabila isyarat perdagangan berlaku. purata bergerak digunakan di sini untuk menentukan kualiti isyarat.

  5. Tambah strategi stop loss untuk mengawal risiko.

  6. Gunakan penanda warna untuk status strategi untuk membantu penilaian.

Strategi ini memanfaatkan sepenuhnya kelebihan ATR untuk menangkap perubahan trend harga dengan cepat dan mencapai operasi pengambilan yang rendah.

Kelebihan

Kelebihan strategi ini termasuk:

  1. Cepat bertindak balas terhadap perubahan harga. ATR boleh bertindak balas dengan cepat kepada pasaran terkini dan membantu menangkap perubahan trend tepat pada masanya.

  2. Pengurangan kecil. Zon penyangga antara jalur atas dan bawah boleh mengurangkan kebarangkalian pecah stop loss dan pengurangan yang lebih rendah.

  3. Isyarat perdagangan yang jelas. Penembusan Julat adalah isyarat berkualiti tinggi untuk arah panjang dan pendek.

  4. Kebolehsesuaian tinggi. Tempoh ATR dan pengganda boleh disesuaikan untuk menyesuaikan diri dengan persekitaran pasaran yang berbeza.

  5. Visualisasi yang kuat. Alat grafik memaparkan status strategi secara intuitif.

  6. Mudah untuk mengoptimumkan. modul seperti bergerak stop loss, penapis boleh ditambah untuk pengoptimuman lanjut.

Secara umum, strategi ini mempunyai kelebihan yang luar biasa seperti pengeluaran kecil, menjadikannya sangat sesuai untuk strategi trend berikut.

Risiko

Terdapat juga beberapa risiko:

  1. Risiko kesilapan penentuan trend. Isyarat yang salah mungkin berlaku semasa penyatuan harga.

  2. Risiko pilihan titik keluar. Titik kehilangan berhenti perlu ditetapkan dengan munasabah untuk mengelakkan keluar awal.

  3. Risiko pengoptimuman parameter. Tempoh ATR dan pengganda memerlukan ujian berulang dan pengoptimuman, tetapan yang tidak betul akan mempengaruhi prestasi.

  4. Risiko kekerapan dagangan yang tinggi: kekerapan dagangan mungkin terlalu tinggi semasa turun naik pasaran yang melampau.

  5. Risiko prestasi sederhana: prestasi mungkin tidak memuaskan di beberapa pasaran tanpa trend yang jelas.

  6. Penyesuaian untuk risiko perdagangan langsung. Penyesuaian perlu dibuat untuk slippage, komisen dalam perdagangan langsung.

  7. Risiko sistematik: Kawalan risiko sistem keseluruhan harus dipertimbangkan, dan bukannya hanya bergantung pada strategi ini.

Risiko boleh dikawal dengan:

  1. Mengoptimumkan parameter ATR untuk meningkatkan ketepatan.

  2. Menggunakan analisis pelbagai jangka masa untuk menentukan trend.

  3. Mengambil stop loss bergerak untuk mengunci keuntungan dan mengurangkan pengeluaran.

  4. Menambah penapis untuk mengawal kekerapan perdagangan.

  5. Penyesuaian parameter untuk pasaran yang berbeza.

  6. Uji produk yang berbeza untuk mencari senario aplikasi terbaik.

  7. Mengkaji secara komprehensif semua risiko perdagangan dalam perdagangan langsung.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Menambah penapis seperti purata bergerak untuk mengurangkan isyarat yang salah.

  2. Mengoptimumkan parameter ATR dengan menguji tempoh yang berbeza untuk mencari nilai optimum.

  3. Mengoptimumkan parameter pengganda untuk menentukan kepekaan penjanaan isyarat.

  4. Menambah strategi stop loss dinamik berdasarkan ATR atau turun naik.

  5. Menggunakan penunjuk jangka masa yang lebih tinggi untuk analisis untuk menapis isyarat palsu sporadik.

  6. Menggunakan model pembelajaran mesin seperti RNN untuk meningkatkan penilaian isyarat.

  7. Penyesuaian parameter berdasarkan ciri produk. Sebagai contoh, menggunakan tempoh ATR yang lebih pendek untuk stok yang tidak menentu.

  8. Mengoptimumkan titik masuk dengan menggunakan pendekatan menarik balik untuk mencari entri yang lebih baik.

  9. Menggabungkan penunjuk kelantangan untuk menilai kekuatan isyarat.

  10. Menambah strategi mengambil keuntungan berdasarkan penunjuk momentum trend.

Kesimpulan

Secara umum, strategi supertrend ini sangat praktikal dengan kelebihan seperti tindak balas cepat dan pengeluaran kecil. Ini adalah sistem trend berikut yang tipikal. Tetapi risiko seperti kesilapan penilaian dan pengoptimuman parameter harus diperhatikan dalam perdagangan langsung, dan pengurusan risiko yang komprehensif harus dilaksanakan. Pengoptimuman lanjut dapat menjadikan strategi lebih mantap dan menguntungkan di lebih banyak pasaran.


/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic


//@version=4
strategy("SuperTrend STRATEGY", overlay=true)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
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, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
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, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
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
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => true
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when = window())
shortCondition = sellSignal
if (shortCondition)
    strategy.entry("SELL", strategy.short, when = window())
buy1= barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)

//@version=3
//study(title="3 Moving Average Exponential", shorttitle="3 EMA", overlay=true)
//len1 = input(17, minval=1, title="Fast")
//len2 = input(72, minval=1, title="Medium")
len3 = input(305, minval=1, title="Slow")
//src1 = input(close, title="Source Fast")
//src2 = input(close, title="Source Medium")
src3 = input(close, title="Source Slow")
//out1 = ema(src1, len1)
//out2 = ema(src2, len2)
out3 = ema(src3, len3)
//plot(out1, title="EMA1", color=fuchsia)
//plot(out2, title="EMA2", color=orange)
plot(out3, title="EMA3", color=color.blue)

Lebih lanjut