Strategi Momentum Crossover Rata-rata Bergerak Ganda


Tanggal Pembuatan: 2023-11-16 17:25:13 Akhirnya memodifikasi: 2023-11-16 17:25:13
menyalin: 0 Jumlah klik: 651
1
fokus pada
1617
Pengikut

Strategi Momentum Crossover Rata-rata Bergerak Ganda

Ringkasan

Strategi ini menggunakan prinsip dua garis sejajar, menggabungkan penghakiman tren dari indikator MACD dan titik-titik yang menonjol di latar belakang, ditambah dengan titik bentuk, dengan tujuan untuk menangkap tren pertengahan pasar. Logika utama adalah masuk saat terjadi pergeseran ke arah garis sejajar, melalui titik-titik yang menonjol di latar belakang MACD, dengan penghakiman perubahan warna grafik MACD.

Prinsip Strategi

Strategi menggunakan EMA cepat dan EMA lambat untuk membangun dua garis rata-rata, dan garis cepat dan lambat untuk menentukan arah tren. Pada saat yang sama, menghitung MACD dan sinyal, dengan perbedaan yang digambarkan sebagai garis lurus.

Menurut kode, panjang garis cepat adalah 12, panjang garis lambat adalah 26, untuk menunjukkan tren jangka pendek dan jangka panjang. Panjang sinyal adalah 9, untuk pemrosesan tambahan.

Logika silang:

  • trend_up = macd > signal: melewati garis lambat pada garis cepat, mewakili tren naik jangka pendek
  • trend_dn = macd < signal: garis cepat di bawah garis lambat, mewakili tren turun jangka pendek

Pengadilan:

  • cross_UP = signal[1] >= macd[1] and signal < macd: garis cepat melewati garis lambat dari bawah
  • cross_DN = signal[1] <= macd[1] and signal > macd: jalur cepat melewati jalur lambat dari atas ke bawah

Perubahan warna pada grafik vertikal untuk menilai intensitas tren:

  • histA_IsUp = Pilar grafik vertikal tumbuh dan lebih besar dari 0, yang mewakili peningkatan kekuatan
  • histA_IsDown = Pilar grafik vertikal berkurang dan lebih besar dari 0, yang berarti kekuatan naik berkurang
  • Berdasarkan:

Keunggulan Strategis

  1. Menggunakan dua garis ekuivalen untuk menentukan arah tren jangka menengah, menghindari gangguan dari kebisingan pasar jangka pendek

  2. Indikator MACD membantu menentukan tren dan intensitas jangka pendek, meningkatkan probabilitas keuntungan

  3. Perubahan warna pada grafik vertikal menentukan besarnya intensitas, untuk mengetahui waktu masuk yang lebih baik

  4. Warna latar belakang titik persimpangan, terlihat dengan jelas

  5. Siklus rata-rata yang dapat disesuaikan untuk menyesuaikan dengan kondisi pasar yang berbeda

  6. Parameter MACD dapat disesuaikan untuk mengoptimalkan efek indikator

  7. Berbagai cara untuk mengkonfirmasi masuk: arah garis rata, penunjuk silang, bentuk terobosan

Risiko Strategis

  1. Pengadilan Binary Equity: Tren jangka menengah tidak sensitif terhadap fluktuasi jangka pendek dan mungkin melewatkan peluang garis pendek

  2. Parameter MACD tidak disetel dengan benar, indikator tidak bekerja dengan baik, sinyal yang salah

  3. Ada kebutaan tertentu hanya dengan masuknya garis rata-rata dan sinyal MACD

  4. Tidak mempertimbangkan mekanisme penarikan diri dari kerugian, ada risiko peningkatan kerugian

  5. Kurangnya manajemen dana dan kontrol posisi yang ketat

Solusi yang mungkin

  1. Tergabung dengan indikator lain untuk membatasi jangka pendek fluktuasi, mengendalikan risiko

  2. Mengoptimalkan parameter MACD untuk menguji efek dari pasar yang berbeda

  3. Tambahkan bentuk, Momentum dan faktor lainnya untuk mengkonfirmasi sinyal

  4. Membangun mekanisme penghentian kerugian untuk menghindari kerugian tunggal yang terlalu besar

  5. Menambahkan Modul Manajemen Uang untuk Mengontrol Posisi Tunggal Berdasarkan Ukuran Uang

Arah optimasi strategi

  1. Uji optimasi kombinasi parameter rata-rata untuk lebih banyak situasi pasar

  2. Cobalah berbagai jenis rata-rata, seperti VWAP, Brin-band-medium, dan lain-lain.

  3. Pertimbangan untuk meningkatkan volume lalu lintas dan menghindari terobosan palsu

  4. Indikator seperti RSI dan lain-lain mengkonfirmasi overbought dan oversold.

  5. Membangun mekanisme penutupan yang baik, seperti penutupan bergerak, penutupan getaran, dan sebagainya

  6. Menambahkan mekanisme manajemen posisi, yang mengontrol posisi tunggal berdasarkan ukuran dana

  7. Optimasi parameter yang digabungkan dengan algoritma pembelajaran mesin dapat dipertimbangkan

  8. Strategi ekspansi Universe, arah investasi portofolio yang lebih dalam

Meringkaskan

Strategi ini mengintegrasikan penilaian tren dua garis rata dan indikator dinamika MACD, menambahkan fitur bentuk, dan membangun strategi perdagangan jangka menengah yang relatif stabil. Keunggulan inti adalah memahami arah tren utama dan menghindari gangguan oleh kebisingan pasar jangka pendek. Namun, ada juga beberapa ruang untuk pengoptimalan, seperti mekanisme stop loss, manajemen risiko, dan sebagainya. Secara keseluruhan, strategi ini memiliki nilai referensi yang bagus sebagai bukti konsep, tetapi posisi terdepan masih perlu diuji dan disesuaikan secara menyeluruh.

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

//@version=5
strategy(title="Histogram MacD MVP_V2.1", shorttitle="Histogram MacD MVP_2.1")
//Plot Inputs
res           = input.timeframe("",  "Indicator TimeFrame")
fast_length   = input.int(title="Fast Length", defval=12)
slow_length   = input.int(title="Slow Length", defval=26)
src           = input.source(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 999, defval = 9)
sma_source    = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal    = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
// Show Plots T/F
show_macd     = input.bool(true, title="Show MACD Lines", group="Show Plots?", inline="SP10")
show_macd_LW  = input.int(3, minval=0, maxval=5, title = "MACD Width", group="Show Plots?", inline="SP11")
show_signal_LW= input.int(2, minval=0, maxval=5, title = "Signal Width", group="Show Plots?", inline="SP11")
show_Hist     = input.bool(true, title="Show Histogram", group="Show Plots?", inline="SP20")
show_hist_LW  = input.int(5, minval=0, maxval=5, title = "-- Width", group="Show Plots?", inline="SP20")
show_trend    = input.bool(true, title = "Show MACD Lines w/ Trend Color", group="Show Plots?", inline="SP30")
show_HB       = input.bool(false, title="Show Highlight Price Bars", group="Show Plots?", inline="SP40")
show_cross    = input.bool(false, title = "Show BackGround on Cross", group="Show Plots?", inline="SP50")
show_dots     = input.bool(true, title = "Show Circle on Cross", group="Show Plots?", inline="SP60")
show_dots_LW  = input.int(5, minval=0, maxval=5, title = "-- Width", group="Show Plots?", inline="SP60")

//show_trend    = input(true, title = "Colors MACD Lines w/ Trend Color", group="Show Plots?", inline="SP5")
// MACD Lines colors
col_macd      = input.color(#FF6D00, "MACD Line  ",  group="Color Settings", inline="CS1")
col_signal    = input.color(#2962FF, "Signal Line  ",  group="Color Settings", inline="CS1")
col_trnd_Up   = input.color(#4BAF4F, "Trend Up      ",  group="Color Settings", inline="CS2")
col_trnd_Dn   = input.color(#B71D1C, "Trend Down    ",  group="Color Settings", inline="CS2")
// Histogram Colors
col_grow_above = input.color(#26A69A, "Above   Grow",  group="Histogram Colors", inline="Hist10")
col_fall_above = input.color(#FF5252, "Fall",  group="Histogram Colors", inline="Hist10")
col_grow_below = input.color(#FF5252, "Below Grow",  group="Histogram Colors", inline="Hist20")
col_fall_below = input.color(#f8f524, "Fall",  group="Histogram Colors", inline="Hist20")
// Alerts T/F Inputs
alert_Long    = input.bool(true, title = "MACD Cross Up", group = "Alerts", inline="Alert10")
alert_Short   = input.bool(true, title = "MACD Cross Dn", group = "Alerts", inline="Alert10")
alert_Long_A  = input.bool(false, title = "MACD Cross Up & > 0", group = "Alerts", inline="Alert20")
alert_Short_B = input.bool(false, title = "MACD Cross Dn & < 0", group = "Alerts", inline="Alert20")
// Calculating
fast_ma = request.security(syminfo.tickerid, res, sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length))
slow_ma = request.security(syminfo.tickerid, res, sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length))
macd = fast_ma - slow_ma
signal = request.security(syminfo.tickerid, res, sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length))
hist = macd - signal
// MACD Trend and Cross Up/Down conditions
trend_up   = macd > signal
trend_dn   = macd < signal
cross_UP   = signal[1] >= macd[1] and signal < macd
cross_DN   = signal[1] <= macd[1] and signal > macd
cross_UP_A = (signal[1] >= macd[1] and signal < macd) and macd > 0
cross_DN_B = (signal[1] <= macd[1] and signal > macd) and macd < 0
// Condition that changes Color of MACD Line if Show Trend is turned on..
trend_col = show_trend  and trend_up ? col_trnd_Up : trend_up ? col_macd : show_trend  and trend_dn ? col_trnd_Dn: trend_dn ? col_macd : na 

//Var Statements for Histogram Color Change
var bool histA_IsUp = false
var bool histA_IsDown = false
var bool histB_IsDown = false
var bool histB_IsUp = false
histA_IsUp   := hist == hist[1] ? histA_IsUp[1] : hist > hist[1] and hist > 0
histA_IsDown := hist == hist[1] ? histA_IsDown[1] : hist < hist[1] and hist > 0
histB_IsDown := hist == hist[1] ? histB_IsDown[1] : hist < hist[1] and hist <= 0
histB_IsUp   := hist == hist[1] ? histB_IsUp[1] : hist > hist[1] and hist <= 0

hist_col =  histA_IsUp ? col_grow_above : histA_IsDown ? col_fall_above : histB_IsDown ? col_grow_below : histB_IsUp ? col_fall_below :color.silver 

// Plot Statements
//Background Color
bgcolor(show_cross and cross_UP ? col_trnd_Up : na, editable=false)
bgcolor(show_cross and cross_DN ? col_trnd_Dn : na, editable=false)
//Highlight Price Bars
barcolor(show_HB and trend_up ? col_trnd_Up : na, title="Trend Up", offset = 0, editable=false)
barcolor(show_HB and trend_dn ? col_trnd_Dn : na, title="Trend Dn", offset = 0, editable=false)
//Regular Plots
plot(show_Hist and hist ? hist : na, title="Histogram", style=plot.style_columns, color=color.new(hist_col ,0),linewidth=show_hist_LW)
plot(show_macd  and signal ? signal : na, title="Signal", color=color.new(col_signal, 0),  style=plot.style_line ,linewidth=show_signal_LW)
plot(show_macd  and macd ? macd : na, title="MACD", color=color.new(trend_col, 0),  style=plot.style_line ,linewidth=show_macd_LW)
hline(0, title="0 Line", color=color.new(color.gray, 0), linestyle=hline.style_dashed, linewidth=1, editable=false)
plot(show_dots and cross_UP ? macd : na, title="Dots", color=color.new(trend_col ,0), style=plot.style_circles, linewidth=show_dots_LW, editable=false)
plot(show_dots and cross_DN ? macd : na, title="Dots", color=color.new(trend_col ,0), style=plot.style_circles, linewidth=show_dots_LW, editable=false)

//Alerts
if alert_Long and cross_UP
    alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD Crosses Up.", alert.freq_once_per_bar_close)

if alert_Short and cross_DN
    alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD Crosses Down.", alert.freq_once_per_bar_close)
//Alerts - Stricter Condition - Only Alerts When MACD Crosses UP & MACD > 0 -- Crosses Down & MACD < 0
if alert_Long_A and cross_UP_A
    alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD > 0 And Crosses Up.", alert.freq_once_per_bar_close)

if alert_Short_B and cross_DN_B
    alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD < 0 And Crosses Down.", alert.freq_once_per_bar_close)


if (histA_IsUp)
	strategy.entry("buy", strategy.long, comment="buy")
if (histA_IsDown)
	strategy.entry("sell", strategy.short, comment="sell")