Strategi Trend Following SMA menggunakan gabungan purata bergerak mudah (SMA) dan SMA pantas untuk menentukan arah trend pasaran dan menjana isyarat perdagangan. Ia pergi lama apabila harga melintasi di atas SMA dan FSMA dan keluar lama apabila harga melintasi di bawah. Ia pergi pendek apabila harga melintasi di bawah SMA dan FSMA dan keluar pendek apabila harga melintasi di atas. Strategi ini menyediakan isyarat perdagangan tanpa lengkung yang dinamik untuk menangkap perubahan trend.
Strategi ini menggunakan fungsi sma untuk mengira SMA 50 tempoh dan fsma SMA pantas. fsma dikira berdasarkan SMA ditambah 6 kali penyimpangan standard harga selama n tempoh.
Dua pembolehubah boolean panjang dan pendek digunakan untuk merekodkan kedudukan panjang dan pendek. panjang ditetapkan menjadi 1 apabila harga melintasi di atas sma dan fsma untuk entri panjang, dan -1 apabila harga melintasi di bawah untuk keluar. pendek mengikuti logik yang sama untuk kedudukan pendek.
Variabel trend digunakan untuk penentuan trend. Ia ditetapkan sebagai 1 apabila harga di atas fsma dan sma untuk trend menaik, dan -1 apabila harga di bawah fsma dan sma untuk trend menurun.
Isyarat perdagangan panjang dan pendek dihasilkan berdasarkan arah trend masa nyata. Apabila trend berubah dari bawah ke atas, jika harga di atas fsma, pergi panjang. Apabila trend berubah dari atas ke bawah, jika harga di bawah sma, pergi pendek.
Strategi ini menggabungkan kedua-dua trend berikut dan kaedah pecah untuk menangkap peluang apabila perubahan trend.
Menggunakan pengesahan dua kali ganda untuk menapis pelarian palsu.
Menggabungkan trend berikut dan penembusan menangkap titik perubahan.
Tiada pemasangan lengkung atau pengoptimuman untuk isyarat perdagangan dinamik.
Logik yang mudah dan jelas, mudah difahami dan diubah.
Parameter yang boleh disesuaikan untuk panjang, pengganda untuk pasaran yang berbeza.
Pembebasan MA berganda boleh menyebabkan perdagangan dan pembalikan yang berlebihan.
MA lag mungkin terlepas pembalikan trend awal.
Tiada mekanisme stop loss untuk mengawal kerugian perdagangan tunggal.
Penyesuaian parameter yang tidak betul membawa kepada overtrading atau ketinggalan.
Untuk Risiko 1 dan 2, memanjangkan tempoh MA, menambah stop loss penarikan.
Untuk Risiko 3, tambahkan peratusan atau perintah stop loss.
Untuk Risiko 4, sesuaikan parameter secara dinamik untuk pasaran yang berbeza.
Tambah penapis trend menggunakan MACD, DMI untuk mengesahkan trend.
Menggunakan KD, RSI untuk berdagang dengan pembalikan purata overbought/oversold.
Tambah keseluruhan stop loss seperti trailing stop, peratusan stop.
Tambah modul pengukuran kedudukan untuk pelarasan dinamik.
Mengoptimumkan parameter untuk menyesuaikan diri dalam jangka masa.
Memperkenalkan pembelajaran mesin untuk penyesuaian parameter automatik.
Membina strategi komposit dengan penapis tambahan.
Gunakan pembelajaran mendalam untuk mengesan corak trend yang kompleks.
Strategi mengikuti trend SMA adalah sistem perdagangan trend yang mudah. Ia menggunakan MA yang cepat dan perlahan untuk membantu arah trend dan menangkap pembalikan trend. Walau bagaimanapun, risiko seperti whipsaw dan lag wujud. Peningkatan masa depan termasuk menambah penapis, berhenti, parameter dinamik dan lain-lain. Secara keseluruhan ia berfungsi sebagai permulaan yang baik untuk mengikuti trend strategi, tetapi pengoptimuman diperlukan untuk aplikasi dunia nyata untuk memaksimumkan prestasi.
/*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)