Strategi ini menggunakan perubahan Volume On Balance (OBV) dan MACD untuk menjana isyarat dagangan. Ia menggabungkan indeks harga MACD dan OBV yang diubah sebagai penunjuk komprehensif untuk jumlah dan harga, bertujuan untuk menangkap peluang dagangan apabila harga dan kekuatan jumlah pecah.
Mengira purata bergerak mudah (SMA) untuk menentukan trend pasaran.
Mengira OBV yang diubah. Ia mengubahsuai pengiraan OBV berdasarkan harga dekat dan hubungan harga dekat sebelumnya untuk menjadikan OBV lebih sensitif.
Mengira MACD pada OBV yang diubah. MACD terdiri daripada garisan pantas, garisan perlahan dan histogram untuk mengenal pasti perubahan momentum jumlah.
Apabila MACD melintasi emas dan naik, isyarat beli dihasilkan.
Apabila MACD mati dan turun, isyarat jual dicetuskan.
Periksa SMA untuk mengelakkan perdagangan yang tidak perlu semasa pasaran tanpa trend.
OBV yang diubah lebih sensitif untuk menangkap perubahan jumlah awal.
MACD dengan jelas menunjukkan perubahan momentum jumlah dan tahap utama.
Jumlah dan harga gabungan isyarat meningkatkan ketepatan.
SMA menapis isyarat palsu dengan menentukan trend pasaran.
Logik strategi yang jelas dan ruang pengoptimuman yang besar.
OBV yang diubah boleh menghasilkan isyarat palsu, keperluan penapis dengan penunjuk lain.
Tetapan parameter MACD yang tidak betul boleh terlepas perdagangan atau menyebabkan isyarat palsu.
Perhatikan spesifikasi stok untuk mengelakkan kerugian.
Memantau keadaan pasaran kerana strategi mungkin tidak berfungsi untuk senario khas.
Risiko overfit backtest boleh membawa kepada prestasi yang lebih buruk dalam perdagangan langsung.
Uji kombinasi tempoh SMA yang berbeza untuk mengoptimumkan penentuan trend pasaran.
Uji parameter MACD untuk mengenal pasti perubahan momentum jumlah dengan lebih baik.
Tambahkan penunjuk lain sebagai penapis, seperti KDJ, RSI dll.
Tambah stop loss kepada had kerugian setiap perdagangan.
Mengoptimumkan pengurusan wang untuk meningkatkan keuntungan keseluruhan.
Perbezaan parameter ujian antara stok.
Strategi ini menggabungkan OBV dan MACD yang diubah untuk mencapai sintesis jumlah dan harga. Ia dapat menangkap perubahan momentum jumlah awal dan menghasilkan isyarat perdagangan. Berbanding dengan menggunakan OBV atau MACD sahaja, strategi ini memberikan peluang perdagangan yang lebih boleh dipercayai. Walau bagaimanapun, risiko isyarat palsu wujud dan pengoptimuman lebih lanjut pada penunjuk dan parameter, ditambah pengurusan wang diperlukan untuk mendapatkan keuntungan yang stabil dalam perdagangan langsung. Secara keseluruhan, strategi ini mempunyai logika yang jelas dan bernilai diuji dan dioptimumkan untuk meneroka potensinya.
/*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)