Strategi Anak Panah Silang Purata Bergerak Berganda


Tarikh penciptaan: 2023-11-21 17:00:49 Akhirnya diubah suai: 2023-11-21 17:00:49
Salin: 0 Bilangan klik: 604
1
fokus pada
1617
Pengikut

Strategi Anak Panah Silang Purata Bergerak Berganda

Gambaran keseluruhan

Strategi ini menentukan masa untuk membeli dan menjual dengan mengira crossover MACD. Ia memetakan bentuk anak panah pada carta untuk memberi isyarat perdagangan.

Prinsip

Strategi ini mulakan dengan mengira garis cepat (EMA 12), garis lambat (EMA 26), dan perbezaan MACD. Kemudian, berdasarkan garis cepat dan garis lambat, dan perbezaan MACD positif-negatif, ia menilai masa membeli dan menjual:

  1. Sinyal beli apabila garis cepat melalui garis lambat (Goldfork) dan MACD di atas perbezaan 0
  2. Sinyal jual apabila garis laju di bawah melintasi garis perlahan (dead fork) dan MACD di bawah nilai 0

Untuk menyaring isyarat palsu, kod juga menilai keadaan isyarat K baris sebelumnya. Isyarat semasa hanya akan dicetuskan apabila satu K baris semasa adalah isyarat terbalik ((beli ke jual atau jual ke beli).

Selain itu, kod ini juga memaparkan gambar anak panah di K-Line untuk menunjukkan masa pembelian dan penjualan.

Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan penilaian silang dua hala yang sama untuk menyaring bunyi pasaran dengan berkesan dan mengenal pasti trend
  2. Penghakiman dengan perbezaan MACD dapat mengelakkan kesalahan dan kesalahan
  3. Menggunakan anak panah untuk memberi isyarat masa untuk membeli dan menjual, dan lebih jelas
  4. Peraturan-peraturan yang mudah difahami dan disalin

Risiko dan Penyelesaian

Strategi ini mempunyai beberapa risiko:

  1. Persaingan dua garis rata-rata mudah menghasilkan isyarat palsu yang boleh menyebabkan perdagangan berlebihan. Parameter garis rata-rata boleh disesuaikan atau syarat penapisan lain boleh ditambah untuk mengurangkan isyarat palsu
  2. Tidak dapat menilai pergerakan dalam trend, kemungkinan kerugian. Ini dapat dielakkan dengan menggunakan indikator trend seperti ADX
  3. Keadaan pembelian dan penjualan yang tetap menjadikan strategi menjadi mekanis, tidak dapat menyesuaikan diri dengan perubahan pasaran. Anda boleh mencuba kaedah penyesuaian diri seperti pembelajaran mesin untuk mengoptimumkannya

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa arah:

  1. Uji kombinasi parameter yang berbeza untuk mencari garis laju, garis perlahan dan parameter MACD yang terbaik
  2. Menambah syarat kemasukan, seperti penembusan jumlah dagangan untuk menapis isyarat
  3. Menambah mekanisme penangguhan kerugian untuk mengawal kerugian tunggal
  4. Indeks Volatiliti seperti VIX untuk menilai keutamaan risiko
  5. Mencuba model pembelajaran mesin untuk menggantikan peraturan tetap dan mengoptimumkan strategi yang beradaptasi

ringkaskan

Strategi panah silang dua garis sejajar ini agak mudah dan praktikal secara keseluruhan, dengan penilaian silang dua garis sejajar dan penapisan nilai perbezaan MACD, anda dapat mengenal pasti titik beli dan jual dalam trend garis tengah dan panjang, untuk mengelakkan perubahan harga yang terlewat. Petua panah juga membuat operasi lebih jelas dan jelas.

Kod sumber strategi
/*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