
Die Strategie nutzt eine Kombination aus T3 Moving Averages, ATR-Indikatoren und Hyperbole, um Kauf- und Verkaufssignale zu identifizieren und Trend-Tracking-Trades zu realisieren. Die Strategie hat den Vorteil, schnell zu reagieren und das Handelsrisiko zu kontrollieren.
T3 Moving Average: Berechnung eines T3 Moving Averages mit einem glatten Parameter T3 ([default 100]) zur Bestimmung der Trendrichtung.
ATR: Berechnung des ATR (Average True Range) zur Bestimmung der Größe der Stop-Loss-Stoppposition.
ATR Mobile Stop: Eine mobile Stop-Line basierend auf dem ATR, die sich an Preisänderungen und Schwankungen anpassen kann, um Trends zu verfolgen.
Kaufsignal: Ein Kaufsignal wird erzeugt, wenn der ATR-Stop-Line-Streck über den Schlusskurs und unter dem T3-Durchschnitt durchbrochen wird.
Verkaufssignal: Ein Verkaufssignal wird erzeugt, wenn die ATR-Stoplinie unterhalb des Schlusskurses und über dem T3-Durchschnitt durchbrochen wird.
Stop-Loss-Prämien: Nach dem Eintritt werden die Stop-Loss- und Stop-Prämien auf Basis des ATR-Wertes und der vom Benutzer festgelegten Rendite-Risiko-Ratio berechnet.
Nach dem Kauf wird der Stop-Loss-Preis als Einstiegspreis abzüglich des ATR-Wertes und der Stop-Loss-Preis als Einstiegspreis plus der ATR-Wert multipliziert mit der Rendite des Risikos angegeben.
Nach dem Verkauf wird der Stop-Loss-Preis als Einstiegspreis plus der ATR-Wert und der Stop-Stop-Preis als Einstiegspreis minus der ATR-Wert multipliziert mit der Rendite des Risikos angegeben.
Wenn der Preis einen Stop-Loss oder einen Stop-Stop auslöst, wird die Off-Position aufgegeben.
Der T3-Durchschnittsparameter setzt die 100 als Default-Wert ein und ist empfindlicher als der allgemeine Moving Average und kann schneller auf Preisänderungen reagieren.
Der mobile Stop-Loss, der mit dem ATR berechnet wird, ist auf Basis von Marktfluktuationen und Trail-Preisen berechnet, um das Risiko zu vermeiden, dass der Stop-Loss durchbrochen wird. Die Stop-Stop-Loss-Position ist auf der Grundlage des ATR und kann die Risiko-Rendite pro Handel kontrollieren.
Die ATR-Mobilstop-Linie ist in der Lage, Trends zu verfolgen und wird nicht ausgelöst, selbst wenn der Preis kurzfristig rückläufig ist, wodurch falsche Signale reduziert werden.
Die T3-Durchschnitts- und ATR-Zyklen können optimiert werden, um die Parameter für verschiedene Märkte anzupassen und die Strategie zu stabilisieren.
Bei einem heftigen Trend kann der Preis die Stop-Line direkt überschreiten und zu Verlusten führen. Die ATR-Zyklen und die Stop-Distanz können entsprechend erweitert werden, um diese zu mildern.
Bei einem Trendwechsel kann der Preis einen Verlust verursachen, wenn er die bewegliche Stop-Loss-Linie überschreitet. Der Trend kann in Kombination mit anderen Indikatoren beurteilt werden, um den Handel in der Nähe des Wendepunkts zu vermeiden.
Die Parameteroptimierung erfordert eine umfangreiche Unterstützung durch historische Daten, und es besteht das Risiko einer Überoptimierung. Die Optimierungsparameter sollten in einer Kombination aus mehreren Märkten und mehreren Zeiträumen verwendet werden und dürfen nicht auf einen einzigen Datensatz angewiesen sein.
Verschiedene T3-Durchschnitts-Periodenparameter testen, um die optimale Kombination aus Sensitivität und Stabilität zu finden
Testen von ATR-Zyklusparametern, um die optimale Balance zwischen Risikokontrolle und Gewinntrends zu finden
Vermeidung von Trendwende-Fehlern in Kombination mit RSI, MACD und anderen Indikatoren
Trainieren von optimalen Parametern mithilfe von maschinellen Lernmethoden, um die Grenzen der künstlichen Optimierung zu verringern
Erweiterte Positionsmanagementstrategien und bessere Risikokontrolle
Diese Strategie integriert die Vorteile der T3-Mittellinie und der ATR-Indikatoren, um schnell auf Preisänderungen zu reagieren und Risiken zu kontrollieren. Durch die Optimierung von Parametern und die Kombination mit anderen Indikatoren können die Strategie-Stabilität und die Handels-Effizienz weiter verbessert werden.
/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='UT Bot Alerts (QuantNomad) Strategy w/ NinjaView', overlay=true)
T3 = input(100)//600
// Input for Long Settings
// Input for Long Settings
xPrice3 = close
xe1 = ta.ema(xPrice3, T3)
xe2 = ta.ema(xe1, T3)
xe3 = ta.ema(xe2, T3)
xe4 = ta.ema(xe3, T3)
xe5 = ta.ema(xe4, T3)
xe6 = ta.ema(xe5, T3)
b3 = 0.7
c1 = -b3*b3*b3
c2 = 3*b3*b3+3*b3*b3*b3
c3 = -6*b3*b3-3*b3-3*b3*b3*b3
c4 = 1+3*b3+b3*b3*b3+3*b3*b3
nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3
//plot(nT3Average, color=color.white, title="T3")
// Buy Signal - Price is below T3 Average
buySignal3 = xPrice3 < nT3Average
sellSignal3 = xPrice3 > nT3Average
// Inputs
a = input(1, title='Key Value. "This changes the sensitivity"')
c = input(50, title='ATR Period')
h = input(true, title='Signals from Heikin Ashi Candles')
riskRewardRatio = input(1, title='Risk Reward Ratio')
xATR = ta.atr(c)
nLoss = a * xATR
src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close
xATRTrailingStop = 0.0
iff_1 = src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss
iff_2 = src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : iff_1
xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : iff_2
pos = 0
iff_3 = src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)
pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[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, xATRTrailingStop)
below = ta.crossunder(ema, xATRTrailingStop)
buy = src > xATRTrailingStop and above
sell = src < xATRTrailingStop and below
barbuy = src > xATRTrailingStop
barsell = src < xATRTrailingStop
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.new(color.green, 90) : na)
barcolor(barsell ? color.new(color.red, 90) : na)
var float entryPrice = na
var float takeProfitLong = na
var float stopLossLong = na
var float takeProfitShort = na
var float stopLossShort = na
if buy and buySignal3
entryPrice := src
takeProfitLong := entryPrice + nLoss * riskRewardRatio
stopLossLong := entryPrice - nLoss
takeProfitShort := na
stopLossShort := na
if sell and sellSignal3
entryPrice := src
takeProfitShort := entryPrice - nLoss * riskRewardRatio
stopLossShort := entryPrice + nLoss
takeProfitLong := na
stopLossLong := na
// Strategy order conditions
acct = "Sim101"
ticker = "ES 12-23"
qty = 1
OCOMarketLong = '{ "alert": "OCO Market Long", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitLong) + '", "stop_price": "' + str.tostring(stopLossLong) + '", "tif": "DAY" }'
OCOMarketShort = '{ "alert": "OCO Market Short", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitShort) + '", "stop_price": "' + str.tostring(stopLossShort) + '", "tif": "DAY" }'
CloseAll = '{ "alert": "Close All", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '" }'
strategy.entry("Long", strategy.long, when=buy ,alert_message=OCOMarketLong)
strategy.entry("Short", strategy.short, when=sell , alert_message=OCOMarketShort)
// Setting the take profit and stop loss for long trades
strategy.exit("Take Profit/Stop Loss", "Long", stop=stopLossLong, limit=takeProfitLong,alert_message=CloseAll)
// Setting the take profit and stop loss for short trades
strategy.exit("Take Profit/Stop Loss", "Short", stop=stopLossShort, limit=takeProfitShort,alert_message=CloseAll)
// Plot trade setup boxes
bgcolor(buy ? color.new(color.green, 90) : na, transp=0, offset=-1)
bgcolor(sell ? color.new(color.red, 90) : na, transp=0, offset=-1)
longCondition = buy and not na(entryPrice)
shortCondition = sell and not na(entryPrice)
var line longTakeProfitLine = na
var line longStopLossLine = na
var line shortTakeProfitLine = na
var line shortStopLossLine = na
if longCondition
longTakeProfitLine := line.new(bar_index, takeProfitLong, bar_index + 1, takeProfitLong, color=color.green, width=2)
longStopLossLine := line.new(bar_index, stopLossLong, bar_index + 1, stopLossLong, color=color.red, width=2)
label.new(bar_index + 1, takeProfitLong, str.tostring(takeProfitLong, "#.#####"), color=color.green, style=label.style_none, textcolor=color.green, size=size.tiny)
label.new(bar_index + 1, stopLossLong, str.tostring(stopLossLong, "#.#####"), color=color.red, style=label.style_none, textcolor=color.red, size=size.tiny)
if shortCondition
shortTakeProfitLine := line.new(bar_index, takeProfitShort, bar_index + 1, takeProfitShort, color=color.green, width=2)
shortStopLossLine := line.new(bar_index, stopLossShort, bar_index + 1, stopLossShort, color=color.red, width=2)
label.new(bar_index + 1, takeProfitShort, str.tostring(takeProfitShort, "#.#####"), color=color.green, style=label.style_none, textcolor=color.green, size=size.tiny)
label.new(bar_index + 1, stopLossShort, str.tostring(stopLossShort, "#.#####"), color=color.red, style=label.style_none, textcolor=color.red, size=size.tiny)
alertcondition(buy, 'UT Long', 'UT Long')
alertcondition(sell, 'UT Short', 'UT Short')