
Ini adalah strategi pengesanan trend adaptif yang menggabungkan beberapa petunjuk teknikal. Strategi ini menggabungkan sistem amaran UT Bot, penapis RSI yang agak lemah, ATR yang tidak dipetik semula dan berhenti dan saluran Donchian. Strategi ini menggunakan bingkai masa 15 minit, menggunakan peta Heikin Ashi untuk meningkatkan ketepatan isyarat, dan menetapkan sasaran keluar berdasarkan peratusan.
Inti strategi ini adalah untuk mengenal pasti dan menjejaki trend pasaran melalui sinergi pelbagai petunjuk, sambil menyediakan mekanisme pengurusan risiko yang fleksibel. Ia menggabungkan maklumat pasaran dalam pelbagai dimensi seperti momentum (RSI), turun naik (ATR), dan trend (Dongjian Channel) untuk membuat keputusan perdagangan yang lebih menyeluruh dan mantap.
ATR Tracking Stop Loss: Menggunakan purata true wavelength ((ATR) untuk mengira tahap stop loss dinamik, menyediakan kawalan risiko yang sesuai.
Penapisan RSI: Menggunakan indikator yang agak kuat ((RSI) untuk mengesahkan arah trend, meningkatkan kebolehpercayaan isyarat masuk.
Saluran Dongjian: Sebagai alat pengesahan trend tambahan, membantu mengenal pasti arah keseluruhan pasaran.
Syarat penyertaan:
Mekanisme Keluar: Tetapkan sasaran keuntungan berdasarkan peratusan dan tahap berhenti kerugian.
Pilihan carta Huygens-Achilles: digunakan untuk meluruskan data harga dan mengurangkan isyarat palsu.
Analisis pelbagai dimensi: menggabungkan trend, momentum dan indikator turun naik untuk memberikan wawasan pasaran yang menyeluruh.
Adaptif: ATR mengesan stop loss yang dapat disesuaikan secara automatik mengikut turun naik pasaran, menyesuaikan diri dengan keadaan pasaran yang berbeza.
Pengurusan risiko yang baik: objektif yang jelas untuk menghentikan kerugian dan keuntungan, kawalan risiko yang berkesan.
Kualiti isyarat yang lebih baik: pengesahan ganda melalui RSI dan saluran Dongjian, mengurangkan isyarat palsu.
Fleksibiliti: Anda boleh menggunakan carta Wiccan-Achilles untuk menyesuaikan diri dengan gaya dagangan yang berbeza.
Tidak dipetik semula: ATR mengesan kebocoran yang dikira untuk memastikan kebolehpercayaan dan kesesuaian isyarat.
Perbuatan pasaran goyah: Isyarat palsu yang mungkin berlaku dalam pasaran yang goyah.
Keterlambatan: Mekanisme pengesahan berganda mungkin menyebabkan kelewatan kecil dalam masa kemasukan.
Risiko over-optimisasi: Terdapat banyak parameter yang boleh menyebabkan over-fit dengan data sejarah
Bergantung kepada keadaan pasaran: Mungkin kurang responsif dalam pasaran yang berubah dengan cepat.
Titik tergelincir pelaksanaan: Keluar berdasarkan peratusan mungkin menghadapi cabaran pelaksanaan dalam pasaran yang sangat tidak menentu.
Penyesuaian parameter dinamik: mengoptimumkan parameter utama secara automatik (seperti nilai RSI, ATR).
Pengenalpastian rejim pasaran: meningkatkan penilaian terhadap keadaan pasaran yang berbeza (trend, getaran), strategi penyesuaian dinamik.
Kerangka masa yang selaras: menggabungkan isyarat dari pelbagai kerangka masa untuk meningkatkan kestabilan keputusan.
Penapis Fluktuasi: Hentikan dagangan dalam keadaan fluktuasi yang sangat rendah untuk mengelakkan isyarat tidak sah.
Peningkatan mekanisme keluar: memperkenalkan peraturan keluar berdasarkan trailing stop atau masa, mengoptimumkan pengurusan keuntungan.
Menambah analisis kuantiti pertukaran: menggabungkan indikator kuantiti pertukaran untuk mengesahkan lebih lanjut kekuatan trend.
Integrasi pembelajaran mesin: Mengoptimumkan pemilihan parameter dan penjanaan isyarat menggunakan algoritma pembelajaran mesin.
Strategi pengesanan trend yang menyesuaikan diri dengan gabungan pelbagai indikator ini menunjukkan kelebihan sistematisasi dan analisis pelbagai dimensi dalam perdagangan kuantitatif. Dengan mengintegrasikan beberapa indikator seperti ATR, RSI, UT Bot dan saluran Tangqian, strategi ini dapat menangkap dinamik pasaran dari pelbagai sudut, memberikan isyarat perdagangan yang agak komprehensif dan mantap.
Walau bagaimanapun, kerumitan strategi juga membawa risiko yang berpotensi seperti over-fitting dan sensitiviti parameter. Arah pengoptimuman masa depan harus memberi tumpuan kepada peningkatan fleksibiliti dan ketangguhan strategi, seperti memperkenalkan fungsi canggih seperti penyesuaian parameter dinamik, pengenalan keadaan pasaran.
Secara keseluruhannya, strategi ini menyediakan kerangka kerja yang komprehensif dan berwawasan untuk trend-following, yang berpotensi menjadi alat perdagangan yang berkesan dengan pengoptimuman berterusan dan penerapan yang bijak.
/*backtest
start: 2023-07-23 00:00:00
end: 2024-07-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("UT Bot Alerts - Non-Repainting with RSI Filter and Donchian Channels", overlay=true)
// Inputs for UT Bot
a = input.int(1, title="Key Value. 'This changes the sensitivity'")
c = input.int(10, title="ATR Period")
h = input.bool(false, title="Signals from Heikin Ashi Candles")
percentage = input.float(0.002, title="Percentage for Exit (0.2% as decimal)")
// RSI Inputs
rsiPeriod = input.int(14, title="RSI Period")
rsiSource = input.source(close, title="RSI Source")
// ATR Calculation
xATR = ta.atr(c)
nLoss = a * xATR
// Heikin Ashi Calculation
haClose = request.security(syminfo.tickerid, timeframe.period, close, lookahead=barmerge.lookahead_on)
haOpen = request.security(syminfo.tickerid, timeframe.period, open, lookahead=barmerge.lookahead_on)
haHigh = request.security(syminfo.tickerid, timeframe.period, high, lookahead=barmerge.lookahead_on)
haLow = request.security(syminfo.tickerid, timeframe.period, low, lookahead=barmerge.lookahead_on)
haCloseSeries = (haOpen + haHigh + haLow + haClose) / 4
src = h ? haCloseSeries : close
// RSI Calculation
rsiValue = ta.rsi(rsiSource, rsiPeriod)
// Non-repainting ATR Trailing Stop Calculation
var float xATRTrailingStop = na
if (barstate.isconfirmed)
xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss
// Position Calculation
var int pos = 0
if (barstate.isconfirmed)
pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)
xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue
ema = ta.ema(src, 1)
above = ta.crossover(ema, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, ema)
// Track entry prices
var float entryPrice = na
// Donchian Channels
length = input.int(20, minval = 1, title="Donchian Channels Length")
offset = input.int(0, title="Donchian Channels Offset")
lower = ta.lowest(length)
upper = ta.highest(length)
basis = math.avg(upper, lower)
plot(basis, "Basis", color = #FF6D00, offset = offset)
u = plot(upper, "Upper", color = #2962FF, offset = offset)
l = plot(lower, "Lower", color = #2962FF, offset = offset)
fill(u, l, color = color.rgb(33, 150, 243, 95), title = "Background")
// Buy and sell conditions with RSI filter and basis condition
buy = src > xATRTrailingStop and above and barstate.isconfirmed and rsiValue > 50 and src > basis
sell = src < xATRTrailingStop and below and barstate.isconfirmed and rsiValue < 50 and src < basis
// Calculate target prices for exit
var float buyTarget = na
var float sellTarget = na
if (buy)
entryPrice := src
buyTarget := entryPrice * (1 + percentage)
sellTarget := entryPrice * (1 - percentage)
strategy.entry("Buy", strategy.long)
if (sell)
entryPrice := src
buyTarget := entryPrice * (1 + percentage)
sellTarget := entryPrice * (1 - percentage)
strategy.entry("Sell", strategy.short)
// Exit conditions
var bool buyExit = false
var bool sellExit = false
var bool stopLossExit = false
if (strategy.position_size > 0 and barstate.isconfirmed)
if (src >= buyTarget)
strategy.exit("Take Profit", "Buy", limit=buyTarget)
buyExit := true
if (src <= sellTarget)
strategy.exit("Stoploss exit", "Buy", stop=src)
stopLossExit := true
if (strategy.position_size < 0 and barstate.isconfirmed)
if (src <= sellTarget)
strategy.exit("Take Profit", "Sell", limit=sellTarget)
sellExit := true
if (src >= buyTarget)
strategy.exit("Stoploss exit", "Sell", stop=src)
stopLossExit := true
// Plotting
plotshape(buy, title="Buy", text='Buy', style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, size=size.tiny)
plotshape(sell, title="Sell", text='Sell', style=shape.labeldown, location=location.abovebar, color=color.red, textcolor=color.white, size=size.tiny)
barcolor(src > xATRTrailingStop ? color.green : na)
barcolor(src < xATRTrailingStop ? color.red : na)
alertcondition(buy, "UT Long", "UT Long")
alertcondition(sell, "UT Short", "UT Short")
alertcondition(buyExit, "UT Long Exit", "UT Long Exit")
alertcondition(sellExit, "UT Short Exit", "UT Short Exit")
alertcondition(stopLossExit, "Stoploss exit", "Stoploss exit")