Tren Mengikuti Strategi SMA

Penulis:ChaoZhang, Tanggal: 2023-11-02 16:58:23
Tag:

img

Gambaran umum

Strategi Trend Following SMA menggunakan kombinasi dari moving average sederhana (SMA) dan SMA cepat untuk menentukan arah tren pasar dan menghasilkan sinyal perdagangan. Strategi ini pergi panjang ketika harga melintasi SMA dan FSMA dan keluar panjang ketika harga melintasi di bawah. Strategi ini memberikan sinyal perdagangan tanpa kurva yang dinamis untuk menangkap perubahan tren.

Logika Strategi

Strategi ini menggunakan fungsi sma untuk menghitung SMA 50 periode dan SMA cepat fsma. fsma dihitung berdasarkan SMA ditambah 6 kali standar deviasi harga selama n periode.

Dua variabel boolean panjang dan pendek digunakan untuk merekam posisi panjang dan pendek. panjang ditetapkan menjadi 1 ketika harga melintasi di atas sma dan fsma untuk entri panjang, dan -1 ketika harga melintasi di bawah untuk keluar. pendek mengikuti logika yang sama untuk posisi pendek.

Variabel tren digunakan untuk penentuan tren. Variabel tren ditetapkan menjadi 1 ketika harga berada di atas fsma dan sma untuk tren naik, dan -1 ketika harga berada di bawah fsma dan sma untuk tren turun.

Sinyal trading long dan short dihasilkan berdasarkan arah tren real time. Ketika tren berubah dari bawah ke atas, jika harga di atas fsma, pergi panjang. Ketika tren berubah dari atas ke bawah, jika harga di bawah sma, pergi pendek.

Strategi ini menggabungkan metode trend following dan breakout untuk menangkap peluang ketika tren berubah.

Keuntungan

  1. Menggunakan konfirmasi ganda dari dua MAs menyaring pelarian palsu.

  2. Menggabungkan trend berikut dan breakout menangkap titik balik.

  3. Tidak ada penyesuaian kurva atau optimasi untuk sinyal perdagangan dinamis.

  4. Logika yang sederhana dan jelas, mudah dimengerti dan dimodifikasi.

  5. Parameter yang dapat disesuaikan untuk panjang, pengganda untuk pasar yang berbeda.

Risiko

  1. Double MA crosses dapat menyebabkan perdagangan whipsaw yang berlebihan dan pembalikan.

  2. MA lag mungkin melewatkan pembalikan tren awal.

  3. Tidak ada mekanisme stop loss untuk mengendalikan kerugian perdagangan tunggal.

  4. Penyesuaian parameter yang tidak benar menyebabkan overtrading atau keterlambatan.

  5. Untuk Risiko 1 dan 2, perpanjang periode MA, tambahkan stop loss penarikan.

  6. Untuk Risiko 3, tambahkan persentase atau stop loss order.

  7. Untuk Risiko 4, sesuaikan parameter secara dinamis untuk pasar yang berbeda.

Peningkatan

  1. Tambahkan filter tren menggunakan MACD, DMI untuk mengkonfirmasi tren.

  2. Menggunakan KD, RSI untuk memperdagangkan reversi rata-rata overbought/oversold.

  3. Tambahkan total stop loss seperti trailing stop, persentase stop.

  4. Tambahkan modul ukuran posisi untuk penyesuaian dinamis.

  5. Mengoptimalkan parameter untuk beradaptasi dalam jangka waktu.

  6. Memperkenalkan pembelajaran mesin untuk pengaturan parameter otomatis.

  7. Membangun strategi komposit dengan filter tambahan.

  8. Menggunakan pembelajaran mendalam untuk mendeteksi pola tren yang kompleks.

Kesimpulan

SMA adalah sistem perdagangan tren yang sederhana. Sistem ini menggunakan MAs cepat dan lambat untuk membantu arah tren dan menangkap pembalikan tren. Namun, risiko seperti whipsaw dan lag ada. Peningkatan di masa depan termasuk menambahkan filter, stop, parameter dinamis dll. Secara keseluruhan, ini berfungsi sebagai strategi tren awal yang baik, tetapi optimasi diperlukan untuk aplikasi dunia nyata untuk memaksimalkan kinerjanya.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SMA STRATEGY", shorttitle="SMA TREND", overlay=true, calc_on_order_fills=true)
length = input(title="Length", type=input.integer, defval=50)
src_=input(close, title="Source", type=input.source)
mult=input(6.0, title="Mult")
barc=input(true, title="Use barcolor?")
plots=input(false, title="Show plots?")
tri=input(false, title="Use triangles?")


r(src, n)=>
    s = 0.0
    for i = 0 to n-1
        s := s + ((n-(i*2+1))/2)*src[i]
    x=s/(n*(n+1))
    x

l=sma(low, length)
h=sma(high, length)
lr= l+mult*r(low, length)
hr= h+mult*r(high, length)

trend=0
trend:=src_ > lr and src_ > hr ? 1 : src_ < lr and src_ < hr ? -1 : trend[1]

strategy.close("Long", when=trend==-1)
strategy.close("Short", when=trend==1)
strategy.entry("Long", strategy.long, when=trend==1 and src_>h)
strategy.entry("Short", strategy.short, when=trend==-1 and src_<l)

long=0
short=0
long:= trend==1 and src_>h ? 1 : trend==-1 ? -1 : long[1]
short:= trend==-1 and src_<l ? 1 : trend==1 ? -1 : short[1]

barcolor(barc? (long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue) : na)
plotshape(tri? close : na, style= shape.diamond, color= long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue, location=location.top)

//shortenter=
a1=plot(plots? l : na, color=color.blue, linewidth=1)
//longenter=
a2=plot(plots? h : na, color=color.blue, linewidth=1)
fill(a1, a2, color=color.blue)
//stopshort=
b1=plot(plots? hr : na, color=color.navy, linewidth=1)
//stoplong=
b2=plot(plots? lr : na, color=color.navy, linewidth=1)
fill(b1, b2, color=color.navy)

Lebih banyak