Système de trading d'action de prix de support dynamique

SR PA
Date de création: 2024-12-04 15:19:00 Dernière modification: 2024-12-04 15:19:00
Copier: 0 Nombre de clics: 422
1
Suivre
1617
Abonnés

Système de trading d’action de prix de support dynamique

Aperçu

La stratégie est un système de négociation basé sur l’action des prix et les points de résistance des supports dynamiques, qui négocie en identifiant les formes de prix critiques à proximité des points de support et de résistance. Le système utilise une méthode de calcul de résistance des supports dynamiques en 16 cycles, combinant les quatre formes classiques de retournement de la courbe - la courbe de la souris, la courbe de la météorite, la croix et l’aiguille - pour capturer les opportunités de retournement potentielles du marché. La stratégie utilise un pourcentage fixe de stop-loss pour gérer le risque et utilise des paramètres de sensibilité pour contrôler la rigueur des signaux d’entrée.

Principe de stratégie

Le cœur de la stratégie est de former une frontière supérieure et inférieure de l’activité des prix en calculant dynamiquement les niveaux de support et de résistance. Lorsque les prix approchent de ces niveaux critiques, le système recherche des formes de graphique spécifiques comme signaux de retournement. Les conditions d’entrée nécessitent que les prix se retournent dans la plage de 1,8% de la résistance de soutien (la sensibilité par défaut). Le système utilise une règle de gestion de fonds à 35%, avec un arrêt de perte de 16% et un arrêt de 9,5%, contrôlant efficacement le risque de chaque transaction à environ 5,6% du total des comptes.

Avantages stratégiques

  1. La stratégie combine les deux éléments les plus fiables de l’analyse technique: la forme des prix et la résistance aux supports, ce qui améliore la fiabilité des signaux de négociation.
  2. Les points de résistance de support, calculés dynamiquement, s’adaptent aux changements des conditions du marché
  3. Des mesures rigoureuses de gestion des fonds et de contrôle des risques ont été mises en place pour prévenir les retraits massifs
  4. Une logique stratégique claire et des paramètres adaptables pour une optimisation en fonction des différentes conditions du marché
  5. Les signaux d’entrée sont clairs, sans jugement subjectif, adaptés aux transactions automatisées

Risque stratégique

  1. L’efficacité des supports de résistance peut être réduite dans les marchés très volatils
  2. La position de stop loss est relativement éloignée (~16%), et peut supporter des pertes plus importantes en cas de forte tendance.
  3. Le réglage des paramètres de sensibilité a un impact important sur la fréquence et l’exactitude des transactions
  4. Se fier uniquement à la forme des prix peut passer à côté d’autres signaux importants du marché
  5. Il faut prendre en compte l’impact des coûts de transaction sur le rendement de la stratégie

Orientation de l’optimisation de la stratégie

  1. Introduction du trafic comme indicateur de confirmation auxiliaire pour améliorer la fiabilité du signal
  2. Développer des paramètres de sensibilité adaptatifs qui s’adaptent à la dynamique de la volatilité du marché
  3. Optimiser les paramètres de stop-loss et envisager d’utiliser un stop-loss mobile ou un stop-loss par tranches
  4. Augmentation des filtres de tendance pour éviter les retournements dans les tendances fortes
  5. Développement d’un système de gestion de position dynamique permettant d’ajuster la taille des transactions en fonction des conditions du marché

Résumer

Cette stratégie de négociation basée sur l’action des prix offre aux traders une méthode de négociation systématique en combinant le niveau de résistance au support dynamique et la forme de retournement classique. L’avantage de la stratégie réside dans la clarté de la logique et la maîtrise des risques, mais elle nécessite toujours une optimisation continue en fonction de l’effet de la négociation réelle. Il est recommandé aux traders de faire un retour d’expérience suffisant et d’optimiser les paramètres avant de l’utiliser sur le terrain, et d’ajuster la stratégie de manière personnalisée en fonction de l’expérience du marché.

Code source de la stratégie
/*backtest
start: 2024-11-26 00:00:00
end: 2024-12-03 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_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/
// © felipemiransan

//@version=5
strategy("Price Action Strategy", overlay=true)

// Settings
length = input.int(16, title="Support and Resistance Length")
sensitivity = input.float(0.018, title="Sensitivity")

// Stop Loss and Take Profit
stop_loss_pct = input.float(16, title="Stop Loss percentage", minval=0.1) / 100
take_profit_pct = input.float(9.5, title="Take Profit percentage", minval=0.1) / 100

// Function to identify a Hammer
isHammer() =>
    body = close - open
    price_range = high - low
    lower_shadow = open - low
    upper_shadow = high - close
    body > 0 and lower_shadow > body * 2 and upper_shadow < body * 0.5 and price_range > 0

// Function to identify a Shooting Star
isShootingStar() =>
    body = open - close
    price_range = high - low
    lower_shadow = close - low
    upper_shadow = high - open
    body > 0 and upper_shadow > body * 2 and lower_shadow < body * 0.5 and price_range > 0

// Function to identify a Doji
isDoji() =>
    body = close - open
    price_range = high - low
    math.abs(body) < (price_range * 0.1)  // Doji has a small body

// Function to identify a Pin Bar
isPinBar() =>
    body = close - open
    price_range = high - low
    lower_shadow = open - low
    upper_shadow = high - close
    (upper_shadow > body * 2 and lower_shadow < body * 0.5) or (lower_shadow > body * 2 and upper_shadow < body * 0.5)

// Support and resistance levels 
support = ta.lowest(low, length)
resistance = ta.highest(high, length)

// Entry criteria
long_condition = (isHammer() or isDoji() or isPinBar()) and close <= support * (1 + sensitivity)
short_condition = (isShootingStar() or isDoji() or isPinBar()) and close >= resistance * (1 - sensitivity)

// Function to calculate stop loss and take profit (long)
calculate_levels(position_size, avg_price, stop_loss_pct, take_profit_pct) =>
    stop_loss_level = avg_price * (1 - stop_loss_pct)
    take_profit_level = avg_price * (1 + take_profit_pct)
    [stop_loss_level, take_profit_level]

// Function to calculate stop loss and take profit (short)
calculate_levels_short(position_size, avg_price, stop_loss_pct, take_profit_pct) =>
    stop_loss_level = avg_price * (1 + stop_loss_pct)
    take_profit_level = avg_price * (1 - take_profit_pct)
    [stop_loss_level, take_profit_level]

// Buy entry order with label
if (long_condition and strategy.opentrades == 0)
    strategy.entry("Buy", strategy.long)
    pattern = isHammer() ? "Hammer" : isDoji() ? "Doji" : isPinBar() ? "Pin Bar" : ""
    label.new(x=bar_index, y=low, text=pattern, color=color.green, textcolor=color.black, size=size.small)

// Sell entry order with label
if (short_condition and strategy.opentrades == 0)
    strategy.entry("Sell", strategy.short)
    pattern = isShootingStar() ? "Shooting Star" : isDoji() ? "Doji" : isPinBar() ? "Pin Bar" : ""
    label.new(x=bar_index, y=high, text=pattern, color=color.red, textcolor=color.black, size=size.small)

// Stop Loss and Take Profit management for open positions
if (strategy.opentrades > 0)
    if (strategy.position_size > 0)  // Long position
        avg_price_long = strategy.position_avg_price  // Average price of long position
        [long_stop_level, long_take_profit_level] = calculate_levels(strategy.position_size, avg_price_long, stop_loss_pct, take_profit_pct)
        strategy.exit("Exit Long", from_entry="Buy", stop=long_stop_level, limit=long_take_profit_level)
    if (strategy.position_size < 0)  // Short position
        avg_price_short = strategy.position_avg_price  // Average price of short position
        [short_stop_level, short_take_profit_level] = calculate_levels_short(strategy.position_size, avg_price_short, stop_loss_pct, take_profit_pct)
        strategy.exit("Exit Short", from_entry="Sell", stop=short_stop_level, limit=short_take_profit_level)

// Visualization of Support and Resistance Levels
plot(support, title="Support", color=color.green, linewidth=2)
plot(resistance, title="Resistance", color=color.red, linewidth=2)