Strategi panah silang purata bergerak berganda

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

img

Ringkasan

Strategi ini mengenal pasti isyarat membeli dan menjual dengan mengira persilangan purata bergerak dual penunjuk MACD. Ia memetakan anak panah pada carta untuk menunjukkan isyarat perdagangan.

Prinsip-prinsip

Strategi ini mula-mula mengira garisan cepat (EMA 12 tempoh), garis perlahan (EMA 26 tempoh) dan perbezaan MACD. Kemudian ia menentukan isyarat panjang dan pendek berdasarkan persilangan garis cepat dan perlahan, serta nilai positif / negatif perbezaan MACD:

  1. Apabila garisan pantas melintasi di atas garis perlahan (salib emas) dan perbezaan MACD melintasi di atas 0, ia adalah isyarat beli
  2. Apabila garisan pantas melintasi di bawah garis perlahan (salib kematian) dan perbezaan MACD melintasi di bawah 0, ia adalah isyarat jual

Untuk menapis isyarat palsu, kod ini juga memeriksa isyarat candlestick sebelumnya. Isyarat semasa hanya dicetuskan jika candlestick sebelumnya mempunyai isyarat bertentangan (beli vs jual atau sebaliknya).

Di samping itu, bentuk anak panah digambarkan pada carta untuk menunjukkan isyarat membeli dan menjual.

Kelebihan

Kelebihan strategi ini termasuk:

  1. Menggunakan silang purata bergerak berganda membantu mengenal pasti trend dan menapis bunyi pasaran
  2. Menggabungkan perbezaan MACD mengelakkan perdagangan yang hilang dan isyarat palsu
  3. Panah menunjukkan pintu masuk dan keluar dengan jelas
  4. Peraturan yang mudah dan mudah difahami memudahkan pengulangan

Risiko dan Penyelesaian

Beberapa risiko strategi ini:

  1. Crossover boleh menghasilkan isyarat palsu dan menyebabkan perdagangan berlebihan. Parameter boleh diselaraskan atau penapis tambahan ditambah untuk mengurangkan isyarat palsu.
  2. Tidak dapat membezakan rentang dalam trend, berpotensi membawa kepada kerugian.
  3. Peraturan tetap tidak dapat menyesuaikan diri dengan pasaran yang berubah. Pembelajaran mesin berpotensi dapat mengoptimumkan ini.

Peluang Peningkatan

Beberapa cara untuk meningkatkan strategi:

  1. Uji kombinasi parameter yang berbeza untuk mencari tetapan optimum untuk garis pantas, garis perlahan dan MACD
  2. Tambah syarat kemasukan tambahan seperti gangguan kelantangan kepada isyarat penapis
  3. Menggabungkan stop loss untuk mengawal kerugian perdagangan tunggal
  4. Gunakan penunjuk turun naik seperti VIX untuk mengukur selera risiko
  5. Cuba model pembelajaran mesin bukannya peraturan tetap untuk mewujudkan pengoptimuman adaptif

Ringkasan

Strategi panah crossover purata bergerak berganda agak mudah dan praktikal. Dengan menggunakan silang dua purata bergerak dan penapisan perbezaan MACD, ia mengenal pasti entri dan keluar semasa trend jangka menengah dan jangka panjang, mengelakkan pembalikan harga yang hilang. Isyarat anak panah juga memberikan panduan operasi yang jelas. Penambahbaikan lebih lanjut dalam kestabilan dan keuntungan dapat dicapai melalui penyesuaian parameter, penapis tambahan dan pengoptimuman 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 lanjut