
Strategi ini adalah sistem perdagangan stop loss yang mengesan secara dinamik berdasarkan jangkauan purata sebenar (ATR) yang digabungkan dengan isyarat penapis EMA yang seragam, yang digunakan terutamanya untuk menangkap titik peralihan trend pasaran dan melakukan perdagangan. Inti strategi ini adalah untuk mengira titik stop loss dinamik melalui nilai ATR, yang mencetuskan isyarat perdagangan apabila terdapat persilangan antara harga dan titik stop loss.
Logik teras strategi ini adalah sistem penghentian kehilangan yang dinamika berdasarkan penunjuk ATR. Prinsip kerja spesifiknya adalah sebagai berikut:
Keseluruhan logik perdagangan adalah serupa dengan sistem trend-tracking, tetapi dengan ATR secara dinamik menyesuaikan kedudukan hentian, membolehkan strategi untuk menyesuaikan diri dengan persekitaran kadar turun naik yang berbeza.
Dengan mengkaji kod strategi ini secara mendalam, saya dapat meringkaskan beberapa kelebihan yang ketara:
Walaupun terdapat banyak kelebihan dalam strategi ini, terdapat risiko berikut dalam aplikasi sebenar:
Penyelesaian:
Berdasarkan analisis kod, strategi ini boleh dioptimumkan dalam beberapa arah:
Penapisan isyarat dipertingkatkan:
Pengaturan parameter dinamik:
Pengoptimuman pengurusan kedudukan:
Peningkatan mekanisme penghalang:
Penapisan masa diperbaiki:
Analisis pelbagai kerangka masa:
Arahan pengoptimuman ini penting kerana mereka dapat meningkatkan kestabilan strategi dengan ketara. Khususnya, penambahan penapisan isyarat dan penyesuaian parameter dinamik dapat mengurangkan isyarat palsu, sementara peningkatan pengurusan kedudukan dan mekanisme penangguhan dapat mengoptimumkan penggunaan dana dan nisbah pulangan risiko.
Strategi perdagangan kuantitatif ATR Tracking Stop Loss adalah sistem pengesanan trend yang direka dengan baik, dengan menggabungkan penunjuk ATR dengan EMA, untuk mewujudkan mekanisme berhenti dinamik yang dapat menyesuaikan diri dengan turun naik pasaran. Kelebihan terbesar strategi ini adalah kesesuaian dan kesederhanaannya, yang dapat menyesuaikan jarak berhenti secara automatik dalam pelbagai keadaan pasaran, sambil mengendalikan logik dengan jelas.
Walau bagaimanapun, strategi ini mungkin tidak berfungsi dengan baik dalam pasaran yang bergolak dan terlalu bergantung pada sistem penunjuk tunggal. Prestasi dapat ditingkatkan dengan ketara dengan menambahkan penapis isyarat tambahan, mengoptimumkan mekanisme penyesuaian parameter, meningkatkan pengurusan kedudukan dan menambah strategi penangguhan.
Ini adalah kerangka strategi asas yang baik untuk peniaga, yang boleh disesuaikan dan diperluaskan mengikut gaya perdagangan individu dan ciri-ciri pasaran sasaran. Adalah disyorkan untuk melakukan tinjauan balik yang lengkap mengenai kombinasi parameter yang berbeza dan persekitaran pasaran sebelum penggunaan di tempat kerja, dan mempertimbangkan untuk membentuk sistem perdagangan yang lebih baik dengan menggabungkan petunjuk teknikal lain.
Strategi ini sangat sesuai untuk pasaran dengan trend yang jelas dalam jangka masa sederhana dan panjang, memberikan pedagang penyelesaian perdagangan kuantitatif yang agak mudah tetapi berkesan dengan membolehkan keuntungan terus meningkat sambil melindungi keuntungan yang telah dicapai secara dinamik.
/*backtest
start: 2024-05-13 00:00:00
end: 2025-05-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
//@version=6
strategy("UT Bot Strategy Backtest with Date Range", overlay=true)
// === Inputs ===
keyValue = input.float(1.0, title="Key Value (Sensitivity)")
atrPeriod = input.int(10, title="ATR Period")
// === Calculations ===
xATR = ta.atr(atrPeriod)
nLoss = keyValue * xATR
src = close
// === Trailing Stop Logic ===
var float xATRTrailingStop = na
xATRTrailingStop := src > nz(xATRTrailingStop[1]) and src[1] > nz(xATRTrailingStop[1]) ?
math.max(nz(xATRTrailingStop[1]), src - nLoss) :
src < nz(xATRTrailingStop[1]) and src[1] < nz(xATRTrailingStop[1]) ?
math.min(nz(xATRTrailingStop[1]), src + nLoss) :
src > nz(xATRTrailingStop[1]) ? src - nLoss : src + nLoss
// === Signal Logic ===
emaVal = ta.ema(src, 1)
above = ta.crossover(emaVal, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, emaVal)
buySignal = src > xATRTrailingStop and above
sellSignal = src < xATRTrailingStop and below
// === Strategy Execution ===
if buySignal
strategy.close("Short")
strategy.entry("Long", strategy.long)
if sellSignal
strategy.close("Long")
strategy.entry("Short", strategy.short)
// === Visuals ===
plotshape(buySignal, title="Buy", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(sellSignal, title="Sell", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")
barcolor(buySignal ? color.green : sellSignal ? color.red : na)
// === Alerts ===
alertcondition(buySignal, title="UT Long", message="UT Long")
alertcondition(sellSignal, title="UT Short", message="UT Short")