Strategi ini menggunakan volume pada saldo (OBV) dan MACD yang diubah untuk menghasilkan sinyal perdagangan. Ini menggabungkan indeks harga MACD dan OBV yang diubah sebagai indikator komprehensif untuk volume dan harga, yang bertujuan untuk menangkap peluang perdagangan ketika harga dan kekuatan volume pecah.
Menghitung rata-rata bergerak sederhana (SMA) untuk menentukan tren pasar.
Menghitung OBV yang diubah. Ini memodifikasi perhitungan OBV berdasarkan harga dekat dan hubungan harga dekat sebelumnya untuk membuat OBV lebih sensitif.
Menghitung MACD pada OBV yang diubah. MACD terdiri dari garis cepat, garis lambat dan histogram untuk mengidentifikasi perubahan momentum volume.
Ketika MACD melintasi emas dan naik, sinyal beli dihasilkan.
Ketika MACD mati silang dan turun, sinyal jual dipicu.
Periksa SMAs untuk menghindari perdagangan yang tidak perlu selama pasar tanpa tren.
OBV yang diubah lebih sensitif untuk menangkap perubahan volume awal.
MACD dengan jelas menunjukkan perubahan momentum volume dan tingkat kunci.
Sinyal yang dikombinasikan dengan volume dan harga meningkatkan akurasi.
SMA menyaring sinyal palsu dengan menentukan tren pasar.
Logika strategi yang jelas dan ruang pengoptimalan yang besar.
OBV yang diubah dapat menghasilkan sinyal palsu, filter kebutuhan dengan indikator lain.
Pengaturan parameter MACD yang tidak benar dapat kehilangan perdagangan atau menyebabkan sinyal palsu.
Perhatikan spesifikasi saham untuk menghindari kerugian.
Memantau kondisi pasar karena strategi mungkin tidak bekerja untuk skenario khusus.
Risiko overfit backtest dapat menyebabkan kinerja yang lebih buruk dalam perdagangan langsung.
Uji kombinasi periode SMA yang berbeda untuk mengoptimalkan penentuan tren pasar.
Uji parameter MACD untuk lebih mengidentifikasi perubahan momentum volume.
Tambahkan indikator lain sebagai filter, seperti KDJ, RSI dll.
Tambahkan stop loss ke limit loss per trade.
Mengoptimalkan pengelolaan uang untuk meningkatkan profitabilitas keseluruhan.
Perbedaan parameter pengujian antara stok.
Strategi ini menggabungkan OBV dan MACD yang diubah untuk mencapai sintesis volume dan harga. Ini dapat menangkap perubahan momentum volume lebih awal dan menghasilkan sinyal perdagangan. Dibandingkan dengan menggunakan OBV atau MACD saja, strategi ini memberikan peluang perdagangan yang lebih dapat diandalkan. Namun, risiko sinyal palsu ada dan pengoptimalan lebih lanjut pada indikator dan parameter, ditambah manajemen uang diperlukan untuk mendapatkan keuntungan yang stabil dalam perdagangan langsung. Secara keseluruhan, strategi ini memiliki logika yang jelas dan layak diuji dan dioptimalkan untuk mengeksplorasi 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)