Strategi mengikuti tren divergensi indikator MACD candlestick Pythagoras


Tanggal Pembuatan: 2024-02-04 15:06:58 Akhirnya memodifikasi: 2024-02-04 15:06:58
menyalin: 0 Jumlah klik: 745
1
fokus pada
1617
Pengikut

Strategi mengikuti tren divergensi indikator MACD candlestick Pythagoras

Ringkasan

Strategi ini menghasilkan sinyal perdagangan dengan menghitung indikator MACD dan garis pilar MACD, mendeteksi sinyal deviasi antara garis pilar MACD dan pergerakan harga. Ketika harga tinggi baru terdeteksi tetapi garis pilar MACD tidak menciptakan tinggi baru, menghasilkan sinyal deviasi bullish; Ketika harga rendah baru terdeteksi tetapi garis pilar MACD tidak menciptakan rendah baru, menghasilkan sinyal deviasi bullish.

Prinsip Strategi

Prinsip inti dari strategi ini adalah menggunakan indikator MACD dan karakteristik MACD pilarnya yang mencerminkan perubahan tren harga untuk mendeteksi sinyal deviasi antara MACD pilar dan harga sebagai pemicu sinyal perdagangan.

Secara khusus, strategi pertama menghitung garis MACD, garis sinyal, dan garis MACD. Kemudian dengan mendefinisikan fungsi fraktal, mendeteksi puncak dan lembah dari garis MACD, mengekstrak nilai maksimum dan minimum lokal. Kemudian menggabungkan harga tertinggi dan terendah untuk menentukan apakah ada perbedaan antara garis MACD dan harga.

Ketika harga membuat tinggi baru, tetapi garis MACD tidak membuat tinggi baru, maka akan muncul sinyal regulark_bearish_div turun mundur; ketika harga membuat rendah baru, tetapi garis MACD tidak membuat rendah baru, maka akan muncul sinyal regulark_bullish_div turun mundur.

Terakhir, strategi ini mengeluarkan perintah untuk melakukan short dan long, masing-masing, ketika sinyal bearish back and bearish back terjadi, dan keluar dari posisi dengan ATR stop loss dan stop loss.

Analisis Keunggulan

Strategi ini memiliki beberapa keuntungan:

  1. Dengan menggunakan fitur misalignment antara garis MACD dan harga, perubahan tren harga dapat ditangkap lebih awal.

  2. ATR Stop Loss Stop setting yang masuk akal dan efektif untuk mengontrol kerugian maksimum dalam satu transaksi.

  3. Menggunakan metode trend-following, Anda dapat mengunci keuntungan maksimal.

  4. Pengaturan parameter yang masuk akal, dapat memfilter beberapa sinyal perdagangan bising.

  5. Strategi logis yang jelas dan mudah dipahami, dan mudah untuk divalidasi di lapangan.

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Jika MACD menyimpang, maka harga tidak akan berbalik, dan ada risiko sinyal palsu.

  2. Pengaturan stop loss yang tidak masuk akal dapat menyebabkan kerugian terlalu besar atau keuntungan terlalu kecil.

  3. Periode sinyal yang menyimpang terlalu pendek, mungkin disebabkan oleh kebisingan, dan harus disaring dengan tepat.

  4. Varietas perdagangan dan parameter yang tidak cocok juga dapat mempengaruhi efektivitas strategi.

Solusi yang sesuai:

  1. Dengan memperbesar deviasi panjang dan deviasi lebar yang diperlukan, filter sinyal palsu.

  2. Menggunakan ATR sebagai stop loss stop loss, dan menyesuaikan ATR multiplier untuk mengontrol risiko transaksi tunggal.

  3. Pilih parameter yang berbeda untuk varietas perdagangan yang berbeda. Optimalkan parameter untuk menemukan kombinasi parameter terbaik.

Arah optimasi

Strategi ini juga dapat dioptimalkan dalam beberapa arah:

  1. Konfirmasi deviasi yang lebih kompleks, seperti Konfirmasi deviasi Volume.

  2. Mengoptimalkan parameter MACD, mencari kombinasi parameter terbaik.

  3. Mengoptimalkan ATR Stop Loss Stop Stop Multiples.

  4. Menambahkan algoritma pembelajaran mesin untuk membantu menilai keandalan sinyal yang menyimpang.

  5. Meningkatkan prediksi model untuk menilai probabilitas reversal harga.

  6. Parameter strategi disesuaikan secara dinamis dengan perubahan lingkungan pasar.

Meringkaskan

Secara keseluruhan, indikator MACD yang digambarkan oleh PIDACO ini jauh dari strategi pelacakan tren, memanfaatkan karakteristik MACD yang jauh dari garis pilar dan harga untuk menangkap tren. ATR Stop Loss Setup masuk akal, dapat mengontrol risiko perdagangan tunggal. Logika strategi ini jelas dan mudah dimengerti, layak untuk diperiksa di lapangan.

Kode Sumber Strategi
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bigwin_sun
// copyright: Tradingvue Limited    

//@version = 5
strategy(title = "Demigod : CDMA histogram Divergence strategy", shorttitle = "Demigod strategy", overlay = false, pyramiding = 100)

//macd input
fastMA = input.int(13, title = "fast Length", minval = 1,     group = "CDMA")
slowMA = input.int(34, title = "slow Length", minval = 1,     group = "CDMA")
src          = input.source(title = "source", defval = close, group = "CDMA")
signalSmooth = input.int(9, title="ma Length", minval = 1,    group = "CDMA")
//Divergenc
divLength    = input.int(title = "Divergenc Length",   defval = 5, minval = 1,   maxval = 50,  inline = "ATRLength",  group = "Divergence")
divStren     = input.float(title="Divergenc Strength", defval = 2, minval = 1.0, maxval = 5.0, inline = "ATRLength",  group = "Divergence")

//atr input
atrLength = input.int(13, title = "ATR Length", minval = 1,   inline = "ATRLength", group = "ATR")
m         = input.float(1.0,  "ATR multyple",   minval = 0.5, inline = "ATRLength", group = "ATR", step = 0.5)
collong   = input.color(color.teal, title = "upper color",  inline = "ATR显示", group = "ATR")
colshort  = input.color(color.red,  title = "under color",  inline = "ATR显示", group = "ATR")

// MACD---------------------------------------------------------------------------------------------------------------------------------
DivOffset = -2
macdLine   = ta.ema(src, fastMA) - ta.ema(src, slowMA)    
signalLine = ta.ema(macdLine, signalSmooth)
histogram  = macdLine - signalLine

histogramColor = if histogram > 0
    histogram > histogram[1] ? color.lime : color.green
else 
    histogram < histogram[1] ? color.maroon : color.red

// cdma histogram
plot(histogram, title = "MACD histogram", linewidth = 2, style = plot.style_histogram, color = histogramColor)
plot(0,         title = "zero line",      linewidth = 1,                               color = color.gray)

// Divergenc calculation-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//peak / valley fundation
f_top_fractal(_src)=>_src[4] < _src[2] and _src[3] < _src[2] and _src[2] > _src[1] and _src[2] > _src[0] and _src > 0
f_bot_fractal(_src)=>_src[4] > _src[2] and _src[3] > _src[2] and _src[2] < _src[1] and _src[2] < _src[0] and _src < 0
f_fractalize(_src)=>f_top_fractal(_src) ? 1 : f_bot_fractal(_src) ? -1 : 0

//peak / valley value
fractal_top1 = f_fractalize(histogram) > 0 ? true : false //histogram[2] : na
fractal_bot1 = f_fractalize(histogram) < 0 ? true : false //histogram[2] : na

//previouse peak or valley
high_prev1  = ta.valuewhen(fractal_top1, histogram[2], 0)[2]
high_price1 = ta.valuewhen(fractal_top1, high[2], 0)[2]
low_prev1   = ta.valuewhen(fractal_bot1, histogram[2], 0)[2]
low_price1  = ta.valuewhen(fractal_bot1, low[2], 0)[2]

//Divergenc : cdma histogram against candle value
regular_bearish_div1 = high[2] > high_price1 + divStren and histogram[2] < high_prev1 / divStren and ta.barssince(fractal_top1[1]) > divLength
regular_bullish_div1 = low[2]  < low_price1 - divStren  and histogram[2] > low_prev1 / divStren  and ta.barssince(fractal_bot1[1]) > divLength

//-------------------------cdma Divergenc range------------------------------------------------
//histogramColor
col1 = regular_bearish_div1 ? color.red : na
col2 = regular_bullish_div1 ? #00FF00EB : na
//plot
plot(title='看跌背离', series= fractal_top1 ? histogram[2] : na, color=col1, linewidth=3, offset=DivOffset)
plot(title='看涨背离', series= fractal_bot1 ? histogram[2] : na, color=col2, linewidth=3, offset=DivOffset)

// calculate ATR				--------------------------------------------------------------------------------------------------------------------------------------------------
atr = ta.ema(ta.tr(true), atrLength) * m
up = atr + high
dw = low - atr

//stratety : enrty and exit---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
if regular_bearish_div1 and fractal_top1
//if regular_bullish_div1 and fractal_bot1
    //label.new(bar_index, histogram[2], text = "Short", textcolor = color.white, color = color.gray,  style = label.style_label_lower_left)
    strategy.entry("Short", strategy.short, qty = 1)
    strategy.exit("exitShort", "Short", stop = up, limit = dw - atr)
if regular_bullish_div1 and fractal_bot1
//if regular_bearish_div1 and fractal_top1   
    //label.new(bar_index, histogram[2], text = "Long", textcolor = color.white, color = color.fuchsia, style = label.style_label_upper_left)
	strategy.entry("Long", strategy.long, qty = 1)
    strategy.exit("exitLong", "Long", stop = dw, limit = up + atr)