Les ressources ont été chargées... Je charge...

Stratégie de percée

Auteur:ChaoZhang est là., Date: 2024-01-24 11:25:01 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie de percée de force est une stratégie de trading quantitative basée sur les moyennes mobiles et l'indice de force relative (RSI). Elle détecte la direction de la tendance du marché en surveillant les percées de prix des moyennes mobiles clés et utilise l'indicateur RSI pour déterminer les signaux d'entrée.

La logique de la stratégie

La stratégie Force Breakthrough utilise deux moyennes mobiles. La première est une EMA de 10 périodes en tant que moyenne mobile rapide. La seconde est une EMA de 200 périodes en tant que moyenne mobile lente. La ligne rapide représente la tendance actuelle des prix et la ligne lente représente la tendance à long terme des prix. Lorsque les prix augmentent et pénètrent au-dessus de la ligne de 10 jours, c'est un signal haussier. Lorsque les prix chutent et pénètrent en dessous de la ligne de 10 jours, c'est un signal baissier.

La stratégie intègre également l'indicateur RSI pour déterminer des moments d'entrée spécifiques. Si les prix sont dans une tendance haussière et qu'un point bas du RSI apparaît en dessous de la moyenne mobile rapide (RSI tombe en dessous de 5), un signal long est déclenché. Si les prix sont dans une tendance à la baisse et qu'un point haut du RSI apparaît au-dessus de la moyenne mobile rapide (RSI dépasse 95), un signal court est déclenché.

Le principe du stop loss après avoir pris des positions longues/courtes consiste à sortir de la position si les prix franchissent à nouveau la moyenne mobile sur 10 jours.

Analyse des avantages

Le plus grand avantage de cette stratégie est sa forte capacité de suivi des tendances. Les moyennes mobiles ont elles-mêmes une excellente fonctionnalité de jugement des tendances. La stratégie utilise pleinement les forces des lignes rapides et lentes où la ligne rapide juge la tendance à court terme et la ligne lente juge la tendance à long terme. Lorsque la ligne rapide a une pénétration ascendante de la ligne lente, elle indique à la fois des tendances à la hausse à court et à long terme, ce qui est un signal d'achat fort.

L'ajout de l'indicateur RSI renforce également l'avantage de la stratégie. La combinaison de points hauts et bas du RSI peut émettre efficacement des signaux de trading lorsque des conditions de surachat ou de survente se produisent, permettant la participation à des points de renversement potentiels pour améliorer la performance réelle.

Analyse des risques

Bien que la stratégie ait une capacité de suivi des tendances relativement forte, aucune stratégie d'indicateur technique ne peut éviter complètement les pertes.

  1. Lorsque les prix fluctuent violemment, les signaux commerciaux générés par les moyennes mobiles peuvent retarder.

  2. Les indicateurs RSI sont sujets à divergence, ce qui peut entraîner un jugement erroné des signaux de négociation.

  3. Des paramètres incorrects au cours d'une opération à long terme pourraient entraîner une sur-échange.

Pour atténuer les risques, des paramètres tels que la moyenne mobile et le RSI peuvent être ajustés et optimisés, les plages de stop-loss peuvent être raisonnablement assouplies, les tailles de position peuvent être contrôlées de manière appropriée.

Directions d'optimisation

Il est possible d'optimiser davantage la stratégie, principalement en ce qui concerne:

  1. Ajouter des moyennes mobiles adaptatives pour ajuster automatiquement les paramètres en fonction de la volatilité du marché afin d'améliorer la flexibilité.

  2. Incorporer des indicateurs de volatilité comme les bandes de Bollinger pour faire face aux violentes fluctuations des prix du marché.

  3. Augmenter les algorithmes d'apprentissage automatique grâce à la formation de l'IA pour de meilleures combinaisons de paramètres et des règles de trading pour améliorer l'automatisation.

  4. Élargir les échantillons d'essais à travers des portefeuilles multi-marchés pour valider l'efficacité sur tous les marchés.

  5. Mettre en place des modules d'analyse fondamentale basés sur les politiques macroéconomiques, les événements majeurs, etc. pour appuyer la prise de décision stratégique.

Résumé

La stratégie de percée de force est une stratégie pratique basée sur la moyenne mobile. Elle juge les tendances grâce à la pénétration des prix des moyennes mobiles rapides et lentes et entre précisément sur le marché à l'aide d'indicateurs RSI. Cette combinaison utilise pleinement les forces des moyennes mobiles et des indicateurs de surachat / survente.


/*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)


Plus de