Stratégie de trading stop-profit et stop-loss dynamique basée sur trois lignes négatives consécutives et une moyenne mobile

SMA EMA
Date de création: 2024-05-09 16:42:35 Dernière modification: 2024-05-09 16:42:35
Copier: 0 Nombre de clics: 627
1
Suivre
1617
Abonnés

Stratégie de trading stop-profit et stop-loss dynamique basée sur trois lignes négatives consécutives et une moyenne mobile

Aperçu

La stratégie de négociation est basée sur la forme de trois courbes consécutives et sur un système de courbe égale pour juger des signaux de négociation. La stratégie gère le risque de négociation par des arrêts et des arrêts de perte dynamiques, les points d’arrêt et de perte sont déterminés en fonction de la position de la courbe égale à court terme et du pourcentage de variation des prix. La stratégie ne négocie que dans une période de temps spécifiée.

Principe de stratégie

  1. Calculer le nombre d’ondes successives. Si un nombre spécifié d’ondes successives (defaut 3) se produisent, on considère qu’elles forment un signal multiple.
  2. Utilisez deux lignes de moyenne pour aider à déterminer la tendance et le moment de la transaction. Par défaut, utilisez les lignes de moyenne de 10 jours et de moyenne de 200 jours.
  3. Configurer un point d’arrêt et d’arrêt dynamique. Le point d’arrêt est un certain pourcentage au-dessus du prix d’ouverture (défaut 1.5%) et le point d’arrêt est un certain pourcentage au-dessous du prix d’ouverture (défaut 1%).
  4. Une autre condition d’une position de marché est une variation de position du prix par rapport à la moyenne des 10 jours. Si le prix revient en dessous de la moyenne, alors la position de marché est en position de marché.
  5. Les stratégies ne fonctionnent que pendant une période donnée, déterminée par la date de début et la date de fin.

Avantages stratégiques

  1. La combinaison de la forme des prix et d’un système homogène permet de mieux saisir les opportunités de tendance.
  2. Le stop-loss et le stop-loss dynamiques permettent de contrôler les risques et les bénéfices avec souplesse. Le stop-loss augmente progressivement avec l’augmentation des prix, ce qui permet aux bénéfices de s’enfuir; le stop-loss limite les pertes maximales.
  3. Le changement de position de la moyenne à court terme peut être utilisé comme signal de placement pour réagir rapidement à un revirement soudain des prix.
  4. La définition d’une fourchette de heures de négociation permet d’éviter de négocier pendant des périodes spéciales telles que la fermeture du marché ou les jours fériés, ce qui réduit le risque.

Risque stratégique

  1. Les courbes successives ne permettent pas d’établir une reprise de tendance, et il est possible que les cours continuent d’augmenter après les courbes successives, ce qui peut entraîner l’échec de la stratégie.
  2. Les points d’arrêt et de perte fixes en pourcentage peuvent ne pas être en mesure de faire face aux fortes fluctuations du marché. Lorsqu’une tendance est forte, les points d’arrêt peuvent être trop bas, ce qui entraîne une sortie anticipée; lorsque les fluctuations sont intenses, les points d’arrêt peuvent être trop proches, ce qui entraîne des pertes fréquentes.
  3. Le jugement de la position de la courbe moyenne à court terme peut être retardé, en particulier lorsque les prix évoluent rapidement et que l’optimisation de la position peut être manquée.
  4. La stratégie manque de mesures de gestion des positions et de contrôle des risques, les points d’entrée et la taille des positions sont fixes, ce qui peut entraîner un risque de transaction unique excessif.

Orientation de l’optimisation de la stratégie

  1. Il est possible d’introduire plus d’indicateurs techniques comme le MACD, le RSI, etc. pour améliorer la fiabilité du signal.
  2. Optimiser le calcul des points d’arrêt et de perte, par exemple en utilisant l’ATR ou le taux de fluctuation pour un ajustement dynamique, ou en combinant les points de résistance de support pour les régler.
  3. Pour les signaux d’équilibre, on peut envisager d’utiliser plus de conditions de confirmation, telles que la variation du volume de transactions, le taux de détention de positions à plusieurs têtes vides, etc., afin d’éviter les signaux erronés.
  4. Introduction de mesures de gestion des positions et de contrôle des risques, telles que l’ajustement de la taille des positions pour chaque transaction en fonction du solde du compte et du niveau de risque, la définition d’une limite de risque globale, etc.
  5. Pour les paramètres tels que le nombre de lignes consécutives, la période moyenne, etc., des tests d’optimisation peuvent être effectués pour trouver la meilleure combinaison de paramètres.

Résumer

La stratégie de négociation utilise une série de formes négatives et un système de ligne uniforme pour juger des opportunités de négociation tendancielles, tout en utilisant des stop-loss dynamiques et des changements de position de la ligne moyenne à court terme pour contrôler les risques. L’idée de la stratégie est claire et convient aux traders qui savent comment gérer les tendances à moyen et à long terme.

Code source de la stratégie
/*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)