Strategi Mengikuti Trend MACD Purata Pergerakan Berganda Crossover


Tarikh penciptaan: 2024-01-23 11:22:02 Akhirnya diubah suai: 2024-01-23 11:22:02
Salin: 1 Bilangan klik: 594
1
fokus pada
1617
Pengikut

Strategi Mengikuti Trend MACD Purata Pergerakan Berganda Crossover

Gambaran keseluruhan

Strategi ini adalah strategi perdagangan automatik yang berdasarkan kepada penunjuk teknikal MACD yang bersilang dengan purata bergerak ganda. Ia menggunakan isyarat persilangan garis laju dan perlahan dari penunjuk MACD untuk menentukan arah trend dan melakukan pemantauan trend.

Prinsip Strategi

Strategi ini mula-mula mengira tiga garis kurva MACD: garis cepat, garis perlahan, dan garis selang. Garis cepat adalah purata bergerak yang lebih cepat dalam tempoh tertentu, dan garis perlahan adalah purata bergerak yang lebih lama. Garis selang adalah perbezaan antara garis cepat dan garis perlahan.

Strategi ini menggunakan prinsip ini, melakukan lebih banyak semasa garpu emas, posisi kosong semasa garpu mati; atau kosong semasa garpu mati, posisi kosong semasa garpu emas, mewujudkan trend pengesanan automatik. Pada masa yang sama, strategi ini juga menilai nilai mutlak garis MACD positif negatif, mengelakkan isyarat palsu, memastikan benar-benar menangkap titik perubahan trend.

Kelebihan Strategik

  • Menggunakan purata bergerak berganda untuk menentukan arah trend dan menangkap perubahan trend dengan tepat
  • Penunjuk teknikal MACD mengurangkan isyarat palsu dan meningkatkan kualiti isyarat
  • Fleksibiliti untuk membuat lebih banyak atau hanya lebih banyak / kosong
  • Parameter boleh disesuaikan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza

Risiko Strategik

  • Garis tengah bergerak dua kali terlewat dan mungkin terlepas sebahagian keuntungan pada permulaan giliran
  • Indeks MACD mudah menghasilkan isyarat palsu dalam pasaran yang bergolak
  • Perlu menyesuaikan parameter dengan betul untuk mengelakkan terlalu sensitif atau lambat

Penyelesaian risiko:

  • Gabungan dengan petunjuk lain untuk menapis isyarat
  • Menyesuaikan parameter untuk mengurangkan kekerapan transaksi
  • Strategi ini hanya digunakan apabila trend sudah jelas.

Arah pengoptimuman strategi

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Bersama-sama dengan isyarat pengesahan petunjuk lain, seperti petunjuk KDJ, petunjuk Brin dan sebagainya, penapis isyarat palsu

  2. Pembaharuan mekanisme kemasukan, seperti penambahan penapis penembusan, untuk mengelakkan kemasukan awal atau lewat

  3. Tetapan parameter yang dioptimumkan, menyesuaikan kitaran garis cepat dan perlahan mengikut kitaran yang berbeza dan keadaan pasaran, menyesuaikan diri dengan pasaran

  4. Menyertai strategi stop loss untuk mengawal kerugian tunggal

  5. Boleh diperluaskan kepada varian lain, seperti mata wang asing, mata wang digital dan lain-lain.

ringkaskan

Strategi pengesanan trend MACD silang dua rata-rata bergerak ini, menggunakan petunjuk MACD untuk menentukan arah trend, dengan isyarat penapis silang garis perlahan, dapat menangkap perubahan trend dengan berkesan, mengikuti trend secara automatik. Kelebihan strategi adalah dalam menentukan trend dengan tepat, parameter disesuaikan dengan fleksibel, dapat dioptimumkan mengikut keadaan pasaran. Perlu berhati-hati untuk mengawal risiko dan mengelakkan menghasilkan isyarat palsu.

Kod sumber strategi
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DeMindSET

//@version=4
strategy("MACD Trend Follow Strategy", overlay=false)
// Getting inputs
LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"]) 
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)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// 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(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
//
Bull= macd > signal
Bear= macd < signal
ConBull=macd>0
ConBear=macd<0
//
Green= Bull and ConBull
Red= Bear and ConBear
Yellow= Bull and ConBear
Blue= Bear and ConBull
//
bcolor = Green ? color.green : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na
barcolor(color=bcolor)
// === INPUT BACKTEST RANGE ===
FromYear  = input(defval = 2019, title = "From Year", minval = 1920)
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()  => true // create function "within window of time"

if LSB == "Long only" and Green
    strategy.entry("L",true)
if LSB == "Long only" and Red
    strategy.close("L",qty_percent=100,comment="TP Long")
if LSB == "Both" and Green
    strategy.entry("L",true)
if LSB == "Both" and Red
    strategy.entry("S",false)
if LSB == "Short only" and Red
    strategy.entry("S",false)
if LSB == "Short only" and Green
    strategy.close("S",qty_percent=100,comment="TP Short")