Ini adalah strategi panjang sahaja yang mengenal pasti isyarat kemasukan apabila harga melanggar bawah jalur bawah saluran ATR, dan mengambil keuntungan apabila harga mencapai jalur tengah (EMA) atau jalur atas saluran ATR. Ia juga menggunakan ATR untuk mengira tahap stop loss. Strategi ini sesuai untuk perdagangan jangka pendek yang cepat.
Apabila harga pecah di bawah jalur ATR yang lebih rendah, ia menandakan penurunan anomali. Strategi akan menjadi panjang pada pembukaan lilin seterusnya. Stop loss ditetapkan pada harga kemasukan dikurangkan ATR stop loss multiplier kali ATR. Ambil keuntungan adalah pada jalur tengah (EMA) atau jalur ATR atas. Jika penutupan bar semasa lebih rendah daripada bar sebelumnya, maka gunakan bar sebelumnya rendah sebagai mengambil keuntungan.
Khususnya, logik utama termasuk:
Kelebihan strategi ini:
Terdapat beberapa risiko:
Risiko ini boleh dikurangkan dengan menyesuaikan tempoh ATR, pengganda stop loss dan lain-lain. Memilih broker dengan yuran dagangan yang rendah juga penting.
Strategi ini boleh ditingkatkan dengan:
Ringkasnya, ini adalah strategi pembalikan purata yang mudah dan praktikal berdasarkan saluran ATR. Ia mempunyai peraturan kemasukan yang jelas, kerugian berhenti yang ketat, dan mengambil keuntungan yang munasabah. Terdapat juga ruang untuk penyesuaian parameter. Jika peniaga dapat memilih simbol yang betul dan mengawal risiko dengan kerugian berhenti, strategi ini dapat mencapai hasil yang baik.
/*backtest start: 2022-12-04 00:00:00 end: 2023-12-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Bcullen175 //@version=5 strategy("ATR Mean Reversion", overlay=true, initial_capital=100000,default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=6E-5) // Brokers rate (ICmarkets = 6E-5) SLx = input(1.5, "SL Multiplier", tooltip = "Multiplies ATR to widen stop on volatile assests, Higher values reduce risk:reward but increase winrate, Values below 1.2 are not reccomended") src = input(close, title="Source") period = input.int(10, "ATR & MA PERIOD") plot(open+ta.atr(period)) plot(open-ta.atr(period)) plot((ta.ema(src, period)), title = "Mean", color=color.white) i_startTime = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups") i_endTime = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups") // Check filter(s) f_dateFilter = true atr = ta.atr(period) // Check buy/sell conditions var float buyPrice = 0 buyCondition = low < (open-ta.atr(period)) and strategy.position_size == 0 and f_dateFilter sellCondition = (high > (ta.ema(close, period)) and strategy.position_size > 0 and close < low[1]) or high > (open+ta.atr(period)) stopDistance = strategy.position_size > 0 ? ((buyPrice - atr)/buyPrice) : na stopPrice = strategy.position_size > 0 ? (buyPrice - SLx*atr): na stopCondition = strategy.position_size > 0 and low < stopPrice // Enter positions if buyCondition strategy.entry(id="Long", direction=strategy.long) if buyCondition[1] buyPrice := open // Exit positions if sellCondition or stopCondition strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : "")) buyPrice := na // Draw pretty colors plot(buyPrice, color=color.lime, style=plot.style_linebr) plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)