Strategi Divergensi Arah Momentum

Penulis:ChaoZhang, Tanggal: 2023-12-27 15:37:31
Tag:

img

Gambaran umum

Strategi Momentum Direction Divergence adalah salah satu teknik yang dijelaskan oleh William Blau dalam bukunya Momentum, Direction and Divergence. Strategi ini berfokus pada tiga aspek utama: momentum, arah dan divergensi. Blau, yang merupakan insinyur listrik sebelum menjadi trader, secara menyeluruh memeriksa hubungan antara harga dan momentum. Dari dasar ini, ia kemudian melihat kekurangan dalam osilator lain dan memperkenalkan beberapa teknik inovatif, termasuk sentuhan baru pada Stochastics. Pada masalah arah, ia menganalisis kerumitan ADX dan menawarkan pendekatan unik untuk membantu menentukan periode tren dan non-tren.

Strategi plot Ergotic CSI dan garis halusnya untuk menyaring kebisingan.

Logika Strategi

Kode ini dimulai dengan mendefinisikan fungsi Adaptive Direction Index (ADX) fADX, yang mengambil parameter Len sebagai periode perataan. Fungsi ini menghitung RMA True Range (TR) sebagai penyebut, dan RMA momentum upside dan downside momentum sebagai pembilang, kemudian membagi mereka untuk mendapatkan rasio yang menunjukkan kekuatan relatif upside dan downside. Akhirnya, ADX diperoleh dengan menggabungkan kekuatan upside dan downside.

Kemudian parameter strategi didefinisikan. r adalah parameter smoothing untuk ATR, Length adalah panjang ADX, BigPointValue adalah nilai titik besar, SmthLen adalah panjang smoothing untuk CSI, SellZone dan BuyZone adalah zona jual dan beli yang memenuhi kriteria. terbalik menunjukkan apakah untuk membalikkan sinyal perdagangan.

Logika kunci adalah dalam perhitungan CSI. Pertama ATR dan ADX dihitung. Kemudian koefisien penalti K dihitung, menggabungkan pertimbangan nilai titik besar, ATR dan ADX. Residual nRes standar menggabungkan informasi dari ATR, ADX dan harga dekat. Akhirnya nilai CSI diperoleh, dan SMA dihitung.

Arah perdagangan ditentukan sesuai dengan nilai SMA dari CSI. Pergi panjang jika di atas BuyZone, pergi pendek jika di bawah SellZone. Plot kurva CSI dan SMA, kode warna zona perdagangan yang berbeda.

Analisis Keuntungan

Strategi ini menggabungkan keuntungan dari indikator momentum ATR dan indikator tren ADX, dengan mempertimbangkan volatilitas pasar dan kekuatan tren, menghindari keterbatasan menggunakan ATR atau ADX saja.

Standar residual nRes menggabungkan informasi harga, memperhatikan tidak hanya tren momentum tetapi juga tingkat harga absolut, yang berbeda dari osilator khas, meningkatkan kinerja strategi.

Proses penghalusan dan penentuan zona memberikan sinyal perdagangan yang jelas untuk perdagangan praktis.

Analisis Risiko

Strategi ini cukup sensitif terhadap pengaturan parameter seperti periode ATR dan ADX, nilai titik besar dll, yang dapat mempengaruhi kinerja.

Sebagai osilator yang baru diusulkan, efektivitas CSI perlu divalidasi di pasar yang lebih beragam.

Strategi itu sendiri tidak memiliki mekanisme stop loss, hanya langsung panjang atau pendek per sinyal CSI.

Arahan Optimasi

Uji kombinasi parameter di pasar yang berbeda untuk menemukan pengaturan yang relatif universal.

Memperkenalkan mekanisme periode ADX dinamis yang menyesuaikan parameter ADX berdasarkan kondisi pasar.

Menggabungkan indikator osilator lain untuk menentukan entri dan keluar untuk membuat strategi lebih kuat.

Tambahkan mekanisme stop loss untuk menyelesaikan strategi.

Ringkasan

Strategi Momentum Direction Divergence mengintegrasikan keuntungan dari beberapa indikator, memanfaatkan harga, momentum, dimensi tren untuk merancang indikator CSI untuk perdagangan.


/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/06/2018
// This is one of the techniques described by William Blau in his book 
// "Momentum, Direction and Divergence" (1995). If you like to learn more, 
// we advise you to read this book. His book focuses on three key aspects 
// of trading: momentum, direction and divergence. Blau, who was an electrical 
// engineer before becoming a trader, thoroughly examines the relationship between 
// price and momentum in step-by-step examples. From this grounding, he then looks 
// at the deficiencies in other oscillators and introduces some innovative techniques, 
// including a fresh twist on Stochastics. On directional issues, he analyzes the 
// intricacies of ADX and offers a unique approach to help define trending and 
// non-trending periods.
// This indicator plots Ergotic CSI and smoothed Ergotic CSI to filter out noise. 
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
fADX(Len) =>
    up = change(high)
    down = -change(low)
    trur = rma(tr, Len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

strategy(title="Ergodic CSI Backtest")
r = input(32, minval=1)
Length = input(1, minval=1)
BigPointValue = input(1.0, minval=0.00001)
SmthLen = input(5, minval=1)
SellZone = input(0.004, minval=0.00001)
BuyZone = input(0.024, minval=0.001)
reverse = input(false, title="Trade reverse")
hline(BuyZone, color=green, linestyle=line)
hline(SellZone, color=red, linestyle=line)
source = close
K = 100 * (BigPointValue / sqrt(r) / (150 + 5))
xTrueRange = atr(1) 
xADX = fADX(Length)
xADXR = (xADX + xADX[1]) * 0.5
nRes = iff(Length + xTrueRange > 0, K * xADXR * xTrueRange / Length,0)
xCSI = iff(close > 0,  nRes / close, 0)
xSMA_CSI = sma(xCSI, SmthLen)
pos = iff(xSMA_CSI > BuyZone, 1,
       iff(xSMA_CSI <= SellZone, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xCSI, color=green, title="Ergodic CSI")
plot(xSMA_CSI, color=red, title="SigLin")

Lebih banyak