
Strategi terobosan ATR melintang adalah strategi terobosan garis pendek dan tengah berdasarkan petunjuk ATR yang dihasilkan untuk isyarat perdagangan dengan Brin. Ia memantau perubahan trend harga saham dalam saluran ATR ke atas dan ke bawah dengan lebar tertentu, membuat keputusan perdagangan dengan penapis trend ketika melintasi atau melintasi.
Strategi ini terdiri daripada tiga bahagian utama:
Saluran ATR: Mengira julat turun naik harga saham melalui penunjuk ATR dan membentuk saluran ke atas dan ke bawah julat tersebut. Lebar saluran dikawal oleh kitaran lookback ATR dan faktor ATRdivisor.
Garis lebah: menggunakan garis pusat harga saham sebagai garis asas. Garis pusat dikira sebagai: purata hasil tinggi dan rendah semalam.
Penapisan Trend: Mengira trend harga melalui penunjuk pergerakan deviasi dan menetapkan kitaran isyarat, apabila pricesig ‘>’: pricesig[3] apabila trend ke atas, apabila pricesig ‘<’ pricesig[3] semasa tren ke bawah.
Logik penjanaan isyarat dagangan khusus adalah:
Isyarat berbilang kepala: pricesig > pricesig[3] dan melakukan lebih banyak apabila harga turun;
Isyarat kosong: pricesig < pricesig[3] dan kosong semasa harga naik ke landasan;
Tidak ada perjanjian lain.
Strategi ini juga menetapkan syarat-syarat stop loss untuk mengawal risiko perdagangan.
Strategi penembusan ATR trend lebah mempunyai kelebihan berikut:
Menggunakan Indeks ATR untuk mengira julat pergerakan harga saham yang dapat menangkap perubahan pasaran secara dinamik;
Menggabungkan garis pusat untuk menilai harga saham melintang dan menetapkan titik perdagangan terobosan saluran untuk mengelakkan mengejar kenaikan dan penurunan;
Menerusi indikator pergerakan jauh dari perbezaan untuk menilai trend, mengelakkan dagangan berlawanan arah dan meningkatkan peluang kemenangan;
Setting Stop Loss Conditions untuk mengawal risiko tunggal;
Parameter strategi menetapkan strategi pengoptimuman faktor seperti lebar saluran dan kitaran ATR yang boleh disesuaikan secara fleksibel.
Strategi ini juga mempunyai risiko:
Perdagangan dalam talian pendek adalah tidak menentu, berisiko tinggi, dan memerlukan pengurusan dana yang berhati-hati;
Pengiraan jarak saluran ATR mungkin tidak tepat dan mudah menyebabkan perdagangan yang salah apabila harga saham bergelombang;
Indikator pergerakan deviasi juga boleh membuat kesilapan dalam penilaian trend, yang akan menjejaskan ketepatan isyarat perdagangan.
Untuk menghadapi risiko di atas, ia boleh dioptimumkan dan diperbaiki dengan cara menyesuaikan parameter saluran ATR, meningkatkan kitaran isyarat penapisan trend dan sebagainya.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Menyesuaikan lebar saluran ATR, mengurangkan atau meningkatkan parameter atRDivisor, memampatkan atau meningkatkan ruang saluran.
Menyesuaikan parameter kitaran lookback ATR untuk mengubah sensitiviti saluran terhadap pergerakan terkini.
Menyesuaikan parameter kitaran isyarat trend untuk meningkatkan ketepatan penghakiman trend polygon.
Menambah kualiti isyarat dagangan dengan menggunakan pengesahan pelbagai faktor.
Mengoptimumkan algoritma Stop Loss dan meningkatkan kawalan risiko.
Strategi penembusan ATR trend lebah menggabungkan analisis rentang turun naik harga saham dan indikator penilaian trend, mengawal risiko perdagangan sambil menangkap titik panas pasaran, merupakan strategi kuantitatif yang sangat fleksibel dan beradaptasi. Strategi ini dapat terus diperbaiki melalui penyesuaian parameter dan pengoptimuman isyarat, dengan prospek penggunaan yang luas.
/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="Strategy - Bobo PATR Swing", overlay=true, default_qty_type = strategy.fixed, default_qty_value = 1, initial_capital = 10000)
// === STRATEGY RELATED INPUTS AND LOGIC ===
PivottimeFrame = input(title="Pivot Timeframe", defval="D")
ATRSDtimeFrame = input(title="ATR Band Timeframe (Lower timeframe = wider bands)", defval="D")
len = input(title="ATR lookback (Lower = bands more responsive to recent price action)", defval=13)
myatr = atr(len)
dailyatr = request.security(syminfo.tickerid, ATRSDtimeFrame, myatr[1])
atrdiv = input(title="ATR divisor (Lower = wider bands)", type=float, defval=2)
pivot0 = (high[1] + low[1] + close[1]) / 3
pivot = request.security(syminfo.tickerid, PivottimeFrame, pivot0)
upperband1 = (dailyatr / atrdiv) + pivot
lowerband1 = pivot - (dailyatr / atrdiv)
middleband = pivot
// == TREND CALC ===
i1=input(2, "Momentum Period", minval=1) //Keep at 2 usually
i2=input(20, "Slow Period", minval=1)
i3=input(5, "Fast Period", minval=1)
i4=input(3, "Smoothing Period", minval=1)
i5=input(4, "Signal Period", minval=1)
i6=input(50, "Extreme Value", minval=1)
hiDif = high - high[1]
loDif = low[1] - low
uDM = hiDif > loDif and hiDif > 0 ? hiDif : 0
dDM = loDif > hiDif and loDif > 0 ? loDif : 0
ATR = rma(tr(true), i1)
DIu = 100 * rma(uDM, i1) / ATR
DId = 100 * rma(dDM, i1) / ATR
HLM2 = DIu - DId
DTI = (100 * ema(ema(ema(HLM2, i2), i3), i4)) / ema(ema(ema(abs(HLM2), i2), i3), i4)
signal = ema(DTI, i5)
// === RISK MANAGEMENT INPUTS ===
inpTakeProfit = input(defval = 0, title = "Take Profit (In Market MinTick Value)", minval = 0)
inpStopLoss = input(defval = 100, title = "Stop Loss (In Market MinTick Value)", minval = 0)
// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
// === STRATEGY - LONG POSITION EXECUTION ===
enterLong = (((low<=lowerband1) and (close >lowerband1)) or ((open <= lowerband1) and (close > lowerband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal>signal[3])
exitLong = (high > middleband)
strategy.entry(id = "Long", long = true, when = enterLong)
strategy.close(id = "Long", when = exitLong)
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort = (((high>=upperband1) and (close < upperband1)) or ((open >= upperband1) and (close < upperband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal<signal[3])
exitShort = (low < middleband)
strategy.entry(id = "Short", long = false, when = enterShort)
strategy.close(id = "Short", when = exitShort)
// === STRATEGY RISK MANAGEMENT EXECUTION ===
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss)
// === CHART OVERLAY ===
plot(upperband1, color=#C10C00, linewidth=3)
plot(lowerband1, color=#23E019, linewidth=3)
plot(middleband, color=#00E2E2, linewidth=3)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)