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

Système de négociation dynamique de support ou de résistance

Auteur:ChaoZhang est là., Date: 2024-12-04 15:19 heures
Les étiquettes:R.R.Le PA

img

Résumé

Cette stratégie est un système de trading basé sur l'action des prix et les niveaux de support/résistance dynamiques, exécutant des transactions près des niveaux de prix clés lorsque des modèles de bougies spécifiques émergent. Le système utilise une méthode de calcul de support/résistance dynamique à 16 périodes, combinée à quatre modèles de bougies d'inversion classiques - Hammer, Shooting Star, Doji et Pin Bar pour capturer les renversements potentiels du marché.

Principes de stratégie

Le noyau de la stratégie réside dans le calcul dynamique des niveaux de support et de résistance pour établir les limites du mouvement des prix. Lorsque le prix approche de ces niveaux clés, le système recherche des modèles de bougies spécifiques comme signaux d'inversion. Les conditions d'entrée nécessitent la formation de modèles à 1,8% (sensibilité par défaut) des niveaux de support/résistance. Le système implémente une règle de gestion de l'équité de 35% avec 16% de stop-loss et 9,5% de take-profit, contrôlant efficacement le risque à environ 5,6% du capital total par transaction.

Les avantages de la stratégie

  1. Combine deux éléments d'analyse technique les plus fiables: les tendances des prix et le support/résistance, améliorant la fiabilité du signal
  2. Utilise des niveaux de support/résistance calculés dynamiquement, en s'adaptant aux conditions changeantes du marché
  3. Mettre en œuvre des mesures strictes de gestion de l'argent et de contrôle des risques afin d'éviter des prélèvements importants
  4. Logique stratégique claire avec paramètres réglables, facilitant l'optimisation pour les différentes conditions du marché
  5. Signaux d'entrée clairs sans jugement subjectif, adaptés à la négociation automatisée

Risques stratégiques

  1. L'efficacité du support/résistance peut diminuer sur les marchés très volatils
  2. Un stop-loss relativement large (16%) peut entraîner des pertes importantes dans des conditions volatiles
  3. Les paramètres de sensibilité définis ont une incidence significative sur la fréquence et l'exactitude des opérations
  4. Le fait de s'appuyer uniquement sur les tendances des prix risque de manquer d'autres signaux importants du marché
  5. Nécessité de prendre en considération les coûts de négociation impact sur les rendements de la stratégie

Directions d'optimisation

  1. Introduction du volume comme indicateur de confirmation pour améliorer la fiabilité du signal
  2. Développer des paramètres de sensibilité adaptative qui s'ajustent dynamiquement en fonction de la volatilité du marché
  3. Optimiser les paramètres de stop-loss, envisager la mise en œuvre de trailing stops ou de plans de stop-loss par étapes
  4. Ajouter des filtres de tendance pour éviter les opérations de renversement lors de fortes tendances
  5. Développer un système dynamique de dimensionnement des positions permettant d'ajuster la taille des transactions en fonction des conditions du marché

Résumé

Cette stratégie de trading basée sur l'action des prix offre aux traders une approche de trading systématique en combinant des niveaux de support/résistance dynamiques avec des modèles d'inversion classiques.


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






Relationnée

Plus de