Stochastische Oszillator- und gleitende Durchschnitts-Crossover-Strategie mit Stop Loss und Stochastischem Filter

Schriftsteller:ChaoZhang, Datum: 2024-04-26 16:10:11
Tags:- Nein.SMA

img

Übersicht

Diese Strategie kombiniert den Stochastischen Oszillator mit einem gleitenden Durchschnitt und erzeugt Handelssignale, indem die Überkauf- und Überverkaufszustände des Stochastischen Indikators und den Trend des gleitenden Durchschnitts beobachtet werden. Sie erzeugt ein kurzes Signal, wenn der Stochastische Indikator in der Überkaufzone ist und der gleitende Durchschnitt nach unten ist, und ein langes Signal, wenn er in der Überverkaufszone ist und der gleitende Durchschnitt nach oben ist. Darüber hinaus führt die Strategie einen stochastischen Indikatorfilter ein, der auch entsprechende Handelssignale erzeugen kann, wenn die stochastische K-Linie die D-Line überschreitet, nachdem sie für eine bestimmte Anzahl von K-Linien unter 50 geblieben ist. Die Strategie setzt auch einen Stop Loss zur Risikokontrolle.

Strategieprinzip

  1. Berechnen Sie den Stochastischen Oszillator, um die K-Linie und die D-Linie zu erhalten. Die Parameter sind einstellbar, einschließlich der stochastischen Periode, K-Gleichung, D-Gleichung, Überkaufzone und Überverkaufszone.

  2. Berechnen Sie den gleitenden Durchschnitt unter Verwendung des Standardschlusskurses mit einer anpassbaren Periode.

  3. Berechnen Sie den Stochastischen Indikatorfilter. Wenn die K-Linie für eine bestimmte Anzahl von K-Linien unter 50 bleibt, erzeugt sie ein Filtersignal.

  4. Bedingungen für die Erzeugung eines langen Signals: Stochastischer Indikator kreuzt in der Überverkaufszone nach oben ODER Stochastischer Indikator filtert Signal UND gleitender Durchschnitt ist nach oben.

  5. Bedingungen für die Erzeugung eines Kurzsignales: Der Stochastische Indikator kreuzt in der überkauften Zone nach unten ODER Der Stochastische Indikator filtert das Signal UND der gleitende Durchschnitt ist nach unten.

  6. Long-Positionsschließungsbedingung: Die stochastische K-Linie überschreitet den gleitenden Durchschnitt UND der Durchschnitt dreht sich nach unten.

  7. Schließbedingung für die Leerposition: Die stochastische K-Linie überschreitet den gleitenden Durchschnitt UND der Durchschnitt dreht sich nach oben.

  8. Das Positionsmanagement verwendet einen festen Prozentsatz der Mittel, standardmäßig 10%. Es setzt auch einen Stop Loss, standardmäßig 2%.

Analyse der Vorteile

  1. Durch die Kombination von Überkauf/Überverkauf und Trendmerkmalen kann es einen Trend verfolgen und abschalten.

  2. Der Stochastische Indikatorfilter verhindert häufiges Handeln in schwankenden Märkten.

  3. Die Stop Loss-Einstellung hilft bei der Steuerung der Abzüge.

  4. Die Code-Struktur ist klar, die Parameter sind einstellbar und sie eignet sich für weitere Optimierungen.

Risikoanalyse

  1. Der Stochastische Oszillator hat eine gewisse Verzögerung, die die besten Kauf- und Verkaufspunkte verpassen kann.

  2. Die Genauigkeit der Erfassung von Aufträgen an Trendwendepunkten ist gering und die Häufigkeit von Stop-Loss kann hoch sein.

  3. Die Vermögensverwaltung mit festverzinslichem Verhältnis hat bei aufeinanderfolgenden Verlusten einen hohen Abzug.

Optimierungsrichtung

  1. Mehr Filterbedingungen wie Preisverhalten, andere Hilfsindikatoren usw. sollen eingeführt werden, um die Signalgenauigkeit zu verbessern.

  2. Teilen Sie Signale in starke und schwache und erhöhen Sie die Positionen, wenn starke Signale erscheinen.

  3. Optimieren Sie das Urteilsvermögen über Trendwendepunkte, um mehr Marktbewegungen zu erfassen.

  4. Optimierung der Positionsverwaltung, Berücksichtigung der Anpassung von Positionen auf der Grundlage von variablen Gewinn-Verlust-Verhältnissen usw.

  5. Versuche verschiedene Parameterkombinationen, um die optimalen Parameter zu finden.

Zusammenfassung

Diese Strategie basiert auf dem Stochastischen Oszillator und kombiniert gleitende Durchschnitte, um Trends zu beurteilen, während sie gleichzeitig die Filterfunktion des Stochastischen Indikators selbst nutzt und relativ zuverlässige Handelssignale erzeugt. Die allgemeine Idee der Strategie ist klar und geeignet für den Einsatz in Trending-Märkten. Aufgrund der Verzögerung des Stochastischen Oszillators kann ihre Leistung an Marktturnpunkten jedoch schlecht sein, und ihre allgemeine Anpassungsfähigkeit und Robustheit müssen weiter untersucht werden. In Zukunft kann die Strategie aus Aspekten wie Filterbedingungen, Positionsmanagement und Parameteroptimierung verbessert werden.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Pablo_2uc

//@version=5
strategy("Estrategia Estocástico + MA con Stop Loss y Filtro Estocástico", overlay=true)

// Parámetros del Estocástico
length = input.int(14, title="Longitud Estocástico")
smoothK = input.int(3, title="Suavizado K")
smoothD = input.int(3, title="Suavizado D")
oversold = input.int(20, title="Sobreventa")
overbought = input.int(80, title="Sobrecompra")

// Parámetros de la Media Móvil
maLength = input.int(9, title="Longitud MA")
maSource = input(close, title="Fuente MA")

// Capital inicial
capital = 5000

// Tamaño de posición (10% del capital)
positionSize = capital * 0.10

// Stop Loss (2% del precio de entrada)
stopLossPercent = input.int(2, title="Stop Loss (%)") / 100

// Número de ruedas para el filtro estocástico
filterPeriods = input.int(12, title="Ruedas de Filtro Estocástico")

// Cálculo del Estocástico
k = ta.sma(ta.stoch(close, high, low, length), smoothK)
d = ta.sma(k, smoothD)

// Cálculo de la Media Móvil
ma = ta.sma(maSource, maLength)

// Filtro estocástico
stochasticFilter = ta.sma(k > 50 ? 1 : 0, filterPeriods)

// Condiciones de entrada en largo y corto
longCondition = (ta.crossunder(k, oversold) or ta.crossover(stochasticFilter, 1)) and ma > ma[1]
shortCondition = (ta.crossover(k, overbought) or ta.crossover(stochasticFilter, 1)) and ma < ma[1]

// Condiciones de salida
exitLongCondition = ta.crossover(k, ma) and ma < ma[1]
exitShortCondition = ta.crossunder(k, ma) and ma > ma[1]

// Estrategia
if (longCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent))
if (shortCondition)
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent))

// Cierre de posiciones
if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")

Verwandt

Mehr