Diese Strategie verwendet mehrere Indikatoren wie Bollinger Bands, RSI, ADX, MACD, um Markttrends zu beurteilen und verfügt über eine starke Trendidentifikationsfähigkeit. Sie folgt der Trendstrategie, wenn die Indikatorsignale gleichzeitig bullisch sind. Sie schließt Positionen, um Verluste zu stoppen, wenn die Indikatorsignale gleichzeitig bärisch sind.
Durch das kombinierte Urteilen mehrerer Indikatoren kann es Preistrends genau identifizieren und sie rechtzeitig verfolgen, wenn ein Trend auftritt, um überschüssige Renditen zu erzielen.
Der größte Vorteil dieser Strategie besteht darin, dass die Bewertung der Indikatorenkombination umfassender und genauer ist, wodurch die Preisentwicklung effektiv erkannt und falsche Signale, die durch einzelne Indikatoren verursacht werden, vermieden werden können.
Die Vorteile sind insbesondere:
Durch die Bewertung der Indikatorenkombination kann sie die falschen Signale maximieren, reduzieren und die Stabilität der Strategie verbessern.
Die wichtigsten Risiken dieser Strategie sind folgende:
Für Risiko 1 kann die Abhängigkeit von mehreren Indikatoren das Problem des Ausfalls eines einzelnen Indikators in gewissem Maße lindern, aber die Risikomanagementmechanismen müssen noch verbessert werden.
Bei Risiko 2 können die Parameter entsprechend an einen engen Handelsbereich angepasst und die Handelshäufigkeit verringert werden, um Risiken zu mindern.
Zu den wichtigsten optimierbaren Aspekten dieser Strategie gehören:
Durch kontinuierliche Optimierung wird die Parameterrobustheit kontinuierlich verbessert und die Wahrscheinlichkeit falscher Signale verringert.
Insgesamt hat diese Strategie eine relativ starke Fähigkeit, Trendsignale durch Indikatorenkombinationsbeurteilungen zu identifizieren, die Preistrends effektiv identifizieren können.
Es gibt jedoch auch gewisse Risiken, Risikomanagement und Parameteroptimierung müssen kontinuierlich verbessert werden, um langfristige Operationen zu stabilisieren.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 5h basePeriod: 15m 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/ // © abilash.s.90 dIMinusCalc(adxLen) => smoothedTrueRange = 0.0 smoothedDirectionalMovementMinus = 0.0 dIMinus = 0.0 trueRange = 0.0 directionalMovementMinus = 0.0 trueRange := max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1]))) directionalMovementMinus := nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0 smoothedTrueRange := nz(smoothedTrueRange[1]) - (nz(smoothedTrueRange[1])/adxLen) + trueRange smoothedDirectionalMovementMinus := nz(smoothedDirectionalMovementMinus[1]) - (nz(smoothedDirectionalMovementMinus[1])/adxLen) + directionalMovementMinus dIMinus := smoothedDirectionalMovementMinus / smoothedTrueRange * 100 dIMinus dIPlusCalc(adxLen) => smoothedTrueRange = 0.0 smoothedDirectionalMovementPlus = 0.0 dIPlus = 0.0 trueRange = 0.0 directionalMovementPlus = 0.0 trueRange := max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1]))) directionalMovementPlus := high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0 smoothedTrueRange := nz(smoothedTrueRange[1]) - (nz(smoothedTrueRange[1])/adxLen) + trueRange smoothedDirectionalMovementPlus := nz(smoothedDirectionalMovementPlus[1]) - (nz(smoothedDirectionalMovementPlus[1])/adxLen) + directionalMovementPlus dIPlus := smoothedDirectionalMovementPlus / smoothedTrueRange * 100 dIPlus Adx(adxLen) => dIPlus = 0.0 dIMinus = 0.0 dX = 0.0 aDX = 0.0 dIPlus := dIPlusCalc(adxLen) dIMinus := dIMinusCalc(adxLen) dX := abs(dIPlus-dIMinus) / (dIPlus+dIMinus)*100 aDX := sma(dX, adxLen) aDX BarInSession(sess) => time(timeframe.period, sess) != 0 //@version=4 strategy("Bollinger Band + RSI + ADX + MACD", overlay=true) //Session session = input(title="Trading Session", type=input.session, defval="0930-1500") sessionColor = BarInSession(session) ? color.green : na bgcolor(color=sessionColor, transp=95) // Bollinger Bands src = input(high, title="Bollinger Band Source", type=input.source) length = input(3, minval=1, type=input.integer, title="Bollinger Band Length") mult = input(4.989, minval=0.001, maxval=50, step=0.001, type=input.float, title="Bollinger Band Std Dev") basis = sma(src, length) dev = mult * stdev(src, length) upper = basis + dev lower = basis - dev plot(upper, title="Bollinger Band Upper", color=color.red) plot(lower, title="Bollinger Band Lower", color=color.green) // RSI rsiSrc = input(close, title="RSI Source", type=input.source) rsiLength = input(16, minval=1, type=input.integer, title="RSI Length") rsiComparator = input(39.2, title="RSI Comparator", type=input.float, step=0.1) rsi = rsi(rsiSrc, rsiLength) // ADX adxLength = input(14, minval=1, type=input.integer, title="ADX Length") adxComparator = input(14, minval=1, type=input.integer, title="ADX Comparator") adx = Adx(adxLength) // Heikinashi haClose = security(heikinashi(syminfo.ticker), timeframe.period, close) haOpen = security(heikinashi(syminfo.ticker), timeframe.period, open) nextHaOpen = (haOpen + haClose) / 2 //MACD macdCalcTypeProcessed = input(title="MACD Source", type=input.source, defval=high) fast = input(12, title="MACD Fast") slow = input(20, title="MACD Slow") signalLen = input(15, title="MACD Signal") fastMA = ema(macdCalcTypeProcessed, fast) slowMA = ema(macdCalcTypeProcessed, slow) macd = fastMA - slowMA signal = sma(macd, signalLen) longCondition() => (low < lower) and (rsi[0] > rsiComparator) and (adx > adxComparator) and (close > nextHaOpen) and BarInSession(session) and macd > signal stop = (close - max((low - (low * 0.0022)), (close - (close * 0.0032)))) / syminfo.mintick target = (max(upper, (close + (close * 0.0075))) - close) / syminfo.mintick strategy.entry("SX,LE", strategy.long, when=longCondition(), comment="SX,LE") strategy.close_all(when=(not BarInSession(session))) strategy.exit("LX", from_entry="SX,LE", profit=target, loss=stop)