Strategi ini adalah strategi perdagangan tren yang didasarkan pada moving average. Strategi ini menggunakan 3 moving average dengan parameter yang berbeda untuk menghasilkan sinyal perdagangan. Strategi ini memiliki 3 garis rata-rata bergerak untuk masuk bertahap panjang atau pendek, yang memungkinkan untuk mengikuti tren.
Strategi ini menghitung garis rata-rata bergerak ma dengan panjang len menggunakan fungsi sma. Kemudian ia menghitung 3 garis rata-rata bergerak lain longline1, longline2, longline3 yang bergeser masing-masing sebesar -4%, -5%, -6% berdasarkan ma.
Untuk generasi sinyal panjang, jika posisi saat ini rata, maka akan panjang dengan 1 lot ketika harga melintasi di atas longline1. Jika sudah 1 lot panjang, maka akan menambah 1 lot lagi ketika harga melintasi di atas longline2. Jika sudah 2 lot panjang, maka akan menambah 1 lot lagi ketika harga melintasi di atas longline3. Posisi panjang maksimum adalah 3 lot.
Untuk generasi sinyal pendek, jika sudah panjang, ia keluar dari semua posisi panjang ketika harga melintasi di bawah ma.
Masukan bertahap memungkinkan strategi untuk mengikuti tren.
Solusi Risiko:
Strategi dapat dioptimalkan dalam aspek berikut:
Tambahkan indikator lain seperti MACD untuk menentukan kekuatan tren
Mengoptimalkan parameter rata-rata bergerak untuk menemukan kombinasi terbaik
Sesuaikan ukuran dan rasio batch masuk bertahap untuk mencegah mengejar harga tinggi
Tambahkan mekanisme stop loss bergerak berdasarkan ATR
Mengatur secara dinamis ukuran posisi berdasarkan volatilitas pasar, mengurangi ukuran ketika volatilitas tinggi
Parameter uji pada produk yang berbeda untuk menemukan simbol optimal
Mengembangkan modul keluar untuk mempertimbangkan mengambil keuntungan pada pola tertentu
Secara keseluruhan, strategi perdagangan didasarkan pada arah tren yang ditentukan oleh moving average, dan keuntungan dari tren melalui entri bertahap. tetapi memiliki beberapa masalah tertinggal dan risiko mengejar harga tinggi. kita dapat mengoptimalkannya dengan menambahkan indikator bantu, mengoptimalkan parameter, menyesuaikan ukuran posisi, menambahkan stop loss, dll, untuk beradaptasi dengan kondisi pasar yang berbeda 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)