Strategi Crossover Rata-rata Pergerakan MACD


Tanggal Pembuatan: 2023-09-14 17:03:47 Akhirnya memodifikasi: 2023-09-14 17:03:47
menyalin: 0 Jumlah klik: 725
1
fokus pada
1617
Pengikut

Prinsip Strategi

Strategi ini menggabungkan indikator MACD dan indikator moving average untuk melakukan perdagangan lebih banyak saat keduanya memberikan sinyal sinkronisasi.

Logika transaksi adalah sebagai berikut:

  1. Menghitung nilai FAST MACD, biasanya mengambil rata-rata indeks bergerak 12 hari

  2. Menghitung nilai SLOW MACD, biasanya menggunakan indeks moving average 26 hari

  3. MACD adalah FAST minus SLOW

  4. Menghitung garis sinyal MACD, biasanya mengambil rata-rata bergerak 9 hari

  5. Perhitungan rata-rata bergerak 9 dan 26 hari

  6. Pertimbangkan untuk melakukan lebih banyak ketika Anda menyalakan sinyal MACD

  7. Ketika Anda memakai garis rata-rata 9 hari pada garis rata-rata 26 hari, lakukan lebih banyak

  8. Ketika MACD melewati garis sinyal dan 9 hari di bawah garis rata-rata 26 hari di bawah garis rata-rata, posisi kosong

Strategi ini memanfaatkan sepenuhnya kemampuan MACD untuk melakukan penilaian overbought dan oversold dan untuk melacak tren pada garis rata-rata, dan menggabungkan keduanya untuk melakukan perdagangan dengan tingkat keberhasilan yang lebih tinggi.

Keunggulan Strategis

  • MACD menilai overbought dan oversold, rata-rata garis menilai tren

  • Verifikasi kombinasi keduanya memberikan peluang yang lebih tinggi untuk melakukan lebih banyak pekerjaan

  • Aturan Operasi yang Jelas dan Mudah Diperlakukan

Risiko Strategis

  • Perlu pengujian berulang untuk menentukan parameter optimal

  • Hanya bekerja lebih banyak, tidak bisa memanfaatkan kesempatan kosong

  • “Saya tidak tahu apa yang terjadi”, kata dia, “Saya tidak tahu apa yang terjadi”.

Meringkaskan

Strategi ini memanfaatkan sepenuhnya keuntungan dari MACD dan rata-rata indikator, kombinasi keduanya untuk menilai kecepatan pasar. Namun, perlu diperhatikan masalah seperti melakukan lebih banyak dan optimasi parameter.

Kode 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="หนีตาย")