この戦略は,市場変動に適応するために動的にお利益とストップロスのレベルを調整するために,ATR (Average True Range) とEMA (Exponential Moving Average) という2つの指標を使用する.この戦略の主な考え方は,市場変動を測定し,変動の大きさに基づいて利益とストップロスのレベルを設定するために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)