Oszillator-Handelsstrategien


Erstellungsdatum: 2023-12-13 14:45:51 zuletzt geändert: 2023-12-13 14:45:51
Kopie: 0 Klicks: 795
1
konzentrieren Sie sich auf
1621
Anhänger

Oszillator-Handelsstrategien

Überblick

Dies ist eine umkehrende Handelsstrategie, die auf mehreren technischen Indikatoren basiert. Sie kombiniert Indikatoren wie CCI, Dynamikindikator und RSI, um potenzielle Über- und Leerhandelsmöglichkeiten zu identifizieren. Die Strategie sendet ein Handelssignal aus, wenn der Indikator ein Überkauf-Überverkaufsignal zeigt und der Preis rückläufig ist.

Strategieprinzip

Die Handelssignale für diese Strategie stammen aus einem benutzerdefinierten Edri-Punkt-Kauf- und Verkaufssymbol, das die Kreuzung von CCI, Momentum und RSI berücksichtigt. Die spezifische Logik lautet:

Mehrkopf-Signalbedingungen:

  1. Der Edri-Punkt-Shopping-Punkt-Shopping-Indikator sendet ein Kaufsignal, d.h. ein 0-Achs-Streifen auf dem CCI oder ein 0-Achs-Streifen auf dem Momentum-Indikator, und der RSI liegt unter der Überverkaufsgrenze.
  2. Der Preis ist zurückgegangen oder liegt unter der 100-Zyklus-EMA.

Luftwaffen-Beschuss:

  1. Der Edri-Punkt-Shopping-Punkt-Shopping-Indikator sendet ein Verkaufssignal, d.h. der CCI unterhalb der 0-Achse oder der Dynamik-Indikator unterhalb der 0-Achse, und der RSI ist höher als die Überkauflinie.
  2. Der Preis ist zurückgegangen oder liegt über der 100-Zyklus-EMA.

Die Strategie kann auch auf die Suche nach üblichen Abweichungen ausgerichtet werden, d.h. ein deutlicher Abweichung des RSI vom Preis, um ein Handelssignal zu erzeugen.

Der Stop-Loss-Punkt der Strategie ist der Einstiegspreis ± 2 ATR und der Stop-Loss-Punkt ist der Einstiegspreis ± 4 ATR, wenn das Handelssignal erfüllt ist. Dies ermöglicht die Einrichtung eines angemessenen Stop-Loss-Ranges, der auf die Höhe der Marktschwankungen basiert.

Analyse der Stärken

  1. Die Analyse mehrerer Indikatoren hilft, falsche Signale aus einem einzigen Indikator zu vermeiden.
  2. Die Umkehrung des Handels ermöglicht es, kurzfristige Handelschancen in einem wackligen Umfeld zu erfassen.
  3. Die ATR-Stop-Loss-Stop-Methode ermöglicht eine intelligente Anpassung der Positionen an die Marktschwankungen.
  4. Es ist möglich, Abweichungen zu finden, um Positionen zu vermeiden, die nicht extrem überkauft oder überverkauft sind.

Risikoanalyse

  1. Die falsche Einstellung der Indikatorparameter kann zu verpassten Handelsmöglichkeiten oder zu vielen falschen Signalen führen.
  2. Die Reverse-Trading-Methode kann in einem Trend eine Reihe von Verlusten verursachen.
  3. Die ATR ist nachlässig und kann die Stop-Loss-Stop-Punkt-Position nicht rechtzeitig aktualisieren, wenn sich die Situation schnell ändert.

Die Lösung:

  1. Die Parameter des Indikators werden mehrfach getestet und optimiert, um die optimale Kombination von Parametern zu finden.
  2. Es kann in Betracht gezogen werden, die Strategie bei starken Trends auszusetzen.
  3. In Kombination mit anderen Stop-Methoden, wie beispielsweise Mobile Stop oder Default Stop.

Optimierungsrichtung

  1. Verschiedene Kombinationen von Parametern, wie CCI und Dynamik-Zyklus, RSI-Parameter, ATR-Multiplikatoren usw. werden getestet.
  2. Hinzufügen von zusätzlichen Filterbedingungen wie Preismodellen, Umsatzänderungen usw.
  3. Anpassung der Positionsverwaltung, z. B. Positionsverhältnis nach ATR-Werten.
  4. Einstellung der Parametervorlagen für verschiedene Sorten und Perioden.
  5. Erwägen Sie, den Umkehrhandel in Trends zu unterbrechen, in Verbindung mit einem Trend-Tracking-Mechanismus.

Zusammenfassen

Diese Strategie wird hauptsächlich bei Schokflüssen eingesetzt, um durch die Erfassung von mittleren Kurzlinieumkehrungen stabilere Erträge zu erzielen. Sie hilft bei der Identifizierung von kurzfristigen Preistransaktionen und erzeugt Handelssignale basierend auf mehreren Kennzahlen. Die Vorteile der Strategie können durch angemessene Parameteroptimierung und Risikomanagement effektiv genutzt werden.

Strategiequellcode
/*backtest
start: 2023-11-12 00:00:00
end: 2023-12-02 00:00:00
period: 1h
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/
// © MagicStrategies

//@version=5
strategy("Reversal Indicator Strategy", overlay = true)

// Input settings
ccimomCross = input.string('CCI', 'Entry Signal Source', options=['CCI', 'Momentum'], tooltip='CCI or Momentum will be the final source of the Entry signal if selected.')
ccimomLength = input.int(10, minval=1, title='CCI/Momentum Length')
useDivergence = input.bool(true, title='Find Regular Bullish/Bearish Divergence', tooltip='If checked, it will only consider an overbought or oversold condition that has a regular bullish or bearish divergence formed inside that level.')
rsiOverbought = input.int(65, minval=1, title='RSI Overbought Level', tooltip='Adjusting the level to extremely high may filter out some signals especially when the option to find divergence is checked.')
rsiOversold = input.int(35, minval=1, title='RSI Oversold Level', tooltip='Adjusting this level extremely low may filter out some signals especially when the option to find divergence is checked.')
rsiLength = input.int(14, minval=1, title='RSI Length')
plotMeanReversion = input.bool(false, 'Plot Mean Reversion Bands on the chart', tooltip='This function doesn\'t affect the entry of signal but it suggests buying when the price is at the lower band, and then sell it on the next bounce at the higher bands.')
emaPeriod = input(200, title='Lookback Period (EMA)')
bandMultiplier = input.float(1.8, title='Outer Bands Multiplier', tooltip='Multiplier for both upper and lower bands')


// CCI and Momentum calculation
momLength = ccimomCross == 'Momentum' ? ccimomLength : 10
mom = close - close[momLength]
cci = ta.cci(close, ccimomLength)
ccimomCrossUp = ccimomCross == 'Momentum' ? ta.cross(mom, 0) : ta.cross(cci, 0)
ccimomCrossDown = ccimomCross == 'Momentum' ? ta.cross(0, mom) : ta.cross(0, cci)

// RSI calculation
src = close
up = ta.rma(math.max(ta.change(src), 0), rsiLength)
down = ta.rma(-math.min(ta.change(src), 0), rsiLength)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
oversoldAgo = rsi[0] <= rsiOversold or rsi[1] <= rsiOversold or rsi[2] <= rsiOversold or rsi[3] <= rsiOversold
overboughtAgo = rsi[0] >= rsiOverbought or rsi[1] >= rsiOverbought or rsi[2] >= rsiOverbought or rsi[3] >= rsiOverbought

// Regular Divergence Conditions
bullishDivergenceCondition = rsi[0] > rsi[1] and rsi[1] < rsi[2]
bearishDivergenceCondition = rsi[0] < rsi[1] and rsi[1] > rsi[2]

// Entry Conditions
longEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
shortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)


// Mean Reversion Indicator
meanReversion = plotMeanReversion ? ta.ema(close, emaPeriod) : na
stdDev = plotMeanReversion ? ta.stdev(close, emaPeriod) : na
upperBand = plotMeanReversion ? meanReversion + stdDev * bandMultiplier : na
lowerBand = plotMeanReversion ? meanReversion - stdDev * bandMultiplier : na


// Plotting
plotshape(longEntryCondition, title='BUY', style=shape.triangleup, text='B', location=location.belowbar, color=color.new(color.lime, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(shortEntryCondition, title='SELL', style=shape.triangledown, text='S', location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

plot(upperBand, title='Upper Band', color=color.new(color.fuchsia, 0), linewidth=1)
plot(meanReversion, title='Mean', color=color.new(color.gray, 0), linewidth=1)
plot(lowerBand, title='Lower Band', color=color.new(color.blue, 0), linewidth=1)

// Entry signal alerts
alertcondition(longEntryCondition, title='BUY Signal', message='Buy Entry Signal')
alertcondition(shortEntryCondition, title='SELL Signal', message='Sell Entry Signal')
alertcondition(longEntryCondition or shortEntryCondition, title='BUY or SELL Signal', message='Entry Signal')

ema100 = ta.ema(close, 100)
plot(ema100, color=color.red)

// Define trading signals based on the original indicator's entry conditions
// Buy if long condition is met and price has pulled back to or below the 100 EMA
longCondition  = longEntryCondition and close <= ema100
// Sell if short condition is met and price has pulled back to or above the 100 EMA
shortCondition = shortEntryCondition and close >= ema100

// Strategy Entries
if longCondition
    strategy.entry("Buy", strategy.long)
if shortCondition
    strategy.entry("Sell", strategy.short)