
Эта стратегия, рассчитывая движущиеся средние двух различных параметров, генерирует сигнал покупки, когда быстрая линия пересекает медленную линию. При этом используется средний реальный диапазон колебаний для отслеживания стоп-цены и генерирует сигнал продажи, когда цена падает ниже этой стоп-цены.
Преимущества этой стратегии заключаются в сочетании слежения за трендом и управления стоп-убытками, которые позволяют следить за длинной линией и контролировать одиночные потери с помощью стоп-убытков.
Можно оптимизировать параметры скользящих средних или скорректировать ATR-множитель, чтобы сбалансировать степень остановки. Также можно использовать другие показатели в качестве фильтров для улучшения времени входа в игру.
Эта стратегия успешно объединяет трендовый отслеживание движущихся средних и динамические остановки ATR, которые могут быть адаптированы к различным характеристикам акций с помощью оптимизации параметров. Эта стратегия формирует четкие границы для покупки и остановки, что делает логику торговли простой и понятной. В целом, эта стратегия стабильной, простой, легко оптимизируемой и подходящей для основных стратегий торговли акциями.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
//created by XPloRR 24-02-2018
strategy("XPloRR MA-Buy ATR-MA-Trailing-Stop Strategy",overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity,default_qty_value=100)
testStartYear = input(2005, "Start Year")
testStartMonth = input(1, "Start Month")
testStartDay = input(1, "Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2050, "Stop Year")
testStopMonth = input(12, "Stop Month")
testStopDay = input(31, "Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriodBackground = input(title="Background", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
emaPeriod = input(12, "Exponential MA")
smaPeriod = input(45, "Simple MA")
stopPeriod = input(12, "Stop EMA")
delta = input(6, "Trailing Stop #ATR")
testPeriod() => true
emaval=ema(close,emaPeriod)
smaval=sma(close,smaPeriod)
stopval=ema(close,stopPeriod)
atr=sma((high-low),15)
plot(emaval, color=blue,linewidth=1)
plot(smaval, color=orange,linewidth=1)
plot(stopval, color=lime,linewidth=1)
long=crossover(emaval,smaval)
short=crossunder(emaval,smaval)
//buy-sell signal
stop=0
inlong=0
if testPeriod()
if (long and (not inlong[1]))
strategy.entry("buy",strategy.long)
inlong:=1
stop:=emaval-delta*atr
else
stop:=iff((nz(emaval)>(nz(stop[1])+delta*atr))and(inlong[1]),emaval-delta*atr,nz(stop[1]))
inlong:=nz(inlong[1])
if ((stopval<stop) and (inlong[1]))
strategy.close("buy")
inlong:=0
stop:=0
else
inlong:=0
stop:=0
plot(stop,color=green,linewidth=1)