Strategi Momentum Silang Purata Pergerakan Berganda


Tarikh penciptaan: 2023-11-16 17:25:13 Akhirnya diubah suai: 2023-11-16 17:25:13
Salin: 0 Bilangan klik: 651
1
fokus pada
1617
Pengikut

Strategi Momentum Silang Purata Pergerakan Berganda

Gambaran keseluruhan

Strategi ini menggunakan prinsip persimpangan dua garis sejajar, menggabungkan penghakiman trend dan titik persimpangan latar belakang yang menonjol dari penunjuk MACD, dibantu dengan titik bentuk, bertujuan untuk menangkap trend pertengahan pasaran. Logik utama adalah masuk ke dalam pasaran ketika peralihan berlaku ke arah garis sejajar, masuk ke dalam titik persimpangan yang menonjol melalui warna latar belakang MACD, dengan penghakiman perubahan warna carta lurus MACD.

Prinsip Strategi

Strategi menggunakan EMA pantas dan EMA perlahan untuk membina garis rata-rata dua, garis pantas dan perlahan untuk menentukan arah trend. Pada masa yang sama, mengira MACD dan isyarat, yang berbeza digambarkan sebagai peta lurus.

Berdasarkan kod, panjang garisan pantas adalah 12, dan panjang garisan perlahan adalah 26, yang menunjukkan trend jangka pendek dan jangka panjang. Panjang isyarat adalah 9, untuk pemprosesan tambahan.

Logik silang:

  • trend_up = macd > signal: melintasi garis perlahan di atas garis pantas, mewakili trend naik dalam jangka pendek
  • trend_dn = macd < signal: garis laju di bawah garis perlahan, mewakili trend menurun jangka pendek

Pertimbangan titik persimpangan:

  • cross_UP = signal[1] >= macd[1] and signal < macd: garisan pantas melintasi garisan perlahan dari bawah
  • cross_DN = signal[1] <= macd[1] and signal > macd: fast line melalui slow line dari atas ke bawah

Perubahan warna pada carta persegi panjang untuk menilai kekuatan trend:

  • histA_IsUp = Saiz garisan lurus meningkat dan lebih besar daripada 0, yang mewakili peningkatan kekuatan
  • histA_IsDown = tiang grafik lurus berkurang dan lebih besar daripada 0, yang mewakili penurunan daya naik
  • Perbezaan di bawah

Kelebihan Strategik

  1. Menggunakan dua garis keseimbangan untuk menentukan arah trend pertengahan, mengelakkan gangguan oleh bunyi pasaran jangka pendek

  2. Penunjuk MACD membantu menentukan trend dan kekuatan jangka pendek, meningkatkan peluang keuntungan

  3. Perubahan warna dalam grafik garisan lurus menentukan saiz intensiti, untuk mengetahui masa kemasukan yang lebih baik

  4. Tanda latar belakang titik persimpangan, mudah dilihat

  5. Siklus rata-rata yang boleh disesuaikan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza

  6. Parameter MACD boleh disesuaikan untuk mengoptimumkan kesan indikator

  7. Pelbagai jenis pengesahan kemasukan disediakan: arah garis rata, penempatan penunjuk, penembusan bentuk

Risiko Strategik

  1. Keputusan binari tidak sensitif terhadap pergerakan jangka pendek dan mungkin terlepas peluang garis pendek

  2. Parameter MACD tidak betul, penunjuk tidak berfungsi dengan baik, memberi isyarat yang salah

  3. Terdapat kebutaan tertentu hanya dengan garis rata dan isyarat MACD masuk

  4. Tidak mempertimbangkan mekanisme penarikan diri daripada kerugian, risiko peningkatan kerugian

  5. Kekurangan pengurusan dana dan kawalan kedudukan yang ketat

Mungkin penyelesaian:

  1. Menghadapi risiko dengan mengehadkan jangkauan turun naik jangka pendek

  2. Mengoptimumkan parameter MACD untuk menguji keberkesanan di pasaran yang berbeza

  3. Tambah bentuk, faktor seperti Momentum untuk mengesahkan isyarat

  4. Menubuhkan mekanisme halangan kerugian untuk mengelakkan kerugian tunggal yang berlebihan

  5. Menambah modul pengurusan wang untuk mengawal kedudukan tunggal mengikut saiz wang

Arah pengoptimuman strategi

  1. Uji optimasi kombinasi parameter rata-rata untuk lebih banyak keadaan pasaran

  2. Cuba jenis talian rata yang berbeza, seperti VWAP, talian tengah pita dan lain-lain

  3. Meningkatkan pertimbangan untuk mengelakkan penembusan palsu

  4. Indikator RSI dan lain-lain yang mengesahkan kegemilangan

  5. Menubuhkan mekanisme penghadaman yang baik, seperti penghadaman bergerak, penghadaman gegaran dan sebagainya

  6. Menyertai mekanisme pengurusan kedudukan, mengawal kedudukan tunggal mengikut saiz dana

  7. Pengoptimuman parameter yang digabungkan dengan algoritma pembelajaran mesin boleh dipertimbangkan

  8. Strategi Pelancaran Universe, Pelancaran Pelaburan Portfolio

ringkaskan

Strategi ini mengintegrasikan penilaian trend dua garis rata dan indikator dinamik MACD, menambah ciri bentuk, dan membina strategi perdagangan jangka menengah yang agak stabil. Kelebihan utamanya adalah untuk memahami arah trend utama dan mengelakkan gangguan oleh bunyi pasaran jangka pendek. Tetapi ada juga ruang untuk pengoptimuman, seperti mekanisme halangan, pengurusan risiko, dan sebagainya.

Kod 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")