
Strategi Dagangan Dinamik Momentum Oscillator Berasaskan pada indikator Dinamo yang dikemukakan oleh E. Marshall Wall dalam artikel yang diterbitkan pada bulan Julai 1996 dalam majalah Futures Futures, pengendalian normalisasi dilakukan pada oscillator standard untuk menghilangkan kesan trend.
Strategi ini pertama-tama mengira indeks rawak dengan panjang 10 hari (Stochastic Oscillator), kemudian mengira purata bergerak sederhana 10 hari untuk indeks itu, dan kemudian mengira purata bergerak 20 hari berdasarkan purata bergerak ini. Purata ini membentuk asas pengiraan oscillator dinamik dinamik.
Strategy kemudiannya mengira nilai tertinggi dan terendah indeks, dan kemudian mengira nilai tengah. Ia membezakan garis rata-rata 20 hari dengan indeks asal, dan kemudian mengurangkan perbezaan itu dari nilai tengah, membentuk alat geseran standard. Apabila nilai standard lebih tinggi daripada 77, ia lebih tinggi, dan jika ia lebih rendah daripada 23, ia lebih rendah.
Kelebihan utama strategi ini ialah:
Penggunaan penunjuk oscillator dinamik dinamik menghilangkan kesan trend, menjadikan isyarat perdagangan lebih dipercayai.
Gabungan dengan zon overbought dan oversold, ia boleh menghasilkan isyarat dagangan yang lebih tepat pada titik balik.
Peraturan-peraturan ini mudah difahami dan mudah dilaksanakan.
Risiko utama strategi ini ialah:
Indeks mungkin akan memberi isyarat yang salah apabila pasaran bergolak. Anda boleh menetapkan stop loss untuk mengawal risiko.
Dalam pasaran yang bergolak, isyarat palsu sering dihasilkan. Anda boleh menyesuaikan parameter dengan betul, menapis beberapa bunyi.
Frekuensi dagangan mungkin lebih tinggi, dan kos dagangan akan memberi kesan kepada keuntungan.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Uji data dari pelbagai pasaran untuk mencari kontrak terbaik dan kombinasi parameter yang optimum.
Menambah syarat penapisan untuk menilai kekuatan trend sebelum isyarat dikeluarkan, untuk mengelakkan kesesakan dalam keadaan gegaran.
Tambah mekanisme penangguhan kerugian. Apabila harga menembusi nilai terendah, pilih untuk menghentikan kerugian dan keluar.
Sistem perdagangan yang lebih kompleks boleh dibangunkan berdasarkan strategi ini, dan keputusan boleh dibuat dengan menggunakan pelbagai petunjuk lain.
Strategi perdagangan pendorong dinamik menghasilkan isyarat perdagangan yang lebih tepat di kawasan overbought dan oversold dengan menghapuskan kesan trend. Strategi ini mudah digunakan dan mudah dilaksanakan, tetapi terdapat risiko tertentu. Dengan pengoptimuman parameter dan peraturan, kestabilan dan keuntungan sistem dapat ditingkatkan lagi.
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 10/04/2017
// In July 1996 Futures magazine, E. Marshall Wall introduces the
// Dynamic Momentum Oscillator (Dynamo). Please refer to this article
// for interpretation.
// The Dynamo oscillator is a normalizing function which adjusts the
// values of a standard oscillator for trendiness by taking the difference
// between the value of the oscillator and a moving average of the oscillator
// and then subtracting that value from the oscillator midpoint.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading
////////////////////////////////////////////////////////////
strategy(title="Dynamo", shorttitle="Dynamo")
OscLen = input(10, minval=1)
MALen = input(20, minval=1)
HiBand = input(77, minval=1)
LowBand = input(23)
reverse = input(false, title="Trade reverse")
hline(HiBand, color=red, linestyle=line)
hline(LowBand, color=green, linestyle=line)
xOscK = stoch(close, high, low, OscLen)
xOscAvg = sma(xOscK, OscLen)
xMAVal = sma(xOscAvg, MALen)
maxNum = 9999999
LowestSoFar = iff(xOscAvg < nz(LowestSoFar[1], maxNum), xOscAvg, nz(LowestSoFar[1], maxNum))
HighestSoFar = iff(xOscAvg > nz(HighestSoFar[1]), xOscAvg, nz(HighestSoFar[1]))
MidPnt = (LowestSoFar + HighestSoFar) / 2
nRes = MidPnt - (xMAVal - xOscAvg)
pos = iff(nRes > HiBand, 1,
iff(nRes < LowBand, -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(nRes, color=blue, title="Dynamo")