
Strategi ini adalah satu daripada jenis strategi yang membezakan kuantiti dan harga. Strategi ini menggabungkan dinamika kuantiti dan harga untuk menilai kesan utama perubahan kuantiti pada harga untuk menangkap titik perubahan trend.
Hitung kadar perubahan kadar pertukaran (rata-rata perubahan nilai perbezaan pertukaran), dan dapatkan nresult berdasarkan dinamika pertukaran.
Untuk nresult mengira tali pinggir Brin, dan mendapat bbr yang mewakili perbezaan piawaian momentum kuantitatif.
Untuk harga penutupan, band Brin dikira, yang mewakili perbezaan harga piawai bbr1.
HIST, iaitu perbezaan antara standard tenaga kuantiti dan standard harga, dikira sebagai penunjuk akhir.
Apabila hist di atas memakai 0 sebagai titik masuk kepala kosong, di bawah memakai 0 sebagai titik masuk kepala banyak.
Strategi ini memperbesar kesan utama perubahan jumlah dagangan terhadap harga dengan mengira kadar perubahan jumlah dagangan. Apabila jumlah dagangan berbalik dan harga belum berbalik, hist akan naik atau turun 0, menghasilkan isyarat perdagangan. Ia dapat menentukan titik perubahan trend harga lebih awal.
Strategi ini adalah strategi yang berasaskan kadar perubahan kuantiti yang berbeza dari strategi, yang dapat mencerminkan trend harga lebih awal.
Mengira kadar perubahan dalam kadar perubahan kuantiti urus niaga, meningkatkan kesan utama perubahan kuantiti urus niaga terhadap harga, dan meningkatkan keberkesanan transaksi.
Brinband yang menggabungkan penunjuk momentum dan penunjuk harga menjadikan isyarat dagangan lebih dipercayai.
Pengolahan data Hist menggunakan tiga kali indeks yang halus untuk membuat isyarat lebih tepat dan halus.
Menetapkan garis overbuy dan oversell, dan bekerjasama dengan senarai had stop loss jangka panjang, dapat mengawal risiko dengan berkesan.
Lebih banyak parameter yang boleh disesuaikan, seperti panjang pita Brin, kelipatan perbezaan piawai, parameter penyelarasan data Hist, dan sebagainya, boleh dioptimumkan secara strategik.
Data jumlah transaksi tidak semestinya mencerminkan perdagangan pasaran yang sebenarnya, dan ia boleh dimanipulasi.
Perbezaan harga tidak semestinya berterusan, dan harga mungkin berlaku dalam keadaan yang tidak dapat dipulihkan.
Tetapan parameter yang tidak betul boleh menyebabkan perdagangan yang kerap atau isyarat yang tidak betul.
Berhati-hati untuk mengelakkan isyarat palsu yang tidak normal.
“Syarat pembalikan berlaku apabila trend kuat dan menghasilkan perdagangan yang salah.
Parameter pengoptimuman boleh digunakan untuk menyaring dan menetapkan stop loss untuk memastikan risiko dapat dikawal.
Optimumkan parameter Brin untuk menjadikan isyarat lebih stabil.
Menggunakan indikator trend untuk menapis isyarat dan mengelakkan dagangan berlawanan arah.
Tambah pengesahan petunjuk lain, seperti MACD, untuk mengelakkan isyarat palsu.
Menggunakan teknologi AI untuk mengoptimumkan parameter.
Tambahan modul penyesuaian dinamik Stop Loss Stop Stop dan pengendalian wang yang optimum.
Menggabungkan pembelajaran mesin untuk menilai perbezaan antara harga dan kadar kejayaan, meningkatkan kualiti isyarat.
Strategi ini dengan mengira kadar perubahan kadar pertukaran, memperbesar kesan utama perubahan kuantiti pertukaran pada harga, dapat menentukan perubahan trend harga lebih awal. Titik ini mempunyai kebolehpercayaan dan ketepatan yang lebih tinggi berbanding dengan indikator kuantiti pertukaran tunggal. Tetapi juga perlu berhati-hati untuk mengelakkan risiko pertukaran yang dimanipulasi dan harga kuantiti dari terobosan, mengawal risiko masa depan melalui pengoptimuman parameter, penapisan parameter dan sebagainya.
/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 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/
// © tathal and special thanks to oakwhiz for his porting of my custom volume indicator
//@version=5
strategy('Volume Difference Delta Cycle Oscillator', 'VDDC Osc', default_qty_type=strategy.percent_of_equity, default_qty_value=100, max_bars_back=5000)
startDate = input.int(title='Start Date', defval=1, minval=1, maxval=31)
startMonth = input.int(title='Start Month', defval=1, minval=1, maxval=12)
startYear = input.int(title='Start Year', defval=2010, minval=1800, maxval=2100)
endDate = input.int(title='End Date', defval=31, minval=1, maxval=31)
endMonth = input.int(title='End Month', defval=12, minval=1, maxval=12)
endYear = input.int(title='End Year', defval=2021, minval=1800, maxval=2100)
// Normalize Function
normalize(_src, _min, _max) =>
// Normalizes series with unknown min/max using historical min/max.
// _src : series to rescale.
// _min, _min: min/max values of rescaled series.
var _historicMin = 10e10
var _historicMax = -10e10
_historicMin := math.min(nz(_src, _historicMin), _historicMin)
_historicMax := math.max(nz(_src, _historicMax), _historicMax)
_min + (_max - _min) * (_src - _historicMin) / math.max(_historicMax - _historicMin, 10e-10)
// STEP 2:
// Look if the close time of the current bar
// falls inside the date range
inDateRange = true
// Stop loss & Take Profit Section
l_sl_inp = input(2.0, title='Long Stop Loss %') / 100
l_tp_inp = input(4.0, title='Long Take Profit %') / 100
l_stop_level = strategy.position_avg_price * (1 - l_sl_inp)
l_take_level = strategy.position_avg_price * (1 + l_tp_inp)
s_sl_inp = input(2.0, title='Short Stop Loss %') / 100
s_tp_inp = input(4.0, title='Short Take Profit %') / 100
s_stop_level = strategy.position_avg_price * (1 + s_sl_inp)
s_take_level = strategy.position_avg_price * (1 - s_tp_inp)
src = close
// Volume Differnce Indicator Delta
float change_src = ta.change(src)
float i_obv = ta.cum(change_src > 0 ? volume : change_src < 0 ? -volume : 0 * volume)
float i_pvt = ta.pvt
float result = ta.change(i_obv - i_pvt)
float nresult = ta.ema(normalize(result, -1, 1), 20)
// Volume Differnce Indicator Delta %B
length = input.int(20, minval=1, title='Volume Bands Length')
mult = input.float(2.0, minval=0.001, maxval=50, title='Volume Bands StdDev')
basis = ta.ema(nresult, length)
dev = mult * ta.stdev(nresult, length)
upper = basis + dev
lower = basis - dev
bbr = (nresult - lower) / (upper - lower)
// Normal %B, Based on close
l1 = input.int(20, minval=1, title='Bollinger Bands Length')
src2 = close
mult1 = input.float(2.0, minval=0.001, maxval=50, title='Bollinger Bands StdDev')
basis1 = ta.sma(src2, l1)
dev1 = mult1 * ta.stdev(src2, l1)
upper1 = basis1 + dev1
lower1 = basis1 - dev1
bbr1 = (src - lower1) / (upper1 - lower1)
/// Final Output Line
hist = ta.ema(ta.ema(ta.ema(bbr1 - bbr, input(2, title='Hist Smoothing Factor #1')), input(2, title='Hist Smoothing Factor #2')), input(2, title='Hist Smoothing Factor #3'))
/// Overbought / Oversold Line Creation
oversold = input(-.1)
overbought = input(.4)
hline(oversold, linewidth=2, color=color.new(#81c784, 62))
hline(overbought, linewidth=2, color=color.new(#c2185b, 38))
/// Long & Short Conditions
short = hist > overbought
long = hist < oversold
/// Colors & Plotting
histColor = hist >= 0 ? hist[1] < hist ? #26A69A : #B2DFDB : hist[1] < hist ? #FFCDD2 : #EF5350
plot(hist, title='Histogram', style=plot.style_columns, color=color.new(histColor, 0))
CrossBgColor = long ? color.new(#81c784, 62) : short ? color.new(#c2185b, 38) : na
bgcolor(color.new(CrossBgColor, 90))
/// Strategy Methodology
if inDateRange
strategy.entry('long', strategy.long, when=long, stop=l_stop_level, limit=l_take_level)
if inDateRange and strategy.position_size > 0
strategy.close_all(when=short)
if inDateRange
strategy.entry('short', strategy.short, when=short, stop=s_stop_level, limit=s_take_level)
if inDateRange and strategy.position_size < 0
strategy.close_all(when=long)