Strategi ini adalah strategi perdagangan trend berdasarkan purata bergerak. Ia menggunakan 3 purata bergerak dengan parameter yang berbeza untuk menjana isyarat perdagangan. Ia pergi lama apabila harga melintasi di atas purata bergerak dan pergi pendek apabila harga melintasi di bawah. Strategi ini mempunyai 3 garis purata bergerak untuk masuk bertahap panjang atau pendek, yang membolehkannya mengikuti trend.
Strategi ini mengira garis purata bergerak ma dengan panjang len menggunakan fungsi sma. Kemudian ia mengira 3 garis purata bergerak tambahan longline1, longline2, longline3 yang bergeser masing-masing sebanyak -4%, -5%, -6% berdasarkan ma.
Untuk penjanaan isyarat panjang, jika kedudukan semasa rata, ia pergi panjang dengan 1 lot apabila harga melintasi di atas longline1. Jika sudah 1 lot panjang, ia menambah 1 lagi lot apabila harga melintasi di atas longline2. Jika sudah 2 lot panjang, ia menambah 1 lagi lot apabila harga melintasi di atas longline3. Kedudukan panjang maksimum adalah 3 lot.
Untuk penjanaan isyarat pendek, jika sudah lama, ia keluar dari semua kedudukan panjang apabila harga melintasi di bawah ma.
Pendaftaran bertahap membolehkan strategi untuk mengikuti trend.
Penyelesaian Risiko:
Strategi ini boleh dioptimumkan dalam aspek berikut:
Tambah penunjuk lain seperti MACD untuk menentukan kekuatan trend
Mengoptimumkan parameter purata bergerak untuk mencari kombinasi terbaik
Sesuaikan saiz dan nisbah kumpulan kemasukan bertahap untuk mengelakkan mengejar harga tinggi
Tambahkan mekanisme stop loss bergerak berdasarkan ATR
Sesuaikan saiz kedudukan secara dinamik berdasarkan turun naik pasaran, mengurangkan saiz apabila turun naiknya tinggi
Parameter ujian pada produk yang berbeza untuk mencari simbol optimum
Membangunkan modul keluar untuk mempertimbangkan mengambil keuntungan pada corak tertentu
Secara keseluruhan, strategi perdagangan berdasarkan arah trend yang ditentukan oleh purata bergerak, dan keuntungan dari trend melalui entri bertahap. Tetapi ia mempunyai beberapa isu yang tertinggal dan risiko mengejar harga yang tinggi. Kita boleh mengoptimumkannya dengan menambah penunjuk tambahan, mengoptimumkan parameter, menyesuaikan saiz kedudukan, menambahkan stop loss, dll, untuk menyesuaikan diri dengan keadaan pasaran yang berbeza dan mencapai keuntungan yang stabil.
/*backtest start: 2022-10-02 00:00:00 end: 2023-10-08 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=4 strategy(title = "Noro's ShiftMA-multi Strategy v1.0", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3) //Settings capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") len = input(3, minval = 1, title = "MA Lenghs") src = input(ohlc4, title = "MA Source") longlevel1 = input(-4.0, title = "Long line 1") longlevel2 = input(-5.0, title = "Long line 2") longlevel3 = input(-6.0, title = "Long line 3") needoffset = input(true, title = "Offset") //Variables size = strategy.position_size mult = 1 / syminfo.mintick //MA ma = sma(src, len) longline1 = round(ma * ((100 + longlevel1) / 100) * mult) / mult longline2 = round(ma * ((100 + longlevel2) / 100) * mult) / mult longline3 = round(ma * ((100 + longlevel3) / 100) * mult) / mult //Lines offset = needoffset ? 1 : 0 plot(ma, color = color.blue) plot(longline1, offset = offset, color = color.lime) plot(longline2, offset = offset, color = color.lime) plot(longline3, offset = offset, color = color.lime) //Trading lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] lots = 0.0 if ma > 0 lots := round(size / lot) strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0)) lots := round(size / lot) strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1)) lots := round(size / lot) strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2)) if size > 0 strategy.entry("TP", strategy.short, 0, limit = ma)