Strategi Rata-rata Pergerakan Dinamis


Tanggal Pembuatan: 2023-11-23 11:39:24 Akhirnya memodifikasi: 2023-11-23 11:39:24
menyalin: 0 Jumlah klik: 654
1
fokus pada
1617
Pengikut

Strategi Rata-rata Pergerakan Dinamis

Ringkasan

Strategi ini dinamakan “Dynamic Moving Average Line Strategy” dan ide utamanya adalah menggunakan arah dan hubungan antara garis rata-rata bergerak dan harga untuk menilai tren, masuk ke dalam medan dalam arah tren, dan melonggarkan posisi ketika tidak ada tren.

Prinsip Strategi

Strategi ini menggunakan harga sumber untuk setiap siklus panjang untuk menghitung rata-rata bergerak, harga sumber dapat memilih OHLC4, HLC3, harga penutupan, dll. Rata-rata bergerak yang dihitung didefinisikan sebagai sma. Kemudian dipetakan garis panjang dan garis pendek berdasarkan proporsi dari nilai rata-rata bergerak, dengan hubungan posisi garis panjang dan garis pendek untuk menilai apakah saat ini sedang dalam tren naik atau tren turun.

Secara khusus, rumus perhitungan untuk garis pendek adalah: shortline = sma * ((100 + shortlevel) / 100), di mana shortlevel adalah sebuah bilangan positif yang dapat diatur oleh pengguna, mewakili rasio jarak garis pendek dari garis rata-rata bergerak.

Dengan demikian, nilai garis pendek selalu lebih besar dari rata-rata bergerak, dan nilai garis panjang selalu lebih kecil dari rata-rata bergerak. Ketika harga naik melalui garis pendek, berarti masuk ke tren naik, saat ini jika needlong memungkinkan untuk melakukan lebih banyak, maka akan melakukan lebih banyak di bawah tingkat harga garis panjang; ketika harga turun melalui garis panjang, berarti masuk ke tren turun, saat ini jika needshort memungkinkan untuk kosong, maka akan melakukan kosong di bawah tingkat harga garis pendek.

Baik melakukan over atau short, ketika harga kembali ke Moving Average, mewakili akhir tren, yang pada saat itu akan meratakan semua posisi sebelumnya.

Dengan cara ini, arah tren dinilai melalui hubungan dinamis antara garis panjang pendek dan garis rata-rata bergerak dan masuk dan keluar berdasarkannya.

Keunggulan Strategis

Keuntungan terbesar dari strategi ini adalah kemampuan untuk menangkap arah tren utama dengan lebih fleksibel. Strategi ini lebih canggih dan lebih cerdas dibandingkan dengan strategi yang hanya memicu titik jual beli pada tingkat tetap.

Kedua, pergerakan rata-rata juga memiliki beberapa efek filter, untuk beberapa tingkat menghindari terkepung oleh getaran frekuensi tinggi. Pada saat yang sama, berdasarkan tingkat pergerakan rata-rata untuk menilai apakah tren berakhir tepat waktu, ini juga sangat penting.

Risiko Strategis

Risiko terbesar dari strategi ini adalah bahwa rata-rata bergerak berkinerja berbeda pada periode yang berbeda. Biasanya rata-rata bergerak cukup untuk mewakili arah tren, tetapi dalam beberapa situasi ekstrem rata-rata bergerak dapat dipotong dalam waktu singkat, menyebabkan kesalahan masuk, atau terbalik dari puncak.

Aspek lain dari risiko adalah bahwa moving averages sendiri sangat lambat. Untuk beberapa perubahan harga yang singkat dan tajam, moving averages sulit untuk dilacak dan waktu, yang mungkin akan kehilangan titik masuk atau titik keluar. Perlu mengurangi siklus untuk mempercepat kecepatan respons moving averages.

Optimasi Strategi

Strategi ini dapat terus dioptimalkan dalam beberapa hal:

  1. Menambahkan Stop Loss Logika. Moving Average Line memiliki keterlambatan dalam menilai tren dan tidak dapat sepenuhnya menghindari pegangan, sehingga penambahan Stop Loss yang tepat dapat mengurangi risiko lebih lanjut.
  2. Parameter untuk mengoptimalkan garis rata-rata panjang dan pendek. Saat ini, rasio jarak antara garis rata-rata panjang dan pendek dengan garis rata-rata bergerak adalah nilai tetap, yang dapat diuji dengan berbagai set data untuk menemukan parameter yang optimal.
  3. Meningkatkan penilaian kekuatan tren. Selain posisi garis rata-rata panjang dan pendek, kekuatan tren juga dapat dinilai melalui algoritma tertentu, untuk menghindari sinyal salah pada tren lemah.
  4. Anda dapat mencoba menerapkan Moving Average Line pada varietas lain yang diperdagangkan untuk melakukan verifikasi lintas varietas.

Meringkaskan

Strategi ini melakukan penilaian tren dan perdagangan multirumah yang sesuai dengan cara menetapkan titik jual beli secara dinamis. Metode ini didasarkan pada sinyal perdagangan yang ditetapkan secara dinamis pada garis rata-rata bergerak, yang menangkap tren harga secara lebih fleksibel dan cerdas dibandingkan dengan titik pemicu statis.

Kode Sumber Strategi
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's ShiftMA Strategy v1.1", shorttitle = "ShiftMA str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
per = input(3, title = "Length")
src = input(ohlc4, title = "Source")
shortlevel = input(10.0, title = "Short line (red)")
longlevel = input(-5.0, title = "Long line (lime)")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//SMAs
sma = sma(src, per) 
//sma = lowest(low, per)
shortline = sma * ((100 + shortlevel) / 100)
longline = sma * ((100 + longlevel) / 100)
plot(shortline, linewidth = 2, color = red, title = "Short line")
plot(sma, linewidth = 2, color = blue, title = "SMA line")
plot(longline, linewidth = 2, color = lime, title = "Long line")

//plot(round(buy * 100000000), linewidth = 2, color = lime)
//plot(round(sell * 100000000), linewidth = 2, color = red)

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[per])) and size == 0 and needlong
    strategy.entry("L", strategy.long, lot, limit = longline, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size == 0 and needshort
    strategy.entry("S", strategy.short, lot, limit = shortline, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size > 0 
    strategy.entry("Close", strategy.short, 0, limit = sma, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size < 0 
    strategy.entry("Close", strategy.long, 0, limit = sma, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()