Strategi ini menggunakan pelbagai indikator seperti garis rata-rata, jalur Brin dan tempoh masa untuk mengenal pasti permulaan dan akhir trend harga, untuk operasi pengesanan trend. Strategi ini disahkan melalui pelbagai indikator, yang dapat menyaring penembusan palsu dengan berkesan.
Strategi ini merangkumi langkah-langkah penting berikut:
Hitung garis rata-rata pantas dan garis rata-rata perlahan. Hitung garis rata-rata menggunakan VWAP dan bukannya harga penutupan, yang lebih tepat mencerminkan harga dagangan sebenar.
Hitung nilai purata garis rata-rata dan lukiskan Burin Band berdasarkan nilai purata tersebut. Burin Band dapat menentukan sama ada kadar turun naik harga meningkat atau tidak dan memberi isyarat untuk memulakan trend.
Memperkenalkan penunjuk tempoh masa (TSV) untuk melihat sama ada jumlah transaksi berkembang dan mengesahkan trend.
Apabila laju rata-rata melintasi laju rata-rata pada garis laju, harga lebih tinggi daripada Brin di atas landasan dan TSV lebih besar daripada 0, menghasilkan isyarat beli; sebaliknya muncul isyarat jual.
Menggunakan pengunduran garisan rata-rata dan tren bawah Brin sebagai isyarat hentikan kerugian.
Menggunakan pelbagai penunjuk untuk mengesahkan, menyaring penembusan palsu, mengenal pasti trend bermula
Kaedah pengiraan garis rata-rata lebih tepat mencerminkan harga transaksi sebenar
Kewujudan trend dalam kombinasi indikator kadar turun naik
Peningkatan Indeks Jumlah Dagangan, Pengesahan Trend
Menetapkan standard yang munasabah untuk halangan dan penangguhan yang dapat mengawal risiko
Parameter boleh dikonfigurasi dan boleh disesuaikan dengan keadaan optimum
Penghakiman gabungan pelbagai indikator, terdapat masalah besar dalam pengoptimuman parameter
Masalah ketinggalan pada kedua-dua garis rata-rata dan jalur Brin, yang mungkin menyebabkan kemusnahan yang tidak mencukupi
Penunjuk kuantiti tempoh masa sensitif kepada tetapan parameter, memerlukan penyesuaian untuk pasaran yang berbeza
Dalam pasaran, terdapat kemungkinan untuk menghasilkan lebih banyak isyarat palsu
Tanpa mengambil kira kesan kos urus niaga, keuntungan dan kerugian sebenar akan lebih rendah daripada hasil pengkajian semula
Cuba mengoptimumkan set parameter secara automatik menggunakan kaedah pembelajaran mesin
Tetapkan Hentian Bergerak Dinamis atau Hentian Tracking untuk lebih baik mengunci keuntungan
Memperkenalkan penunjuk tenaga kuantitatif untuk mengelakkan perdagangan yang salah yang disebabkan oleh kuantiti
Menggabungkan teori gelombang untuk menilai masa awal, pertengahan dan akhir trend, parameter strategi penyesuaian dinamik
Mengambil kira kesan kos urus niaga sebenar dan menetapkan margin terhad untuk mengawal kos
Strategi ini merangkumi pelbagai indikator yang memberikan keupayaan untuk mengenal pasti trend yang baik, yang dapat menentukan permulaan dan akhir trend yang sebenar. Kestabilan strategi dapat ditingkatkan lagi melalui pengoptimuman parameter, pengoptimuman hentian dan pengoptimuman penapis. Tetapi secara keseluruhan, sebagai strategi untuk mengesan trend, pengunduran dan kadar kerugian masih memerlukan risiko tertentu.
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=4
// Credits
// "Vwap with period" code which used in this strategy to calculate the leadLine was written by "neolao" active on https://tr.tradingview.com/u/neolao/
// "TSV" code which used in this strategy was written by "liw0" active on https://www.tradingview.com/u/liw0. The code is corrected by "vitelot" December 2018.
strategy("HYE Trend Hunter [Strategy]", overlay = true, initial_capital = 1000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025, pyramiding = 0)
// Strategy inputs
slowtenkansenPeriod = input(9, minval=1, title="Slow Tenkan Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
slowkijunsenPeriod = input(26, minval=1, title="Slow Kijun Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
fasttenkansenPeriod = input(5, minval=1, title="Fast Tenkan Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
fastkijunsenPeriod = input(13, minval=1, title="Fast Kijun Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
BBlength = input(20, minval=1, title= "Bollinger Band Length", group = "Bollinger Bands")
BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Band StdDev", group = "Bollinger Bands")
tsvlength = input(13, minval=1, title="TSV Length", group = "Tıme Segmented Volume")
tsvemaperiod = input(7, minval=1, title="TSV Ema Length", group = "Tıme Segmented Volume")
// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
defval=1, minval=1, maxval=31, group = "Backtest Range")
startMonth = input(title="Start Month", type=input.integer,
defval=1, minval=1, maxval=12, group = "Backtest Range")
startYear = input(title="Start Year", type=input.integer,
defval=2000, minval=1800, maxval=2100, group = "Backtest Range")
endDate = input(title="End Date", type=input.integer,
defval=31, minval=1, maxval=31, group = "Backtest Range")
endMonth = input(title="End Month", type=input.integer,
defval=12, minval=1, maxval=12, group = "Backtest Range")
endYear = input(title="End Year", type=input.integer,
defval=2021, minval=1800, maxval=2100, group = "Backtest Range")
inDateRange = true
//Slow Tenkan Sen Calculation
typicalPriceTS = (high + low + close) / 3
typicalPriceVolumeTS = typicalPriceTS * volume
cumulativeTypicalPriceVolumeTS = sum(typicalPriceVolumeTS, slowtenkansenPeriod)
cumulativeVolumeTS = sum(volume, slowtenkansenPeriod)
slowtenkansenvwapValue = cumulativeTypicalPriceVolumeTS / cumulativeVolumeTS
//Slow Kijun Sen Calculation
typicalPriceKS = (high + low + close) / 3
typicalPriceVolumeKS = typicalPriceKS * volume
cumulativeTypicalPriceVolumeKS = sum(typicalPriceVolumeKS, slowkijunsenPeriod)
cumulativeVolumeKS = sum(volume, slowkijunsenPeriod)
slowkijunsenvwapValue = cumulativeTypicalPriceVolumeKS / cumulativeVolumeKS
//Fast Tenkan Sen Calculation
typicalPriceTF = (high + low + close) / 3
typicalPriceVolumeTF = typicalPriceTF * volume
cumulativeTypicalPriceVolumeTF = sum(typicalPriceVolumeTF, fasttenkansenPeriod)
cumulativeVolumeTF = sum(volume, fasttenkansenPeriod)
fasttenkansenvwapValue = cumulativeTypicalPriceVolumeTF / cumulativeVolumeTF
//Fast Kijun Sen Calculation
typicalPriceKF = (high + low + close) / 3
typicalPriceVolumeKF = typicalPriceKS * volume
cumulativeTypicalPriceVolumeKF = sum(typicalPriceVolumeKF, fastkijunsenPeriod)
cumulativeVolumeKF = sum(volume, fastkijunsenPeriod)
fastkijunsenvwapValue = cumulativeTypicalPriceVolumeKF / cumulativeVolumeKF
//Slow LeadLine Calculation
lowesttenkansen_s = lowest(slowtenkansenvwapValue, slowtenkansenPeriod)
highesttenkansen_s = highest(slowtenkansenvwapValue, slowtenkansenPeriod)
lowestkijunsen_s = lowest(slowkijunsenvwapValue, slowkijunsenPeriod)
highestkijunsen_s = highest(slowkijunsenvwapValue, slowkijunsenPeriod)
slowtenkansen = avg(lowesttenkansen_s, highesttenkansen_s)
slowkijunsen = avg(lowestkijunsen_s, highestkijunsen_s)
slowleadLine = avg(slowtenkansen, slowkijunsen)
//Fast LeadLine Calculation
lowesttenkansen_f = lowest(fasttenkansenvwapValue, fasttenkansenPeriod)
highesttenkansen_f = highest(fasttenkansenvwapValue, fasttenkansenPeriod)
lowestkijunsen_f = lowest(fastkijunsenvwapValue, fastkijunsenPeriod)
highestkijunsen_f = highest(fastkijunsenvwapValue, fastkijunsenPeriod)
fasttenkansen = avg(lowesttenkansen_f, highesttenkansen_f)
fastkijunsen = avg(lowestkijunsen_f, highestkijunsen_f)
fastleadLine = avg(fasttenkansen, fastkijunsen)
// BBleadLine Calculation
BBleadLine = avg(fastleadLine, slowleadLine)
// Bollinger Band Calculation
basis = sma(BBleadLine, BBlength)
dev = BBmult * stdev(BBleadLine, BBlength)
upper = basis + dev
lower = basis - dev
// TSV Calculation
tsv = sum(close>close[1]?volume*(close-close[1]):close<close[1]?volume*(close-close[1]):0,tsvlength)
tsvema = ema(tsv, tsvemaperiod)
// Rules for Entry & Exit
if(fastleadLine > fastleadLine[1] and slowleadLine > slowleadLine[1] and tsv > 0 and tsv > tsvema and close > upper and inDateRange)
strategy.entry("BUY", strategy.long)
if(fastleadLine < fastleadLine[1] and slowleadLine < slowleadLine[1])
strategy.close("BUY")
// Plots
colorsettingS = input(title="Solid Color Slow Leadline", defval=false, type=input.bool)
plot(slowleadLine, title = "Slow LeadLine", color = colorsettingS ? color.aqua : slowleadLine > slowleadLine[1] ? color.green : color.red, linewidth=3)
colorsettingF = input(title="Solid Color Fast Leadline", defval=false, type=input.bool)
plot(fastleadLine, title = "Fast LeadLine", color = colorsettingF ? color.orange : fastleadLine > fastleadLine[1] ? color.green : color.red, linewidth=3)
p1 = plot(upper, "Upper BB", color=#2962FF)
p2 = plot(lower, "Lower BB", color=#2962FF)
fill(p1, p2, title = "Background", color=color.blue)