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

Stratégie de négociation à pivot adaptatif de soutien et de résistance dynamiques

Auteur:ChaoZhang est là., Date: 2025-01-10 15h08 et 24h
Les étiquettes:ATRLe pivot

 Dynamic Support and Resistance Adaptive Pivot Trading Strategy

Résumé

Cette stratégie est un système de trading adaptatif basé sur l'identification dynamique des niveaux de support et de résistance à l'aide de points de pivot des prix. Elle détermine les niveaux de prix clés en calculant les hauts et les bas locaux en temps réel et exécute les transactions en conséquence.

Principes de stratégie

La logique de base repose sur plusieurs éléments clés: 1. calcul du pivot dynamique: utilise le paramètre de longueur du pivot réglable (par défaut 2) pour identifier les hauts et les bas locaux 2. Zones de support/résistance: établit des fourchettes basées sur le pourcentage (défaut 0,4%) autour des points pivots pour définir les zones de négociation valides Génération de signal: signaux longs lorsque le prix dépasse le support, signaux courts lorsque le prix dépasse la résistance 4. Gestion des risques: mise en œuvre de niveaux dynamiques de stop-loss (10%) et de take-profit (27%), avec dimensionnement des positions basé sur le capital du compte

Les avantages de la stratégie

  1. Haute adaptabilité: ajuste dynamiquement les niveaux de support/résistance en fonction des conditions du marché, en évitant le décalage par rapport aux niveaux statiques
  2. Risque contrôlé: maintient un risque raisonnable par transaction grâce à des arrêts strictement basés sur des pourcentages et à une dimensionnement dynamique des positions
  3. Évolutivité: Prend en charge plusieurs délais et combinaisons de paramètres pour l'optimisation dans différents environnements de marché
  4. Transparence: logique de négociation claire avec tous les signaux et niveaux de prix visuellement affichés sur les graphiques

Risques stratégiques

  1. Risque de fausse rupture: peut générer de fréquents faux signaux sur des marchés à fourchette, nécessitant un ajustement des paramètres de la zone de soutien/résistance
  2. Impact du glissement: les prix d'exécution réels peuvent différer sensiblement des prix de signal dans des conditions de marché moins liquides
  3. Dépendance de la tendance: la stratégie fonctionne mieux sur les marchés en tendance mais peut générer des signaux excessifs pendant les phases de consolidation
  4. Sensibilité des paramètres: les performances sont fortement dépendantes des paramètres, nécessitant un backtesting approfondi pour l'optimisation

Directions d'optimisation

  1. Ajout d'un module de reconnaissance de l'environnement de marché pour l'ajustement automatique des paramètres en fonction de la volatilité
  2. Incorporer le volume et des indicateurs techniques supplémentaires comme signaux de confirmation
  3. Optimiser l'algorithme de dimensionnement des positions avec des ajustements dynamiques basés sur la volatilité du marché
  4. Mettre en place des filtres de temps pour éviter les transactions pendant les périodes défavorables
  5. Développer un algorithme de stop-loss adaptatif avec un ajustement dynamique basé sur la volatilité du marché

Résumé

La stratégie fournit un cadre fiable pour le suivi des tendances et l'inversion du trading grâce à l'identification dynamique des niveaux de prix clés combinés à un contrôle strict des risques. Bien qu'elle présente une certaine sensibilité aux paramètres et une dépendance à l'environnement du marché, l'optimisation et le raffinement continus permettent une performance cohérente dans différentes conditions de marché.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-08 08:00:00
period: 1d
basePeriod: 1d
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=6
strategy("Dynamic Support and Resistance Pivot Strategy ", overlay=true)

// Strategy parameters
pivot_length = input.int(2, title="Pivot Length", tooltip="Pivot size to identify peaks and troughs")
support_resistance_distance = input.float(0.4, title="Support/Resistance Distance %", tooltip="Distance to consider a support or resistance level in %")

// Stop Loss and Take Profit parameters
stop_loss_pct = input.float(10.0, title="Stop Loss %", tooltip="Stop loss percentage", minval=0.1) / 100
take_profit_pct = input.float(26.0, title="Take Profit %", tooltip="Take profit percentage", minval=0.1) / 100

// Functions to identify high and low pivots
pivot_high = ta.pivothigh(high, pivot_length, pivot_length)
pivot_low = ta.pivotlow(low, pivot_length, pivot_length)

// Storing support and resistance levels
var float resistance_level = na
var float support_level = na
var float last_pivot_high = na
var float last_pivot_low = na

// Updating support and resistance based on pivots
if (not na(pivot_high))
    resistance_level := high[pivot_length]
    last_pivot_high := high[pivot_length]

if (not na(pivot_low))
    support_level := low[pivot_length]
    last_pivot_low := low[pivot_length]

// Function to check if the current price is near a support or resistance level
is_near_resistance = (not na(resistance_level)) and (close >= resistance_level * (1 - support_resistance_distance / 100)) and (close <= resistance_level * (1 + support_resistance_distance / 100))
is_near_support = (not na(support_level)) and (close >= support_level * (1 - support_resistance_distance / 100)) and (close <= support_level * (1 + support_resistance_distance / 100))

// Cross conditions variables
long_cross = ta.crossover(close, support_level) and not na(support_level)
short_cross = ta.crossunder(close, resistance_level) and not na(resistance_level)

// Entry conditions
long_condition = is_near_support and long_cross  // Buy when crossing support from below
short_condition = is_near_resistance and short_cross  // Sell when crossing resistance from above

// Order execution
if (long_condition)
    strategy.entry("Long", strategy.long)

if (short_condition)
    strategy.entry("Short", strategy.short)

// Stop Loss and Take Profit
if (strategy.opentrades > 0)
    if (strategy.position_size > 0)  // For long position
        avg_price_long = strategy.position_avg_price
        long_stop_level = avg_price_long * (1 - stop_loss_pct)
        long_take_profit_level = avg_price_long * (1 + take_profit_pct)
        strategy.exit("Exit Long", from_entry="Long", stop=long_stop_level, limit=long_take_profit_level)

    if (strategy.position_size < 0)  // For short position
        avg_price_short = strategy.position_avg_price
        short_stop_level = avg_price_short * (1 + stop_loss_pct)
        short_take_profit_level = avg_price_short * (1 - take_profit_pct)
        strategy.exit("Exit Short", from_entry="Short", stop=short_stop_level, limit=short_take_profit_level)

// Plotting support and resistance levels on the chart
plot(support_level, title="Support", color=color.green, linewidth=2, style=plot.style_line)
plot(resistance_level, title="Resistance", color=color.red, linewidth=2, style=plot.style_line)

// Adding labels to show pivot values
if (long_condition and not na(support_level))
    label.new(bar_index, low[pivot_length], str.tostring(low[pivot_length]), style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)

if (short_condition and not na(resistance_level))
    label.new(bar_index, high[pivot_length], str.tostring(high[pivot_length]), style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)


Relationnée

Plus de