Strategi Divergensi Arah Momentum

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

img

Ringkasan

Strategi Divergensi Arah Momentum adalah salah satu teknik yang diterangkan oleh William Blau dalam bukunya Momentum, Arah dan Divergensi. Strategi ini memberi tumpuan kepada tiga aspek utama: momentum, arah dan divergensi. Blau, yang merupakan jurutera elektrik sebelum menjadi peniaga, meneliti secara menyeluruh hubungan antara harga dan momentum. Dari asas ini, dia kemudian melihat kekurangan dalam osilator lain dan memperkenalkan beberapa teknik inovatif, termasuk sentuhan baru pada Stochastics.

Strategi merangka Ergotic CSI dan garis yang halus untuk menapis bunyi bising.

Logika Strategi

Kod ini bermula dengan menentukan fungsi Indeks Arahan Adaptif (ADX) fADX, yang mengambil parameter Len sebagai tempoh pelunturan. Fungsi ini mengira RMA Julat Benar (TR) sebagai penyebut, dan RMA momentum naik dan momentum turun sebagai pembilang, kemudian membahagikannya untuk mendapatkan nisbah yang menunjukkan kekuatan relatif naik dan turun. Akhirnya, ADX diperoleh dengan menggabungkan kekuatan naik dan kekuatan turun.

Kemudian parameter strategi ditakrifkan. r adalah parameter pelusukan untuk ATR, Panjang adalah panjang ADX, BigPointValue adalah nilai titik besar, SmthLen adalah panjang pelusukan untuk CSI, SellZone dan BuyZone adalah zon jual dan beli yang memenuhi kriteria. kebalikan menunjukkan sama ada untuk membalikkan isyarat perdagangan.

Logik utama adalah dalam pengiraan CSI. Pertama ATR dan ADX dikira. Kemudian pekali penalti K dikira, menggabungkan pertimbangan nilai titik besar, ATR dan ADX. nRes sisa standard menggabungkan maklumat dari ATR, ADX dan harga dekat. Akhirnya nilai CSI diperoleh, dan SMAnya dikira.

Arah dagangan ditentukan mengikut nilai SMA CSI. Pergi panjang jika di atas BuyZone, pergi pendek jika di bawah SellZone. Plot kurva CSI dan SMA, kod warna zon dagangan yang berbeza.

Analisis Kelebihan

Strategi ini menggabungkan kelebihan penunjuk momentum ATR dan penunjuk trend ADX, mempertimbangkan kedua-dua turun naik pasaran dan kekuatan trend, mengelakkan batasan menggunakan ATR atau ADX sahaja.

NRes sisa standard menggabungkan maklumat harga, memberi perhatian bukan sahaja kepada trend momentum tetapi juga tahap harga mutlak, yang berbeza dari osilator biasa, meningkatkan prestasi strategi.

Proses penyelarasan dan penentuan zon memberikan isyarat perdagangan yang jelas untuk perdagangan praktikal.

Analisis Risiko

Strategi ini agak sensitif terhadap tetapan parameter seperti tempoh ATR dan ADX, nilai titik besar dan lain-lain, yang boleh mempengaruhi prestasi.

Sebagai osilator yang baru dicadangkan, keberkesanan CSI memerlukan pengesahan di pasaran yang lebih pelbagai.

Strategi itu sendiri tidak mempunyai mekanisme stop loss, hanya secara langsung panjang atau pendek setiap isyarat CSI.

Arahan pengoptimuman

Uji kombinasi parameter di pasaran yang berbeza untuk mencari tetapan yang agak universal.

Memperkenalkan mekanisme tempoh ADX dinamik yang menyesuaikan parameter ADX berdasarkan keadaan pasaran.

Menggabungkan penunjuk osilator lain untuk menentukan kemasukan dan keluar untuk menjadikan strategi lebih kukuh.

Tambah mekanisme stop loss untuk melengkapkan strategi.

Ringkasan

Strategi Divergensi Arah Momentum mengintegrasikan kelebihan pelbagai penunjuk, menggunakan dimensi harga, momentum, trend untuk merancang penunjuk CSI untuk perdagangan. Dengan tetapan parameter yang fleksibel dan kapasiti yang kuat, strategi ini layak diuji dan dioptimumkan lebih lanjut, dan boleh menjadi alat perdagangan kuantitatif yang bermanfaat.


/*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 lanjut