Durchbruchsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-01-24 11:25:01
Tags:

img

Übersicht

Die Force Breakthrough Strategy ist eine quantitative Handelsstrategie, die auf gleitenden Durchschnitten und dem Relative Strength Index (RSI) basiert. Sie erkennt die Markttrendrichtung, indem sie Preisdurchbrüche wichtiger gleitender Durchschnitte überwacht und den RSI-Indikator verwendet, um Eingangssignale zu bestimmen.

Strategie Logik

Die Force Breakthrough Strategie verwendet zwei gleitende Durchschnitte. Die erste ist eine 10-Perioden-EMA als schneller gleitender Durchschnitt. Die zweite ist eine 200-Perioden-EMA als langsamer gleitender Durchschnitt. Die schnelle Linie repräsentiert den aktuellen Preistrend und die langsame Linie repräsentiert den langfristigen Preistrend. Wenn die Preise steigen und über die 10-Tage-Linie dringen, ist dies ein bullisches Signal. Wenn die Preise fallen und unter die 10-Tage-Linie dringen, ist dies ein bärisches Signal.

Die Strategie beinhaltet auch den RSI-Indikator, um bestimmte Eintrittsmomente zu bestimmen. Wenn die Preise in einem Aufwärtstrend sind und ein RSI-Tiefpunkt unter dem schnellen gleitenden Durchschnitt erscheint (RSI fällt unter 5), wird ein langes Signal ausgelöst. Wenn die Preise in einem Abwärtstrend sind und ein RSI-Hochpunkt über dem schnellen gleitenden Durchschnitt erscheint (RSI übersteigt 95), wird ein kurzes Signal ausgelöst.

Das Stop-Loss-Prinzip besteht darin, nach dem Aufnehmen von Long/Short-Positionen aus der Position auszusteigen, wenn die Preise den gleitenden 10-Tage-Durchschnitt wieder durchbrechen.

Analyse der Vorteile

Der größte Vorteil dieser Strategie ist die starke Trendnachfolgefähigkeit. Die gleitenden Durchschnitte selbst haben eine ausgezeichnete Trendbeurteilungsfunktion. Die Strategie nutzt die Stärken der schnellen und langsamen Linien voll aus, wobei die schnelle Linie den kurzfristigen Trend beurteilt und die langsame Linie den langfristigen Trend beurteilt. Wenn die schnelle Linie eine Aufwärtsdurchdringung der langsamen Linie hat, zeigt sie sowohl kurzfristige als auch langfristige Aufwärtstrends an, was ein starkes Kaufsignal ist.

Die Ergänzung des RSI-Indikators erhöht auch den Vorteil der Strategie. Die Kombination von RSI-High-Low-Punkten kann bei Überkauf- oder Überverkaufszuständen effektiv Handelssignale ausstellen, sodass die Teilnahme an potenziellen Umkehrpunkten die tatsächliche Performance verbessern kann.

Risikoanalyse

Obwohl die Strategie eine relativ starke Trendverfolgungsfähigkeit aufweist, kann keine technische Indikatorstrategie Verluste vollständig vermeiden.

  1. Wenn die Preise heftig schwanken, können sich die Handelssignale, die durch gleitende Durchschnitte erzeugt werden, verzögern.

  2. Die RSI-Indikatoren sind anfällig für Abweichungen, die zu fehlerhaften Handelssignalurteilen führen können.

  3. Unzulängliche Parameter im langfristigen Betrieb könnten zu einem Überhandel führen.

Um Risiken zu mindern, können Parameter wie der gleitende Durchschnitt und der RSI angepasst und optimiert werden, Stop-Loss-Bereiche können vernünftigerweise gelockert werden, Positionsgrößen können angemessen kontrolliert werden.

Optimierungsrichtlinien

Es besteht Raum für eine weitere Optimierung der Strategie, die sich hauptsächlich auf folgende Bereiche konzentriert:

  1. Hinzufügen von anpassungsfähigen gleitenden Durchschnitten zur automatischen Anpassung von Parametern auf Basis der Marktvolatilität zur Verbesserung der Flexibilität.

  2. Einbeziehung von Volatilitätsindikatoren wie Bollinger Bands, um heftige Kursschwankungen zu bekämpfen.

  3. Erhöhung der Algorithmen für maschinelles Lernen durch KI-Ausbildung für bessere Parameterkombinationen und Handelsregeln zur Verbesserung der Automatisierung.

  4. Erweiterung der Prüfproben durch Multi-Markt-Portfolios zur Validierung der marktübergreifenden Wirksamkeit.

  5. Einführung von Fundamentalanalysemodule auf der Grundlage von Makropolitik, wichtigen Ereignissen usw., um strategische Entscheidungsunterstützung zu bieten.

Zusammenfassung

Die Force Breakthrough Strategy ist eine praktische, gleitenden Durchschnittsbasierte Strategie. Sie beurteilt Trends durch Preisdurchdringungen von schnellen und langsamen gleitenden Durchschnitten und tritt mit Hilfe von RSI-Indikatoren präzise in den Markt ein. Diese Kombination nutzt die Stärken von gleitenden Durchschnitten und Überkauf/Überverkaufsindizes voll aus. Die Strategie wird auf verschiedenen Märkten mit stetigen Renditen und kontrollierbaren Risiken validiert. Es ist eine empfohlene quantitative Handelsstrategie. Weitere Optimierungen können die Strategieleistung potenziell verbessern.


/*backtest
start: 2024-01-16 00:00:00
end: 2024-01-23 00:00:00
period: 30m
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/
// © JoseMetal
//@version=5

//== Constantes
c_blanco              = color.rgb(255, 255, 255, 0)
c_negro               = color.rgb(0, 0, 0, 0)
c_amarillo_radiactivo = color.rgb(255, 255, 0, 0)
c_cian_radiactivo     = color.rgb(0, 255, 255, 0)
c_verde_radiactivo    = color.rgb(0, 255, 0, 0)
c_verde               = color.rgb(0, 128, 0, 0)
c_verde_oscuro        = color.rgb(0, 80, 0, 0)
c_rojo_radiactivo     = color.rgb(255, 0, 0, 0)
c_rojo                = color.rgb(128, 0, 0, 0)
c_rojo_oscuro         = color.rgb(80, 0, 0, 0) 
c_naranja_oscuro      = color.rgb(200, 120, 0, 0)
noneColor             = color.new(color.white, 100)
max_float             = 10000000000.0



//== Funciones

//== Declarar estrategia y período de testeo
strategy("Estrategia Larry Connors", shorttitle="Estrategia Larry Connors", overlay=true)
fecha_inicio     = input(timestamp("1 Jan 2000"), title="• Fecha de inicio", group="Período de pruebas", inline="periodo_de_pruebas")
vela_en_fecha    = true
posicion_abierta = strategy.position_size != 0
LONG_abierto     = strategy.position_size > 0
SHORT_abierto    = strategy.position_size < 0

GRUPO_P           = "Posiciones"
P_permitir_LONGS  = input.bool(title="LONGS", group=GRUPO_P, defval=true, inline="posiciones")
P_permitir_SHORTS = input.bool(title="SHORTS", group=GRUPO_P, defval=true, inline="posiciones")

GRUPO_general = "General"
mostrar_color_velas = input.bool(title="Colorear velas", defval=true, group=GRUPO_general)



//== Inputs de indicadores
// Medias móviles simples
GRUPO_SMAs = "SMAs"
SMA_1_fuente = input.source(title="• (Media de salida) Fuente / Long.", group=GRUPO_SMAs, defval=close, inline="sma_1")
SMA_1_length = input.int(title="", group=GRUPO_SMAs, defval=10, minval=1, inline="sma_1")
SMA_2_fuente = input.source(title="• (Media tendencial) Fuente / Long.", group=GRUPO_SMAs, defval=close, inline="sma_2")
SMA_2_length = input.int(title="", group=GRUPO_SMAs, defval=200, minval=1, inline="sma_2")
SMA_1        = ta.ema(SMA_1_fuente, SMA_1_length)
SMA_2        = ta.ema(SMA_2_fuente, SMA_2_length)

// RSI
GRUPO_RSI    = "RSI"
RSI_src      = input.source(title="• Fuente / Longitud", group=GRUPO_RSI, defval=close, inline="rsi_calc")
RSI_length   = input.int(title="", group=GRUPO_RSI, defval=2, minval=1, inline="rsi_calc")
RSI          = ta.rsi(RSI_src, RSI_length)
RSI_nivel_os = input.int(title="• Sobreventa / Sobrecompra", group=GRUPO_RSI, defval=5, minval=0, maxval=99, inline="rsi_niveles")
RSI_nivel_ob = input.int(title="", group=GRUPO_RSI, defval=95, minval=1, maxval=100, inline="rsi_niveles")


//== Cálculo de condiciones
cierre_sobre_SMA_1 = close > SMA_1
tendencia_alcista  = close > SMA_2
RSI_en_sobreventa  = RSI < RSI_nivel_os
RSI_en_sobrecompra = RSI > RSI_nivel_ob



//== Entrada (deben cumplirse todas para entrar)
LONG_condition_1    = tendencia_alcista
LONG_condition_2    = not cierre_sobre_SMA_1 // Vela con cierre bajo la media rápida
LONG_condition_3    = RSI_en_sobreventa[1] and not RSI_en_sobreventa // Sobreventa en la vela anterior y ya no en la actual
all_LONG_conditions = LONG_condition_1 and LONG_condition_2 and LONG_condition_3
entrar_en_LONG      = P_permitir_LONGS and all_LONG_conditions and vela_en_fecha and not LONG_abierto

SHORT_condition_1    = not tendencia_alcista
SHORT_condition_2    = cierre_sobre_SMA_1 // Vela con cierre sobre la media rápida
SHORT_condition_3    = RSI_en_sobrecompra[1] and not RSI_en_sobrecompra // Sobrecompra en la vela anterior y ya no en la actual
all_SHORT_conditions = SHORT_condition_1 and SHORT_condition_2 and SHORT_condition_3
entrar_en_SHORT      = P_permitir_SHORTS and all_SHORT_conditions and vela_en_fecha and not SHORT_abierto

if (entrar_en_LONG)
    strategy.entry("Abrir Long", strategy.long)

if (entrar_en_SHORT)
    strategy.entry("Abrir Short", strategy.short)



//== Salida
exit_LONG_conditions  = cierre_sobre_SMA_1
exit_SHORT_conditions = not cierre_sobre_SMA_1


if (LONG_abierto and exit_LONG_conditions)
    strategy.close("Abrir Long")

if (SHORT_abierto and exit_SHORT_conditions)
    strategy.close("Abrir Short")


//== Ploteo en pantalla
// SMAs
plot(SMA_1, "Media de salida", color=color.aqua, linewidth=2)
plot(SMA_2, "Media tendencial", color=tendencia_alcista ? color.green : color.red, linewidth=4)

// Color de fondo
bgcolor = entrar_en_LONG ? color.new(color.green, 85) : entrar_en_SHORT ? color.new(color.red, 85) : color.new(color.black, 100)
bgcolor(bgcolor)

// Color de las velas según sobrecompra/sobreventa del RSI
color_velas = mostrar_color_velas ? (RSI_en_sobreventa ? #00a800 : RSI_en_sobrecompra ? #ca0000 : na) : na
barcolor(color_velas)


Mehr