Stratégies multiples de suivi des tendances et de rupture structurelle

EMA RSI SL TP BOS
Date de création: 2024-11-29 15:27:01 Dernière modification: 2024-11-29 15:27:01
Copier: 0 Nombre de clics: 415
1
Suivre
1617
Abonnés

Stratégies multiples de suivi des tendances et de rupture structurelle

Aperçu

Il s’agit d’une stratégie de négociation intégrée combinant plusieurs courbes moyennes, suivi de tendances, ruptures structurelles et indicateurs de dynamique. La stratégie permet d’identifier les signaux de négociation en analysant la direction de la tendance sur plusieurs périodes de temps, tout en combinant la rupture de la structure des prix et le rachat de la reprise. La stratégie utilise des objectifs fixes de stop-loss et de profit pour gérer les risques et améliorer l’exactitude des transactions grâce à des mécanismes de vérification multiples.

Principe de stratégie

La stratégie utilise trois moyennes mobiles indicielles (EMA25, EMA50 et EMA200) pour déterminer la tendance du marché. Lorsque le prix est au-dessus de l’EMA200 et que l’EMA200 est incliné vers le haut, il est considéré comme étant en tendance à la hausse; le contraire est considéré comme une tendance à la baisse. Après avoir déterminé la direction de la tendance, la stratégie cherche des opportunités de rebond du prix sur l’EMA25 ou l’EMA50.

Avantages stratégiques

  1. Le mécanisme de vérification multiple a considérablement amélioré la fiabilité des transactions
  2. Une combinaison de tendances et d’analyses dynamiques pour réduire le risque de fausses ruptures
  3. Des objectifs clairs de stop-loss et de gain aident à la gestion des émotions
  4. La logique de la stratégie est simple et claire, facile à comprendre et à exécuter.
  5. Adapté à différents environnements de marché et types de transactions

Risque stratégique

  1. Les conditions multiples peuvent entraîner la perte de certaines opportunités commerciales
  2. Les objectifs fixes de stop-loss et de profit peuvent ne pas être adaptés à tous les environnements de marché.
  3. Les arrêts fréquents peuvent être déclenchés dans des marchés très volatils
  4. Une surveillance continue des marchés est nécessaire pour s’assurer de l’applicabilité des paramètres stratégiques.
  5. Il y a plus de faux signaux dans le marché horizontal.

Orientation de l’optimisation de la stratégie

  1. Introduction d’une méthode de calcul des objectifs d’arrêt et de profit adaptés
  2. Augmentation de l’analyse du volume des transactions comme indicateur de confirmation auxiliaire
  3. Considérer l’ajout d’un mécanisme de filtrage des fluctuations du marché
  4. Sélection de périodes de temps pour optimiser les jugements de tendances
  5. Augmentation de l’adaptabilité des stratégies dans différents environnements de marché

Résumer

Il s’agit d’une stratégie de négociation globale, rationnellement conçue, qui équilibre efficacement les opportunités de négociation et le contrôle des risques grâce à l’utilisation combinée de multiples indicateurs techniques. Le principal avantage de la stratégie réside dans son mécanisme de vérification multiple rigoureux, qui contribue à améliorer le taux de réussite des transactions.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Custom Buy/Sell Strategy", overlay=true)

// Input parameters
ema25 = ta.ema(close, 25)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
rsi = ta.rsi(close, 14)
sl_pips = 10
tp_pips = 15

// Convert pips to price units
sl_price_units = sl_pips * syminfo.pointvalue
tp_price_units = tp_pips * syminfo.pointvalue

// Define conditions for buy and sell signals
uptrend_condition = ema200 < close and ta.rising(ema200, 1)
downtrend_condition = ema200 > close and ta.falling(ema200, 1)

pullback_to_ema25 = low <= ema25
pullback_to_ema50 = low <= ema50
pullback_condition = pullback_to_ema25 or pullback_to_ema50

break_of_structure = high > ta.highest(high, 5)[1]
candle_imbalance = close > open

buy_condition = uptrend_condition and pullback_condition and rsi > 50 and break_of_structure and candle_imbalance

pullback_to_ema25_sell = high >= ema25
pullback_to_ema50_sell = high >= ema50
pullback_condition_sell = pullback_to_ema25_sell or pullback_to_ema50_sell

break_of_structure_sell = low < ta.lowest(low, 5)[1]
candle_imbalance_sell = close < open

sell_condition = downtrend_condition and pullback_condition_sell and rsi < 50 and break_of_structure_sell and candle_imbalance_sell

// Plot signals on the chart
plotshape(series=buy_condition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.large)
plotshape(series=sell_condition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.large)

// Calculate stop loss and take profit levels for buy signals
var float buy_sl = na
var float buy_tp = na

if buy_condition and strategy.position_size == 0
    buy_sl := close - sl_price_units
    buy_tp := close + tp_price_units
    strategy.entry("Buy", strategy.long)
    strategy.exit("TP/SL Buy", from_entry="Buy", limit=buy_tp, stop=buy_sl)
    label.new(bar_index, high, text="Entry: " + str.tostring(close) + "\nSL: " + str.tostring(buy_sl) + "\nTP: " + str.tostring(buy_tp), style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)

// Calculate stop loss and take profit levels for sell signals
var float sell_sl = na
var float sell_tp = na

if sell_condition and strategy.position_size == 0
    sell_sl := close + sl_price_units
    sell_tp := close - tp_price_units
    strategy.entry("Sell", strategy.short)
    strategy.exit("TP/SL Sell", from_entry="Sell", limit=sell_tp, stop=sell_sl)
    label.new(bar_index, low, text="Entry: " + str.tostring(close) + "\nSL: " + str.tostring(sell_sl) + "\nTP: " + str.tostring(sell_tp), style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)

// // Plot stop loss and take profit levels for buy signals
// if not na(buy_sl)
//     line.new(x1=bar_index, y1=buy_sl, x2=bar_index + 1, y2=buy_sl, color=color.red, width=1)
// if not na(buy_tp)
//     line.new(x1=bar_index, y1=buy_tp, x2=bar_index + 1, y2=buy_tp, color=color.green, width=1)

// // Plot stop loss and take profit levels for sell signals
// if not na(sell_sl)
//     line.new(x1=bar_index, y1=sell_sl, x2=bar_index + 1, y2=sell_sl, color=color.red, width=1)
// if not na(sell_tp)
//     line.new(x1=bar_index, y1=sell_tp, x2=bar_index + 1, y2=sell_tp, color=color.green, width=1)