Strategi ini menggunakan berbagai indikator, seperti garis rata-rata, pita Brin, dan jumlah periode waktu, untuk mengidentifikasi awal dan akhir tren harga, untuk melakukan operasi pelacakan tren. Strategi ini dikonfirmasi melalui berbagai indikator, dan dapat secara efektif memfilter terobosan palsu.
Strategi ini mencakup langkah-langkah penting berikut:
Perhitungan rata-rata cepat dan rata-rata lambat. Perhitungan rata-rata menggunakan VWAP bukan harga penutupan, yang lebih akurat mencerminkan harga transaksi yang sebenarnya.
Perhitungan rata-rata garis rata-rata, dan berdasarkan rata-rata ini untuk memetakan Brin band. Brin band dapat menentukan apakah harga berfluktuasi diperluas, dan memberi tahu tren dimulai.
Menggunakan indikator TSV untuk melihat apakah volume transaksi meningkat, dan mengkonfirmasi adanya tren.
Ketika kecepatan rata-rata cepat melewati kecepatan rata-rata lambat, harga lebih tinggi dari Brin di atas rel dan TSV lebih besar dari 0, menghasilkan sinyal beli; sebaliknya muncul sinyal jual.
Menggunakan mundurnya garis rata-rata dan tren bawah Brin sebagai sinyal stop loss.
Menggunakan berbagai indikator untuk mengkonfirmasi, dapat secara efektif memfilter terobosan palsu, dan mengidentifikasi awal tren
Metode perhitungan garis rata-rata lebih akurat mencerminkan harga transaksi yang sebenarnya
Ada atau tidaknya tren dalam kombinasi dengan indikator volatilitas
Meningkatkan Indeks Volume Transaksi, Mengkonfirmasi Perkembangan Tren
Menetapkan standar stop loss dan stop loss yang masuk akal untuk mengendalikan risiko
Parameter yang dapat dikonfigurasi, dapat disesuaikan dengan kondisi optimal
Pertimbangan kombinasi multi-indikator, ada masalah besar dalam pengoptimalan parameter
Garis rata-rata dan pita Brin mengalami lag yang dapat menyebabkan stop loss yang tidak tepat waktu.
Indikator waktu rentang sensitif terhadap pengaturan parameter, perlu disesuaikan dengan pasar yang berbeda
Dalam laporan pasar, ada kemungkinan untuk menghasilkan lebih banyak sinyal palsu
Tidak mempertimbangkan dampak biaya transaksi, keuntungan dan kerugian sebenarnya akan lebih rendah dari hasil penghitungan ulang
Mencoba mengoptimalkan kombinasi parameter secara otomatis dengan metode pembelajaran mesin
Tetapkan Stop Loss Bergerak Secara Dinamis atau Tracking Stop Loss untuk Lebih Baik Mengunci Keuntungan
Memperkenalkan indikator energi volume transaksi untuk menghindari kesalahan transaksi yang dapat menyebabkan volume menyimpang
Kombinasi teori gelombang, dinilai saat ini berada di awal, tengah dan akhir dari tren, parameter strategi penyesuaian dinamis
Mempertimbangkan dampak biaya transaksi yang sebenarnya, dan mengatur margin stop-loss minimum untuk mengontrol efisiensi biaya
Strategi ini secara komprehensif mempertimbangkan berbagai indikator yang memberikan kemampuan identifikasi tren yang baik, yang dapat secara efektif menilai awal dan akhir tren yang sebenarnya. Stabilitas strategi dapat ditingkatkan lebih lanjut melalui pengoptimalan parameter, pengoptimalan stop loss, dan pengoptimalan filter. Tetapi secara keseluruhan, sebagai strategi pelacakan tren, pengunduran dan persentase 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)