
이 전략은 ATR ((평균 실제 파동) 및 EMA ((지수 이동 평균) 두 지표를 사용하여 동적으로 스톱포드 지점을 조정하여 시장의 변동에 적응한다. 전략의 주요 아이디어는: ATR 지표를 사용하여 시장의 변동성을 측정하고 변동률의 크기에 따라 스톱포드 지점을 설정한다. 동시에 EMA 지표를 사용하여 거래 방향을 결정하고, 가격이 EMA를 상향으로 돌파 할 때 더 많은 주문을 열고, EMA를 하향으로 돌파 할 때 빈 주문을 열는다. 이 전략은 시장의 변동에 따라 스톱포드 지점을 자동으로 조정하여 동적 위험을 제어하는 목적을 달성합니다.
이 전략은 ATR와 EMA 두 지표를 활용하여 동적으로 스톱 스톱 손실 지점을 조정하여 시장의 변동성에 적응하고 EMA 지표를 사용하여 거래 방향을 판단한다. 전략은 강한 적응력과 트렌드 추적 능력을 가지고 있지만, 매개 변수 설정, 흔들리는 시장 및 트렌드 전환 시에는 약간의 위험에 직면 할 수 있다.
/*backtest
start: 2024-04-27 00:00:00
end: 2024-05-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy(title='UT MB&SS Bot', overlay=true)
// Inputs
a = input(1, title='Key Value. \'This changes the sensitivity\'')
c = input(10, title='ATR Period')
h = input(false, title='Signals from Heikin Ashi Candles')
stoploss = input(2.0, title='Stop Loss (ATR Multiples)')
xATR = ta.atr(c)
nLoss = a * xATR
src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close
var xATR_trailing_stop = 0.0
iff_1 = src > nz(xATR_trailing_stop[1], 0) ? src - nLoss : src + nLoss
iff_2 = src < nz(xATR_trailing_stop[1], 0) and src[1] < nz(xATR_trailing_stop[1], 0) ? math.min(nz(xATR_trailing_stop[1]), src + nLoss) : iff_1
xATR_trailing_stop := src > nz(xATR_trailing_stop[1], 0) and src[1] > nz(xATR_trailing_stop[1], 0) ? math.max(nz(xATR_trailing_stop[1]), src - nLoss) : iff_2
pos = 0
iff_3 = src[1] > nz(xATR_trailing_stop[1], 0) and src < nz(xATR_trailing_stop[1], 0) ? -1 : nz(pos[1], 0)
pos := src[1] < nz(xATR_trailing_stop[1], 0) and src > nz(xATR_trailing_stop[1], 0) ? 1 : iff_3
xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue
ema = ta.ema(src, 1)
above = ta.crossover(ema, xATR_trailing_stop)
below = ta.crossover(xATR_trailing_stop, ema)
buy = src > xATR_trailing_stop and above
sell = src < xATR_trailing_stop and below
barbuy = src > xATR_trailing_stop
barsell = src < xATR_trailing_stop
plotshape(buy, title='Buy', text='Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(sell, title='Sell', text='Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)
barcolor(barbuy ? color.green : na)
barcolor(barsell ? color.red : na)
stop_level = pos == 1 ? xATR_trailing_stop - stoploss * xATR : xATR_trailing_stop + stoploss * xATR
stop_level := math.max(stop_level, nz(stop_level[1]))
if pos == 1
strategy.exit('Exit Long', 'UT Long', stop=stop_level)
else if pos == -1
strategy.exit('Exit Short', 'UT Short', stop=stop_level)
if buy
strategy.entry("Enter Long", strategy.long)
else if sell
strategy.entry("Enter Short", strategy.short)