
Strategi Pemisahan Arah Momentum adalah salah satu daripada teknik yang dijelaskan oleh William Blau dalam bukunya, Momentum, Arah dan Perbezaan. Strategi ini memberi tumpuan kepada tiga aspek penting: Momentum, Arah dan Perbezaan. Encik Blau, seorang jurutera elektrik dan kemudian seorang peniaga, mengkaji hubungan antara harga dan kuantiti.
Strategi ini memetakan indeks penyebaran arah tenaga ((Ergotic CSI) dan garisan kelancaran untuk penapisan kebisingan.
Permulaan kod mendefinisikan fungsi fADX yang bersesuaian dengan indeks arah bergerak (((ADX), yang menerima parameter Len yang mewakili kitaran licin. Fungsi ini mengira rentang sebenar (((TR) untuk purata bergerak pilihan (((RMA) sebagai pembahagian, mengira jumlah gerak multihead dan gerak tanpa kepala (RMA) sebagai molekul, kemudian membahagikan nisbah hasil, yang menunjukkan kekuatan relatif multihead dan tanpa kepala. Akhirnya, nilai ADX diperoleh melalui formula yang menggabungkan kekuatan multihead dan kekuatan tanpa kepala.
Kemudian adalah definisi parameter strategi. r mewakili parameter kelancaran ATR, Length mewakili panjang ADX, BigPointValue mewakili nilai titik besar, SmthLen mewakili panjang kelancaran CSI, SellZone dan BuyZone mewakili zon jual dan beli yang memenuhi syarat.
Logik utama dalam mengira CSI. Pertama, mengira amplitudo riak sebenar ATR dan ADX. Kemudian, mengira pekali hukuman K, yang mengandungi nilai titik besar, ATR dan pertimbangan ADX.
Arah perdagangan ditentukan berdasarkan nilai SMA CSI. Jika lebih tinggi daripada BuyZone, ia akan menjadi lebih banyak, dan jika lebih rendah daripada SellZone, ia akan menjadi kosong. Gambarkan keluk CSI dan SMA-nya, dan tanda warna untuk kawasan perdagangan yang berbeza.
Strategi ini menggabungkan kelebihan indikator momentum ATR dan indikator trend ADX, mempertimbangkan kedua-dua turun naik pasaran dan tahap trend, mengelakkan batasan hanya menggunakan ATR dan hanya menggunakan ADX. Reka bentuk faktor penalti K dengan bijak menggabungkan hubungan antara indikator ini dengan nilai titik besar.
Kelemahan piawaian nRes ditambah dengan penggunaan maklumat harga, memberi perhatian kepada bukan sahaja trend dinamik, tetapi juga tahap mutlak harga, yang berbeza dengan pengayun biasa, meningkatkan prestasi strategi.
Pengendalian lancar dan penghakiman segmen menyediakan isyarat perdagangan yang jelas untuk membuat keputusan strategik, yang membantu operasi dalam talian.
Kaedah ini sensitif kepada tetapan parameter, seperti panjang kitaran ATR dan ADX, tetapan nilai titik besar, parameter kelancaran CSI, dan lain-lain yang akan mempengaruhi prestasi. Kombinasi parameter yang sesuai perlu ditentukan melalui banyak pengulangan.
CSI sebagai sebuah pengayun baru yang dicadangkan, keberkesanannya perlu disahkan di lebih banyak pasaran yang berbeza. Jika penunjuk itu tidak berfungsi dengan baik, ia akan menjejaskan keuntungan strategi.
Strategi itu sendiri tidak mempunyai mekanisme hentian, secara langsung melakukan lebih banyak shorting mengikut isyarat CSI, terdapat risiko tertentu, yang perlu digunakan dalam kombinasi dengan hentian.
Anda boleh menguji kombinasi parameter dalam pasaran yang berbeza untuk mencari kombinasi yang lebih umum.
Mekanisme panjang kitaran ADX dinamik boleh diperkenalkan, menyesuaikan parameter ADX mengikut keadaan pasaran.
Ia boleh digabungkan dengan indikator osilator lain untuk menentukan masa untuk membeli atau menjual, menjadikan strategi lebih stabil.
Anda boleh menambah strategi stop loss untuk menyempurnakan keseluruhan strategi anda.
Strategi penyebaran arah momentum mengintegrasikan kelebihan pelbagai petunjuk, menggunakan harga, momentum, dan trend untuk merancang petunjuk CSI dan melakukan perdagangan. Tetapan parameter strategi ini fleksibel, berprestasi, layak untuk diuji dan dioptimumkan lebih lanjut, dan boleh menjadi alat yang menguntungkan untuk perdagangan kuantitatif.
/*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")