Strategi perdagangan kuantitatif berdasarkan OBV dan MACD yang dimodifikasi


Tanggal Pembuatan: 2023-11-15 17:58:42 Akhirnya memodifikasi: 2023-11-15 17:58:42
menyalin: 0 Jumlah klik: 858
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif berdasarkan OBV dan MACD yang dimodifikasi

Ringkasan

Strategi ini didasarkan pada perubahan indikator omnibus volume (OBV) dan MACD untuk menilai sinyal perdagangan, yang merupakan strategi komprehensif kuantitatif. Ini menggabungkan indeks saham MACD dan perubahan OBV sebagai sinyal komprehensif kuantitatif, yang bertujuan untuk menemukan peluang perdagangan yang kuat untuk menembus harga saham.

Prinsip Strategi

  1. Menghitung SMA untuk menilai tren pasar besar.

  2. Ini mengubah cara penghitungan OBV berdasarkan hubungan antara harga penutupan dan harga penutupan hari sebelumnya, membuat OBV lebih sensitif.

  3. Perhitungan MACD pada OBV yang berubah. MACD terdiri dari garis cepat, garis lambat, dan kolom MACD, yang dapat menemukan tren perubahan kuantitatif.

  4. Ketika MACD Gold Forks dan ke atas, dinilai sebagai sinyal beli.

  5. Ketika MACD mati dan kebawah, dinilai sebagai sinyal jual.

  6. “Saya tidak tahu apa-apa, tapi saya pikir itu akan menjadi masalah besar”, katanya.

Analisis Keunggulan

  1. Modifikasi OBV lebih sensitif dan dapat menangkap perubahan kuantitatif lebih awal.

  2. MACD dapat dengan jelas menilai perubahan tren dan titik-titik penting.

  3. Sinyal komprehensif untuk meningkatkan akurasi sinyal.

  4. SMA menilai tren saham besar, membantu memfilter sinyal yang salah.

  5. Strategi yang jelas dan mudah dimengerti, dan banyak ruang untuk mengoptimalkan parameter.

Analisis risiko

  1. Modifikasi OBV mudah menimbulkan sinyal yang salah, dan perlu bekerja sama dengan penyaringan indikator lainnya.

  2. Jika parameter MACD tidak diatur dengan benar, peluang perdagangan akan terlewatkan atau sinyal yang salah akan dihasilkan.

  3. Perlu memperhatikan informasi tentang saham itu sendiri, untuk menghindari kerugian yang disebabkan oleh masalah saham.

  4. Perlu memperhatikan kondisi pasar, tidak berlaku untuk situasi khusus.

  5. Data yang didapatkan dari pengamatan tersebut tidak sesuai dengan data yang ada di dunia maya.

Arah optimasi

  1. Uji kombinasi siklus SMA yang berbeda untuk mengoptimalkan penilaian tren pasar besar.

  2. Uji pengaturan parameter MACD untuk mengoptimalkan perubahan penilaian.

  3. Tambahkan indikator lain untuk memfilter sinyal yang salah, seperti KDJ, RSI, dll.

  4. Tambahkan strategi stop loss untuk mengendalikan kerugian tunggal.

  5. Optimalkan strategi pengelolaan dana untuk meningkatkan efektivitas keuntungan secara keseluruhan.

  6. Uji perbedaan parameter strategi saham yang berbeda.

Meringkaskan

Strategi ini menggabungkan perubahan indikator OBV dan MACD, mencapai kombinasi kuantitatif dan kuantitatif, dapat menangkap perubahan dalam dinamika kuantitatif saham lebih awal, sehingga menghasilkan sinyal perdagangan. Strategi ini dapat memberikan peluang jual beli yang lebih andal dibandingkan dengan penggunaan OBV atau MACD saja. Tetapi strategi ini juga memiliki risiko mis-sinyal tertentu, perlu lebih mengoptimalkan portofolio indikator dan pengaturan parameter, dan dilengkapi dengan alat manajemen modal, untuk mendapatkan keuntungan yang stabil di pasar saham.

Kode Sumber Strategi
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot

//@version=5
strategy("Altered OBV On MACD", overlay=true, margin_long=100, margin_short=100)

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot
//@version=5
//SMA Tredline
out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)
//sma plot
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200", offset=offset)
plot(outf, color=color.maroon, title="MA50", offset=offset)
plot(outn, color=color.orange, title="MA90", offset=offset)
plot(outt, color=color.olive, title="MA21", offset=offset)
plot(outthree, color=color.fuchsia, title="MA9", offset=offset)

fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
chng = 0
obv = ta.cum(math.sign(ta.change(close)) * volume)
if close < close[1] and (open < close)
    chng := 1
else if close > close[1]
    chng := 1
else
    chng := -1
obvalt = ta.cum(math.sign(chng) * volume)
//src = input(title="Source", defval=close)
src = obvalt
signal_length = input.int(title="Signal Smoothing",  minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])

// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
//hline(0, "Zero Line", color=color.new(#787B86, 50))
//plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)))
//plot(macd, title="MACD", color=col_macd)
//plot(signal, title="Signal", color=col_signal)
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)
//BUY Signal
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macd,2)
macdlong = ta.crossover(macd, signal)
longCondition=false
if macdlong and macdrise
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macd,1)
macdsell = macd < signal
shortCondition = false
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
    shortCondition := true


if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)