
Strategi penembusan trend ganda menggunakan pelbagai indikator teknikal, terutamanya termasuk garis trend, persimpangan garis rata dan penembusan saluran harga, yang bertujuan untuk mengenal pasti perubahan trend pasaran dan menangkap peluang untuk membalikkan trend. Strategi ini menggabungkan penjejakan trend dan isyarat penembusan, masuk dan keluar kedudukan yang agak mantap, tetapi juga terdapat risiko tertentu untuk penembusan palsu.
Strategi ini mula-mula menggunakan titik tinggi dan titik rendah pada sumbu utama untuk membahagikan trend kosong, dan apabila harga menembusi garis trend, ia menunjukkan pembalikan trend yang berpotensi. Skilometer dikira menggunakan kaedah ATR, menjadikannya lebih dekat dengan pergerakan sebenar.
Strategi ini menggunakan garis pendek 5 hari dan garis panjang 34 hari, untuk membina strategi persilangan garis rata-rata yang perlahan. Penjejakan garis rata-rata panjang pada garis rata-rata pendek sebagai isyarat membeli, dan bawah sebagai isyarat menjual.
Strategi ini juga menetapkan saluran harga selama 5 hari untuk memecahkan pembelian di atas, menjual di bawah, dan menangkap penembusan harga jangka pendek.
Tiga isyarat penunjuk teknikal di atas digunakan dalam strategi ini untuk membentuk mekanisme penilaian ganda yang kuat dan mengelakkan perdagangan yang salah.
Pelbagai penunjuk teknikal yang bersepadu, menilai isyarat lebih kukuh, mengurangkan kerosakan akibat penembusan palsu.
Garis purata pantas dan saluran harga dapat menangkap perubahan trend harga jangka pendek tepat pada masanya. Garis purata perlahan dan garis trend mengikuti trend jangka panjang, masuk dan keluar lebih stabil.
Struktur kod jelas, parameter penunjuk boleh disesuaikan, boleh disesuaikan dan dioptimumkan untuk pelbagai kitaran dan varieti.
Gabungan penghakiman trend dan isyarat pecah, dalam pasaran lembu trend, pasaran yang lebih agresif membantu keuntungan; dalam pengurutan julat, frekuensi perdagangan isyarat pecah akan berkurang, membantu mengelakkan gegaran besar.
Terdapat beberapa risiko terobosan palsu, terutamanya dalam situasi harga yang bergolak, yang boleh menyebabkan kerugian.
Persaingan garis rata-rata adalah isyarat ketinggalan, jika trend berbalik secara besar-besaran, terdapat risiko untuk mengejar pembelian tinggi atau menjual harga rendah.
Mengintegrasikan pelbagai petunjuk teknikal memerlukan banyak ujian dan pengiraan untuk mengoptimumkan parameter, yang memakan masa.
Untuk risiko penembusan palsu, penapis boleh dimasukkan ke dalam indikator jumlah transaksi, seperti peningkatan jumlah transaksi yang diperlukan semasa penembusan, atau harga penutupan K-line yang tidak menembusi harga tinggi atau rendah sebelumnya.
Untuk mengejar risiko membeli lebih tinggi, anda boleh menetapkan syarat penapisan indikator overbought dan oversold, seperti indikator RSI untuk mengelakkan overbought. Atau menetapkan garis berhenti untuk mempercepatkan berhenti.
Untuk masalah pengoptimuman parameter, kaedah pembelajaran mesin boleh digunakan untuk membantu mencari pengoptimuman, mencari kombinasi parameter yang optimum dalam banyak data sejarah.
Menambah petunjuk jumlah transaksi atau indikator overbought oversold untuk menilai kebolehpercayaan trend, menetapkan syarat penapisan yang ketat, untuk mengelakkan kerugian akibat pecah palsu.
Untuk varieti perdagangan yang berbeza, menyesuaikan tetapan parameter garis purata dan parameter saluran harga untuk menjadikannya lebih sesuai dengan ciri varieti tersebut.
Tambah strategi hentikan kerugian, mengawal kerugian tunggal dengan cara seperti hentikan bergerak, hentikan hentikan.
Menggunakan kaedah adaptasi, mengurangkan frekuensi pembukaan kedudukan apabila pasaran memasuki fasa penyusunan gegaran; meningkatkan frekuensi perdagangan apabila trend jelas.
Kaedah pembelajaran mendalam digunakan untuk melatih model untuk menentukan titik jual beli, membantu atau menggantikan petunjuk teknologi tradisional, dan menggunakan keupayaan pembelajaran mendalam untuk mencari strategi perdagangan yang lebih berkesan.
Strategi ini mengintegrasikan pelbagai petunjuk teknikal yang biasa digunakan untuk membentuk sistem penilaian ganda, yang dapat mengenal pasti perubahan trend dengan berkesan, dan menunjukkan kestabilan yang baik dalam pengujian semula. Tetapi juga harus berhati-hati terhadap risiko penembusan palsu tertentu, dengan menambahkan syarat penapisan, strategi stop loss, penyesuaian parameter dan penggunaan kaedah pembelajaran mesin untuk mengoptimumkan, yang dapat meningkatkan lagi prestasi strategi dalam talian.
/*backtest
start: 2024-02-11 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FinanceUpPvtLtd
//@version=5
strategy("FINANCE UP FREE STRATEGY (+919665229664)", overlay=true)
// Script 01 - Trendlines
length_tl = input.int(14, 'Swing Detection Lookback')
mult_tl = input.float(1., 'Slope', minval=0, step=.1)
calcMethod_tl = input.string('Atr', 'Slope Calculation Method', options=['Atr', 'Stdev', 'Linreg'])
backpaint_tl = input(true, tooltip='Backpainting offset displayed elements in the past. Disable backpainting to see real-time information returned by the indicator.')
upCss_tl = input(color.teal, 'Up Trendline Color', group='Style')
dnCss_tl = input(color.red, 'Down Trendline Color', group='Style')
showExt_tl = input(true, 'Show Extended Lines')
var upper_tl = 0.
var lower_tl = 0.
var slope_ph_tl = 0.
var slope_pl_tl = 0.
var offset_tl = backpaint_tl ? length_tl : 0
n_tl = bar_index
src_tl = close
ph_tl = ta.pivothigh(length_tl, length_tl)
pl_tl = ta.pivotlow(length_tl, length_tl)
slope_tl = switch calcMethod_tl
'Atr' => ta.atr(length_tl) / length_tl * mult_tl
'Stdev' => ta.stdev(src_tl, length_tl) / length_tl * mult_tl
'Linreg' => math.abs(ta.sma(src_tl * n_tl, length_tl) - ta.sma(src_tl, length_tl) * ta.sma(n_tl, length_tl)) / ta.variance(n_tl, length_tl) / 2 * mult_tl
slope_ph_tl := ph_tl ? slope_tl : slope_ph_tl
slope_pl_tl := pl_tl ? slope_tl : slope_pl_tl
upper_tl := ph_tl ? ph_tl : upper_tl - slope_ph_tl
lower_tl := pl_tl ? pl_tl : lower_tl + slope_pl_tl
var upos_tl = 0
var dnos_tl = 0
upos_tl := ph_tl ? 0 : close > upper_tl - slope_ph_tl * length_tl ? 1 : upos_tl
dnos_tl := pl_tl ? 0 : close < lower_tl + slope_pl_tl * length_tl ? 1 : dnos_tl
// var uptl_tl = line.new(na, na, na, na, color=upCss_tl, style=line.style_dashed, extend=extend.right)
// var dntl_tl = line.new(na, na, na, na, color=dnCss_tl, style=line.style_dashed, extend=extend.right)
// if ph_tl and showExt_tl
// uptl_tl.set_xy1(n_tl - offset_tl, backpaint_tl ? ph_tl : upper_tl - slope_ph_tl * length_tl)
// uptl_tl.set_xy2(n_tl - offset_tl + 1, backpaint_tl ? ph_tl - slope_tl : upper_tl - slope_ph_tl * (length_tl + 1))
// if pl_tl and showExt_tl
// dntl_tl.set_xy1(n_tl - offset_tl, backpaint_tl ? pl_tl : lower_tl + slope_pl_tl * length_tl)
// dntl_tl.set_xy2(n_tl - offset_tl + 1, backpaint_tl ? pl_tl + slope_tl : lower_tl + slope_pl_tl * (length_tl + 1))
plot(backpaint_tl ? upper_tl : upper_tl - slope_ph_tl * length_tl, 'Upper', color=ph_tl ? na : upCss_tl, offset=-offset_tl)
plot(backpaint_tl ? lower_tl : lower_tl + slope_pl_tl * length_tl, 'Lower', color=pl_tl ? na : dnCss_tl, offset=-offset_tl)
plotshape(upos_tl > upos_tl[1] ? low : na, "Upper Break", shape.labelup, location.absolute, upCss_tl, text="B", textcolor=color.white, size=size.tiny)
plotshape(dnos_tl > dnos_tl[1] ? high : na, "Lower Break", shape.labeldown, location.absolute, dnCss_tl, text="B", textcolor=color.white, size=size.tiny)
alertcondition(upos_tl > upos_tl[1], 'Upward Breakout', 'Price broke the down-trendline upward')
alertcondition(dnos_tl > dnos_tl[1], 'Downward Breakout', 'Price broke the up-trendline downward')
// Script 02 - Channel Breakout
length_channel = input.int(title="Channel Length", minval=1, maxval=1000, defval=5)
upBound_channel = ta.highest(high, length_channel)
downBound_channel = ta.lowest(low, length_channel)
if (not na(close[length_channel]))
strategy.entry("LE-LE", strategy.long, stop=upBound_channel + syminfo.mintick, comment="LE-LE")
strategy.entry("BECH-DE", strategy.short, stop=downBound_channel - syminfo.mintick, comment="BECH-DE")
// Script 03 - MA Cross
shortlen_ma = input.int(5, "Short MA Length", minval=1)
longlen_ma = input.int(34, "Long MA Length", minval=1)
short_ma = ta.sma(close, shortlen_ma)
long_ma = ta.sma(close, longlen_ma)
plot(short_ma, color=#FF6D00, title="Short MA")
plot(long_ma, color=#43A047, title="Long MA")
plot(ta.cross(short_ma, long_ma) ? short_ma : na, color=#2962FF, style=plot.style_cross, linewidth=4, title="Cross")