
Strategi ini adalah satu strategi yang hanya melakukan lebih banyak, ia menggunakan harga memecahkan ATR saluran bawah untuk menentukan masa masuk, dan dengan ATR saluran rata-rata atau ATR saluran atas untuk berhenti keluar. Pada masa yang sama, ia juga akan menggunakan ATR untuk mengira harga berhenti.
Apabila harga jatuh di bawah batas bawah saluran ATR, menunjukkan bahawa harga mengalami penurunan yang luar biasa. Pada masa ini, strategi akan melakukan lebih banyak masuk pada masa pembukaan K seterusnya. Harga hentian adalah harga masuk dengan mengurangkan faktor hentian ATR dengan ATR.
Secara khusus, strategi ini merangkumi logik berikut:
Strategi ini mempunyai kelebihan berikut:
Strategi ini mempunyai beberapa risiko:
Risiko ini boleh dikurangkan dengan cara menyesuaikan kitaran ATR, mengurangkan faktor stop loss dan sebagainya. Ia juga penting untuk memilih broker yang mempunyai yuran perdagangan yang lebih rendah.
Strategi ini juga boleh dioptimumkan dengan:
Strategi ini secara keseluruhannya adalah strategi yang mudah dan praktikal untuk membalikkan garis rata-rata. Ia mempunyai peraturan kemasukan yang jelas, mekanisme penangguhan yang ketat, dan cara berhenti yang baik. Ia juga menyediakan ruang untuk menyesuaikan parameter.
/*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)