Strategi Double Moving Average Golden Cross dan Death Cross


Tanggal Pembuatan: 2023-09-17 22:35:07 Akhirnya memodifikasi: 2023-09-17 22:35:07
menyalin: 1 Jumlah klik: 626
1
fokus pada
1617
Pengikut

Strategi ini dilakukan dengan menghitung moving averages dari dua periode yang berbeda dan membentuk sinyal beli dan jual berdasarkan pijakan mereka.

Prinsip Strategi

Strategi ini pertama-tama memungkinkan pengguna untuk memilih jenis dan panjang rata-rata bergerak. Jenis termasuk SMA, EMA, VWMA, dan lain-lain, dan panjangnya menentukan periode rata-rata.

Kemudian, dua rata-rata bergerak yang dipilih oleh pengguna dihitung. Jika garis cepat melewati garis lambat dari bawah, membentuk garpu emas, maka akan ada sinyal beli. Jika garis cepat melewati garis lambat dari atas ke bawah, membentuk garpu mati, maka akan ada sinyal jual.

Dengan demikian, ketika harga rata-rata jangka pendek lebih tinggi dari harga rata-rata jangka panjang, dianggap sebagai pasar dalam tren naik, harus dibeli. Ketika harga jangka pendek lebih rendah dari harga jangka panjang, dianggap sebagai pasar dalam tren turun, harus dijual.

Analisis Keunggulan

  • Strategi logisnya sederhana dan jelas, mudah dipahami dan diterapkan.
  • Moving Average efektif memfilter kebisingan pasar dan mengidentifikasi tren.
  • Jenis dan parameter rata-rata bergerak yang dapat dipilih secara fleksibel untuk varietas dan periode yang berbeda.
  • Hal ini dapat dengan mudah dioptimalkan melalui berbagai kombinasi indikator.

Analisis risiko

  • Ketika pasar bergejolak, sinyal yang salah bisa muncul berkali-kali.
  • Pilihan parameter yang salah dapat menyebabkan kinerja strategi yang buruk.
  • Sinyal terlambat, tidak dapat menangkap titik balik tepat waktu.
  • Risiko terjadinya kejutan ekonomi akibat kejadian tak terduga.

Risiko dapat dikontrol dengan cara mengoptimalkan parameter yang sesuai, menggabungkan indikator lain untuk menghasilkan sinyal, dan mengatur stop loss.

Arah optimasi

  • Uji parameter dari berbagai jenis dan panjang untuk menemukan kombinasi optimal.
  • Tambahkan filter untuk indikator lain, seperti indikator kuantitas, indikator volatilitas, dll.
  • Tambahkan Stop Loss Stop Stop Logic, Kurangi Kemunduran
  • Menggunakan indikator untuk mengevaluasi tren dan menghindari situasi perdagangan yang tidak menguntungkan.
  • Optimalkan strategi pengelolaan dana, seperti manajemen posisi, penganggaran risiko, dll.

Meringkaskan

Strategi ini secara keseluruhan sederhana dan jelas, dengan menghitung sinyal perdagangan yang terbentuk dari dua garis yang sama, parameter dapat disesuaikan secara fleksibel sesuai dengan kondisi pasar, dan kombinasi strategi lainnya dapat dioptimalkan, tetapi perlu berhati-hati untuk mencegah risiko pasar yang bergoyang, manajemen dana yang masuk akal. Secara keseluruhan adalah pilihan yang layak dipertimbangkan.

Kode Sumber Strategi
/*backtest
start: 2023-09-09 00:00:00
end: 2023-09-13 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's MAs Tests", shorttitle = "MAs tests", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)


len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length")
type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type")
src = input(close, defval = close, title = "Source")

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0

plot(ma, color = blue, linewidth = 3, transp = 0)

trend = low > ma ? 1 : high < ma ? -1 : trend[1]

longCondition = trend == 1 and trend[1] == -1
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
    strategy.entry("Short", strategy.short)