Strategi panah silang rata-rata bergerak ganda

Penulis:ChaoZhang, Tanggal: 2023-11-21 17:00:49
Tag:

img

Gambaran umum

Strategi ini mengidentifikasi sinyal beli dan jual dengan menghitung persilangan dari dua rata-rata bergerak dari indikator MACD.

Prinsip-prinsip

Strategi ini pertama-tama menghitung garis cepat (EMA 12 periode), garis lambat (EMA 26 periode) dan selisih MACD. Kemudian menentukan sinyal panjang dan pendek berdasarkan persilangan garis cepat dan lambat, serta nilai positif / negatif dari selisih MACD:

  1. Ketika garis cepat melintasi di atas garis lambat (salib emas) dan perbedaan MACD melintasi di atas 0, itu adalah sinyal beli
  2. Ketika garis cepat melintasi di bawah garis lambat (death cross) dan perbedaan MACD melintasi di bawah 0, itu adalah sinyal jual

Untuk menyaring sinyal palsu, kode ini juga memeriksa sinyal lilin sebelumnya.

Selain itu, bentuk panah digambarkan pada grafik untuk menunjukkan sinyal beli dan jual.

Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Menggunakan crossover rata-rata bergerak ganda membantu mengidentifikasi tren dan menyaring kebisingan pasar
  2. Menggabungkan perbedaan MACD menghindari perdagangan yang hilang dan sinyal palsu
  3. Panah jelas menunjukkan pintu masuk dan pintu keluar
  4. Aturan yang sederhana dan mudah dimengerti memudahkan replikasi

Risiko dan Solusi

Beberapa risiko dari strategi ini:

  1. Crossover dapat menghasilkan sinyal palsu dan menyebabkan over-trading. Parameter dapat disesuaikan atau filter tambahan ditambahkan untuk mengurangi sinyal palsu.
  2. Tidak dapat membedakan rentang dalam tren, berpotensi menyebabkan kerugian.
  3. Aturan tetap tidak dapat beradaptasi dengan perubahan pasar. pembelajaran mesin berpotensi dapat mengoptimalkan ini.

Peluang Peningkatan

Beberapa cara untuk meningkatkan strategi:

  1. Uji kombinasi parameter yang berbeda untuk menemukan pengaturan optimal untuk garis cepat, garis lambat dan MACD
  2. Tambahkan kondisi entri tambahan seperti volume breakout untuk sinyal filter
  3. Menggabungkan stop loss untuk mengendalikan kerugian perdagangan tunggal
  4. Menggunakan indikator volatilitas seperti VIX untuk mengukur nafsu risiko
  5. Cobalah model pembelajaran mesin alih-alih aturan tetap untuk membuat optimasi adaptif

Ringkasan

Strategi panah silang rata-rata bergerak ganda cukup sederhana dan praktis. Dengan menggunakan silang dua rata-rata bergerak dan penyaringan perbedaan MACD, ia mengidentifikasi entri dan keluar selama tren jangka menengah dan panjang, menghindari pembalikan harga yang hilang. Sinyal panah juga memberikan panduan operasi yang jelas. Peningkatan stabilitas dan profitabilitas lebih lanjut dapat dicapai melalui penyesuaian parameter, filter tambahan dan optimasi adaptif.


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Daniels stolen code
strategy(shorttitle="Daniels Stolen Code", title="Daniels Stolen Code", overlay=true, calc_on_order_fills=true, pyramiding=0)

//Define MACD Variables
fast = 12, slow = 26
fastMACD = ema(hlc3, fast)
slowMACD = ema(hlc3, slow)
macd = fastMACD - slowMACD
signal = sma(macd, 9)
hist = macd - signal
currMacd = hist[0]
prevMacd = hist[1]
currPrice = hl2[0]
prevPrice = hl2[1]

buy = currPrice > prevPrice and currMacd > prevMacd
sell = currPrice < prevPrice and currMacd < prevMacd
neutral = (currPrice < prevPrice and currMacd > prevMacd) or (currPrice > prevPrice and currMacd < prevMacd)
//Plot Arrows

timetobuy = buy==1 and (sell[1]==1 or (neutral[1]==1 and sell[2]==1) or (neutral[1]==1 and neutral[2]==1 and sell[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and sell[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and sell[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and sell[6]==1))
timetosell = sell==1 and (buy[1]==1 or (neutral[1]==1 and buy[2]==1) or (neutral[1]==1 and neutral[2]==1 and buy[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and buy[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and buy[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and buy[6]==1))

plotshape(timetobuy, color=blue, location=location.belowbar, style=shape.arrowup)
plotshape(timetosell, color=red, location=location.abovebar, style=shape.arrowdown)
//plotshape(neutral, color=black, location=location.belowbar, style=shape.circle)


//Test Strategy
// strategy.entry("long", true, 1, when = timetobuy and time > timestamp(2017, 01, 01, 01, 01)) // buy by market if current open great then previous high
// strategy.close("long", when = timetosell and time > timestamp(2017, 01, 01, 01, 01))

strategy.order("buy", true, 1, when=timetobuy==1 and time > timestamp(2019, 01, 01, 01, 01))
strategy.order("sell", false, 1, when=timetosell==1 and time > timestamp(2019, 01, 01, 01, 01))



// strategy.entry(id = "Short", long = false, when = enterShort())
// strategy.close(id = "Short", when = exitShort())

//strategy.entry("long", true, 1, when = open > high[1]) // enter long by market if current open great then previous high
// strategy.exit("exit", "long", profit = 10, loss = 5) // ge

Lebih banyak