Strategi Mengikuti Tren MACD Crossover Rata-rata Pergerakan Ganda


Tanggal Pembuatan: 2024-01-23 11:22:02 Akhirnya memodifikasi: 2024-01-23 11:22:02
menyalin: 1 Jumlah klik: 594
1
fokus pada
1617
Pengikut

Strategi Mengikuti Tren MACD Crossover Rata-rata Pergerakan Ganda

Ringkasan

Strategi ini adalah strategi perdagangan otomatis yang didasarkan pada indikator teknis MACD yang bergeser dengan dua rata-rata bergerak. Ini menggunakan sinyal lintas garis cepat dan lambat dari indikator MACD untuk menilai arah tren dan melakukan pelacakan tren.

Prinsip Strategi

Strategi ini pertama-tama menghitung tiga garis kurva MACD: garis cepat, garis lambat, dan garis deviasi. Garis cepat adalah rata-rata bergerak yang lebih cepat dalam periode tertentu, dan garis lambat adalah rata-rata bergerak yang lebih lama. Garis deviasi adalah perbedaan antara garis cepat dan garis lambat.

Strategi ini memanfaatkan prinsip ini untuk melakukan over pada saat Gold Fork dan berposisi pada saat Dead Fork; atau melakukan shorting pada saat Dead Fork dan berposisi pada saat Gold Fork dan melakukan trend tracking secara otomatis. Pada saat yang sama, strategi ini juga menilai nilai mutlak dari garis MACD positif-negatif, menghindari sinyal palsu, dan memastikan benar-benar menangkap titik balik tren.

Keunggulan Strategis

  • Menggunakan dua rata-rata bergerak untuk menentukan arah tren dan menangkap pergeseran tren dengan tepat
  • Indikator teknis MACD mengurangi sinyal palsu dan meningkatkan kualitas sinyal
  • Fleksibilitas untuk melakukan lebih banyak atau hanya lebih banyak/kosong
  • Parameter dapat disesuaikan dengan kondisi pasar yang berbeda

Risiko Strategis

  • Garis tengah bergerak dua kali berturut-turut tertinggal dan mungkin akan kehilangan sebagian keuntungan pada awal pergeseran
  • Indeks MACD mudah menghasilkan sinyal palsu di pasar yang bergoyang
  • Parameter harus disesuaikan dengan benar untuk menghindari terlalu sensitif atau lambat

Solusi untuk Mengatasi Risiko:

  • Kombinasi sinyal filter dengan indikator lain
  • Mengatur parameter untuk mengurangi frekuensi transaksi
  • Strategi ini hanya digunakan ketika tren sudah jelas.

Arah optimasi strategi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Dalam kombinasi dengan indikator lain, seperti indikator KDJ, indikator Brin, dan lain-lain, filter sinyal palsu

  2. Perubahan mekanisme masuk ke lapangan, seperti penambahan filter penembusan, untuk menghindari masuk yang dini atau terlambat

  3. Pengaturan parameter yang dioptimalkan, menyesuaikan siklus jalur cepat dan lambat sesuai dengan siklus yang berbeda dan lingkungan pasar

  4. Menambahkan strategi stop loss untuk mengendalikan kerugian tunggal

  5. Dapat diperluas ke varietas lain, seperti valuta asing, mata uang digital, dan lain-lain

Meringkaskan

Strategi pelacakan tren MACD lintas rata-rata bergerak ganda, menggunakan indikator MACD untuk menentukan arah tren, dengan sinyal filter lintas garis cepat dan lambat, dapat secara efektif menangkap pergeseran tren, mengikuti tren secara otomatis. Keunggulan strategi adalah presisi dalam menentukan tren, parameter dapat disesuaikan secara fleksibel, dapat dioptimalkan sesuai dengan lingkungan pasar. Perlu berhati-hati untuk mengendalikan risiko dan menghindari sinyal palsu.

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