Strategi Persilangan Purata Pergerakan MACD


Tarikh penciptaan: 2023-09-14 17:03:47 Akhirnya diubah suai: 2023-09-14 17:03:47
Salin: 0 Bilangan klik: 725
1
fokus pada
1617
Pengikut

Prinsip Strategi

Strategi ini menggabungkan penunjuk MACD dan penunjuk purata bergerak, melakukan perdagangan berganda apabila kedua-duanya memberikan isyarat arah.

Logik urus niaga adalah seperti berikut:

  1. Hitung nilai FAST MACD, biasanya mengambil purata bergerak indeks 12 hari

  2. Mengira nilai SLOW MACD, biasanya mengambil purata bergerak indeks 26 hari

  3. MACD ialah FAST minus SLOW

  4. Mengira garis isyarat MACD, biasanya mengambil purata bergerak 9 hari

  5. Pengiraan purata bergerak 9 dan 26 hari

  6. Pertimbangkan untuk melakukan lebih banyak apabila anda menggunakan MACD

  7. Apabila anda memakai garis rata-rata 9 hari pada garis rata-rata 26 hari, lakukan lebih banyak

  8. Apabila MACD melintasi garis isyarat dan melintasi garis purata 9 hari di bawah garis purata 26 hari, kedudukan kosong

Strategi ini memanfaatkan sepenuhnya kebolehan MACD untuk membuat penilaian overbought dan oversold dan trend track pada garis rata, dan menggabungkan kedua-duanya untuk perdagangan yang meningkatkan kadar kejayaan.

Kelebihan Strategik

  • MACD menilai trend jual beli dan purata

  • Perkongsian kedua-dua pengesahan ini memberikan peluang untuk bekerja lebih banyak.

  • Peraturan operasi jelas dan mudah dilaksanakan

Risiko Strategik

  • Ujian berulang untuk menentukan parameter terbaik

  • Hanya bekerja lebih banyak, tidak dapat memanfaatkan peluang kosong

  • Lebih banyak trend, lebih besar kemungkinan kerugian

ringkaskan

Strategi ini memanfaatkan sepenuhnya kelebihan MACD dan penunjuk garis rata, menggabungkan keduanya untuk menilai kadar pasaran. Tetapi hanya perlu berhati-hati dengan masalah seperti melakukan lebih banyak dan pengoptimuman parameter.

Kod sumber strategi
/*backtest
start: 2023-09-06 00:00:00
end: 2023-09-13 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=4
strategy("MACD Cross+MA", overlay=true)
//@version=4
// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// === INPUT BACKTEST RANGE ===
FromYear  = input(defval = 2019, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"


// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
//plot
plot(sma(close,9),color=color.red)
plot(sma(close,26),color=color.green)
//Condition
BMacdcondition= (macd>signal)
SMacdcondition= (macd<signal)
longCondition = crossover(sma(close, 9), sma(close, 26))
shortCondition = crossunder(sma(close, 9), sma(close, 26))
//entry
if (BMacdcondition) and window()
    (longCondition)
    strategy.entry("LONG", strategy.long)
if (shortCondition) and window()
    (SMacdcondition)
    strategy.close("LONG", qty_percent=100 , comment="หนีตาย")