Die Ressourcen sind geladen. Beförderung...

Dynamische Gewinn- und Stop-Loss-Handelsstrategie auf Basis von drei aufeinanderfolgenden bearish Kerzen und gleitenden Durchschnitten

Schriftsteller:ChaoZhang, Datum: 2024-05-09
Tags:SMAEMA

img

Übersicht

Diese Handelsstrategie basiert auf dem Muster von drei aufeinanderfolgenden Bärenkerzen und einem gleitenden Durchschnittssystem zur Bestimmung von Handelssignalen. Wenn der Preis über dem 200-tägigen gleitenden Durchschnitt liegt und es drei aufeinanderfolgende Bärenkerzen gibt, eröffnet sie eine Long-Position. Die Strategie verwaltet das Handelsrisiko durch dynamische Take-Profit- und Stop-Loss-Niveaus, die durch die Position des kurzfristigen gleitenden Durchschnitts und die prozentuale Preisänderung bestimmt werden. Die Strategie handelt nur innerhalb eines bestimmten Zeitraums.

Strategieprinzip

  1. Berechnen Sie die Anzahl der aufeinanderfolgenden bearish Kerzen. Wenn eine angegebene Anzahl (Standard ist 3) von aufeinanderfolgenden bearish Kerzen erscheint, gilt es als ein langes Signal.
  2. Verwenden Sie zwei gleitende Durchschnitte, um die Tendenz und den Zeitpunkt der Trades zu bestimmen, mit Standard-Einstellungen von gleitenden Durchschnitten für 10 Tage und 200 Tage.
  3. Einstellen dynamischer Take-Profit- und Stop-Loss-Levels: Die Take-Profit-Level liegt einen bestimmten Prozentsatz (Standard 1,5%) über dem Einstiegspreis und die Stop-Loss-Level liegt einen bestimmten Prozentsatz (Standard 1%) unter dem Einstiegspreis.
  4. Eine weitere Bedingung für den Schluß einer Position ist, wenn sich die Kursposition im Verhältnis zum 10-tägigen gleitenden Durchschnitt ändert.
  5. Die Strategie läuft nur innerhalb eines bestimmten Zeitrahmens, der durch die Start- und Enddaten bestimmt wird.

Strategische Vorteile

  1. Durch die Kombination von Preismustern und einem gleitenden Durchschnittssystem kann es Trendchancen relativ gut erfassen.
  2. Durch dynamische Take-Profit- und Stop-Loss-Levels können Risiko und Belohnung flexibel gesteuert werden.
  3. Die Verwendung von Änderungen der Position des kurzfristigen gleitenden Durchschnitts als Signal zum Schließen von Positionen kann schnell auf plötzliche Kursumkehrungen reagieren.
  4. Die Angabe eines Handelszeitraums kann den Handel während besonderer Zeiträume wie Marktschließungen oder Feiertage vermeiden und das Risiko verringern.

Strategische Risiken

  1. Das Muster der aufeinanderfolgenden bärischen Kerzen kann eine Trendumkehr nicht vollständig bestimmen, und es kann Situationen geben, in denen der Preis nach aufeinanderfolgenden bärischen Kerzen weiter steigt und die Strategie scheitert.
  2. Bei starken Marktschwankungen können festgelegte Prozentsatz-Take-Profit- und Stop-Loss-Level möglicherweise nicht reagieren.
  3. Die Bewertung der Position des kurzfristigen gleitenden Durchschnitts kann verzögert sein, insbesondere wenn sich die Preise rasch ändern, und die beste Schlussmöglichkeit kann verpasst worden sein.
  4. Die Strategie fehlt an Positionsmanagement- und Risikokontrollmaßnahmen. Der Einstiegspunkt und die Positionsgröße sind fest, was zu einem übermäßigen Risiko bei einer einzigen Transaktion führen kann.

Strategieoptimierungsrichtlinien

  1. Es können weitere technische Indikatoren eingeführt werden, um das Urteilen zu unterstützen, wie MACD und RSI, um die Zuverlässigkeit der Signale zu verbessern.
  2. Optimierung der Berechnungsmethode für die Gewinn- und Stop-Loss-Level, z. B. Verwendung von ATR oder Volatilität zur dynamischen Anpassung oder Kombination von Unterstützungs- und Widerstandsniveaus zur Einstellung.
  3. Für Schlusssignale sollten mehr Bestätigungsbedingungen wie Änderungen des Handelsvolumens, Long-Short-Positionsquoten usw. verwendet werden, um falsche Signale zu vermeiden.
  4. Einführung von Positionsmanagement- und Risikokontrollmaßnahmen, z. B. Anpassung der Positionsgröße jeder Transaktion an den Kontostand und das Risikoniveau und Festlegung allgemeiner Risikogrenzen.
  5. Bei Parametereinstellungen wie der Anzahl der aufeinanderfolgenden bearisher Kerzen und gleitenden Durchschnittsperioden können Optimierungstests durchgeführt werden, um die beste Parameterkombination zu finden.

Zusammenfassung

Diese Handelsstrategie bestimmt Trending-Handelschancen durch das Muster von aufeinanderfolgenden bearish Kerzen und einem gleitenden Durchschnittssystem, während das Risiko durch dynamische Take-Profit- und Stop-Loss-Levels und Veränderungen in der Position des kurzfristigen gleitenden Durchschnitts kontrolliert wird. Die Strategie hat eine klare Logik und ist für Trader geeignet, die darauf abzielen, mittelfristige bis langfristige Trends zu erfassen. Die Strategie hat jedoch auch einige Einschränkungen, wie die Zuverlässigkeit von Signalen, die Einstellung von Take-Profit- und Stop-Loss-Leveln und Positionsmanagement, die noch Raum für Optimierung haben. In der Praxis ist es notwendig, die Strategie entsprechend den Merkmalen des Marktes und den persönlichen Risikopräferenzen anzupassen und zu verbessern und Risiken streng zu kontrollieren.


/*backtest
start: 2023-05-09 00:00:00
end: 2024-05-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Estrategia de Trading", overlay=true)

// Definir el número de cierres de velas decrecientes consecutivas
var int cierres_decrecientes_consecutivos = 0
num_cierres_decrecientes = input.int(3, title="Número de cierres decrecientes", minval=1)

// Definir el porcentaje de cambio para cerrar la operación
porcentaje_cierre_arriba = input.float(1.5, title="Porcentaje de cierre arriba (%)", step=0.1)
porcentaje_cierre_abajo = input.float(1.0, title="Porcentaje de cierre abajo (%)", step=0.1)

// Definir las medias móviles para el cierre de la operación
periodos_media_movil_cierre = input.int(10, title="Períodos de la media móvil para cierre")
periodos_media_movil_200 = input.int(200, title="Períodos de la media móvil de 200")

// Definir el rango de fechas para la simulación
start_date = timestamp(2024, 1, 1, 0, 0)
end_date = timestamp(2024, 12, 31, 23, 59)

// Calcular la media móvil para el cierre de la operación
sma_cierre = ta.sma(close, periodos_media_movil_cierre)
sma_200 = ta.sma(close, periodos_media_movil_200)

// Calcular si el precio está por encima o por debajo de la media móvil para el cierre de la operación
precio_por_encima_sma_cierre = close > sma_cierre
precio_por_debajo_sma_cierre = close < sma_cierre

// Calcular si se han producido num_cierres_decrecientes consecutivos
if (ta.change(close) < 0)
    cierres_decrecientes_consecutivos := cierres_decrecientes_consecutivos + 1
else
    cierres_decrecientes_consecutivos := 0

es_cierres_consecutivos = cierres_decrecientes_consecutivos >= num_cierres_decrecientes

// Definir condiciones de entrada y salida de la estrategia dentro del rango de fechas y con el precio por encima de la SMA de 200
condicion_entrada = es_cierres_consecutivos and close > sma_200
condicion_cierre_sma = (precio_por_encima_sma_cierre[1] and not precio_por_encima_sma_cierre) or (not precio_por_encima_sma_cierre[1] and precio_por_encima_sma_cierre)

// Calcular precios de salida basados en porcentajes
precio_salida_arriba = strategy.position_avg_price * (1 + porcentaje_cierre_arriba / 100)
precio_salida_abajo = strategy.position_avg_price * (1 - porcentaje_cierre_abajo / 100)

// Ejecutar operación en largo dentro del rango de fechas y con el precio por encima de la SMA de 200
if (condicion_entrada and strategy.opentrades == 0)
    strategy.entry("Long", strategy.long)

// Cerrar operación en largo si se cumple la condición de salida por cambio en el cruce de la media móvil dentro del rango de fechas
if (strategy.position_size > 0 and condicion_cierre_sma)
    strategy.close("Long")

// Cerrar operación en largo si el precio alcanza el porcentaje de cierre arriba o abajo dentro del rango de fechas
strategy.exit("Stop Loss", "Long", limit=precio_salida_arriba, stop=precio_salida_abajo)

// Plot para visualizar la media móvil para el cierre de la operación
plot(sma_cierre, color=color.red)

// Plot para visualizar la SMA de 200
plot(sma_200, color=color.blue)


Verwandt

Mehr