Stratégie de suivi de tendance à triple confirmation pilotée par l'indicateur Momentum


Date de création: 2024-01-05 15:46:21 Dernière modification: 2024-01-05 15:46:21
Copier: 0 Nombre de clics: 692
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance à triple confirmation pilotée par l’indicateur Momentum

Aperçu

La stratégie utilise un triple mécanisme de confirmation pour générer des signaux de trading, à savoir un indicateur de dynamique pour confirmer une tendance forte du marché, un indicateur de tendance supérieure pour confirmer la direction de la tendance et un indicateur EMA comme confirmation supplémentaire de la direction de la tendance. La stratégie ne génère des signaux de trading en surplus ou en déficit que lorsque ces trois indicateurs sont remplis, ce qui garantit le choix de seules opportunités de trading à forte probabilité.

Principe de stratégie

  1. L’indicateur de dynamique (RSI du momentum)

    • L’indicateur RSI dynamique est utilisé pour juger de la force d’une tendance du marché. Une lecture supérieure à 60 indique une tendance forte du marché.

    • Les signaux d’échange ne sont générés que pendant les périodes de hausse et de baisse.

  2. Une analyse des tendances

    • Les lignes de tendance supérieure représentent la direction de la tendance du marché. La position est envisagée uniquement lorsque le prix franchit la ligne de tendance supérieure.

    • Quand le prix franchit la ligne de super-tendance de bas en haut, il est converti en tendance à plusieurs têtes; quand le prix franchit la ligne de super-tendance de haut en bas, il est converti en tendance à tête nue.

  3. Stratégie de l’EMA

    • L’EMA et sa ligne de tendance auxiliaire sont utilisés pour confirmer la direction de la tendance. Un signal d’achat n’apparaît que lorsque l’EMA franchit la ligne de tendance auxiliaire vers le haut, tandis qu’un signal de tête nue est le contraire.

Un véritable signal de transaction n’est émis que lorsque ces trois indicateurs sont en phase avec les conditions de création de position. Cela réduit considérablement le nombre de faux signaux et améliore la stabilité de la stratégie.

Analyse des avantages

Cette stratégie a une stabilité et une probabilité de profit extrêmement élevées. Les principaux avantages sont:

  1. Il existe un mécanisme de confirmation multiple, un filtrage efficace du bruit et un choix de transactions à forte probabilité.

  2. Les lignes de tendance super dynamiques permettent de suivre les pertes et de contrôler efficacement les risques.

  3. En fonction de l’intensité de la tendance, il est préférable de négocier uniquement dans les tendances fortes, afin d’éviter tout risque supplémentaire.

  4. La vérification additionnelle des indicateurs de l’EMA assure la bonne orientation des transactions.

  5. Il est entièrement paramétrable et peut être personnalisé pour tous les types de traders.

Analyse des risques

Les principaux risques de cette stratégie proviennent de signaux de transaction erronés causés par des percées anormales. Les principaux risques et solutions comprennent:

  1. Risque de fausse intrusion: renforcer le mécanisme de vérification des intrusions

  2. La zone sismique risque d’augmenter: ajustez la zone d’arrêt de manière appropriée.

  3. Risque de renversement de tendance: raccourcissement du cycle de détention et arrêt des pertes en temps opportun.

Direction d’optimisation

Cette stratégie peut être optimisée principalement dans les directions suivantes:

  1. Paramètres d’optimisation: Ajuster les paramètres de l’indicateur pour s’adapter à plus de variétés.

  2. Augmentation du filtrage: amélioration de la qualité du signal avec plus d’indicateurs.

  3. Stratégie combinée: combinaison avec d’autres stratégies pour tirer parti de leurs avantages.

  4. Paramétrage dynamique: Ajuste automatiquement les paramètres en fonction des conditions du marché.

  5. L’apprentissage automatique: recherche automatique des paramètres optimaux à l’aide d’algorithmes

Résumer

Cette stratégie, combinant efficacement les indicateurs dynamiques, les supertrends et les EMA, permet de réaliser une stratégie de négociation à haute probabilité de confirmation multiple. Un mécanisme de vérification de rupture rigoureux lui confère également une stabilité extrême.

Code source de la stratégie
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('The Flash-Strategy (Momentum-RSI, EMA-crossover, ATR)', shorttitle='The Flash-Strategy (Momentum-RSI, EMA-crossover, ATR)', overlay=true,initial_capital = 1000)
//// author -  Baby_whale_to_moon

// MOM Rsi indicator 
group_mom_rsi = "Rsi Of Momentum "
len = input.int(10, minval=1, title="Length Mom-Rsi", group =group_mom_rsi ,tooltip = 'This ind calculate Rsi value of Momentum we use this ind to determine power of trend')
src2 = close
mom = src2 - src2[len]
rsi_mom = ta.rsi(mom, len)
mom_rsi_val = input.int(60, minval=1, title="Mom-Rsi Limit Val", group =group_mom_rsi, tooltip = "When our Mom-Rsi value more then this we open LONG or Short, with help of this indicator we we determine the status of the trend")

// Super Trend Ind
group_supertrend = "SuperTrend indicator"
atrPeriod = input(10, "ATR Length SuperTrend", group = group_supertrend)
factor = input.float(3.0, "Factor SuperTrend", step = 0.01, group = group_supertrend)

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

// Ema Indicator
group_most = "Ema indicator"
src = input(close, 'Source Ema Ind',group = group_most)
AP2 = input.int(defval=12, title='Length Ema Ind', minval=1,group = group_most)
Trail1 = ta.ema(src, AP2) //Ema func
AF2 = input.float(defval=1, title='Percent Ema Ind', minval=0.1,group = group_most) / 100
SL2 = Trail1 * AF2  // Stoploss Ema
Trail2 = 0.0
iff_1 = Trail1 > nz(Trail2[1], 0) ? Trail1 - SL2 : Trail1 + SL2
iff_2 = Trail1 < nz(Trail2[1], 0) and Trail1[1] < nz(Trail2[1], 0) ? math.min(nz(Trail2[1], 0), Trail1 + SL2) : iff_1
Trail2 := Trail1 > nz(Trail2[1], 0) and Trail1[1] > nz(Trail2[1], 0) ? math.max(nz(Trail2[1], 0), Trail1 - SL2) : iff_2

//Bull = ta.barssince(Trail1 > Trail2 and close > Trail2 and low > Trail2) < ta.barssince(Trail2 > Trail1 and close < Trail2 and high < Trail2)

//TS1 = plot(Trail1, 'ExMov', style=plot.style_line, color=Trail1 > Trail2 ? color.rgb(33, 149, 243, 100) : color.rgb(255, 235, 59, 100), linewidth=2)
//TS2 = plot(Trail2, 'ema', style=plot.style_line, color=Trail1 > Trail2 ? color.rgb(76, 175, 79, 30) : color.rgb(255, 82, 82, 30), linewidth=2)
//fill(TS1, TS2, Bull  ? color.green : color.red, transp=90)


// Strategy Sett
group_strategy = "Settings of Strategy"
Start_Time = input(defval=timestamp('01 January 2000 13:30 +0000'), title='Start Time of BackTest', group =group_strategy)
End_Time = input(defval=timestamp('30 April 2030 19:30 +0000'), title='End Time of BackTest', group =group_strategy)
dollar = input.float(title='Dollar Cost Per Position* ', defval=50000, group =group_strategy)
trade_direction = input.string(title='Trade_direction', group =group_strategy, options=['LONG', 'SHORT', 'BOTH'], defval='BOTH')
v1 = input(true, title="Version 1 - Uses SL/TP Dynamically ", group =group_strategy ,tooltip = 'With this settings our stoploss price increase or decrease with price to get better PNL score')

v2 = input(false, title="Version 2 -  Uses SL/TP Statically", group =group_strategy)
v2stoploss_input = input.float(5, title='Static Stop.Loss % Val', minval=0.01, group =group_strategy)/100
v2takeprofit_input = input.float(10, title='Static Take.Prof % Val', minval=0.01, group =group_strategy)/100

v2stoploss_level_long = strategy.position_avg_price * (1 - v2stoploss_input)
v2takeprofit_level_long = strategy.position_avg_price * (1 + v2takeprofit_input)

v2stoploss_level_short = strategy.position_avg_price * (1 + v2stoploss_input)
v2takeprofit_level_short = strategy.position_avg_price * (1 - v2takeprofit_input)

group_line = "Line Settings"
show_sl_tp = input.bool(title='  Show StopLoss - TakeProf Lines',inline = "1", defval=true, group =group_line)
show_trend_line = input.bool(title='  Show Trend Line',inline = '3' ,defval=true, group =group_line)
stoploss_colour = input.color(title='StopLoss Line Colour',inline = '2' ,defval=color.rgb(255, 255, 0), group =group_line)
up_trend_line_colour = input.color(title='Up Trend line Colour',inline = '4' ,defval=color.rgb(0, 255, 0, 30), group =group_line)
down_trend_line_colour = input.color(title='Down Trend line Colour',inline = '4' ,defval=color.rgb(255, 0, 0, 30), group =group_line)

//plot(supertrend ,color = strategy.position_size > 0 and show_sl_tp ? color.rgb(255, 0, 0) :show_sl_tp ? color.rgb(0, 255, 0) : na , style = plot.style_steplinebr,linewidth = 2)
// plot(supertrend ,color = show_sl_tp and v1 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2)

// plot(v2stoploss_level_long ,color = strategy.position_size > 0 and show_sl_tp and v2 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2)
// plot(v2stoploss_level_short ,color = strategy.position_size < 0 and show_sl_tp and v2 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2)
// plot(v2takeprofit_level_long  ,color = strategy.position_size > 0 and show_sl_tp and v2 ? up_trend_line_colour : na , style = plot.style_steplinebr,linewidth = 2)
// plot(v2takeprofit_level_short ,color = strategy.position_size < 0 and show_sl_tp and v2 ? up_trend_line_colour : na , style = plot.style_steplinebr,linewidth = 2)


TS2 = plot(Trail2, 'Ema Strategy', style=plot.style_line, color=show_trend_line and Trail1 < Trail2 ? down_trend_line_colour : show_trend_line ? up_trend_line_colour  : na, linewidth=2)

// bgcolor(buy_signal ? color.rgb(0, 230, 119, 80) : na)
// bgcolor(sell_signal ? color.rgb(255, 82, 82, 80) : na)

Time_interval = true
buy_signal = Trail1 > Trail2 and direction < 0 and rsi_mom > mom_rsi_val and Time_interval
sell_signal =Trail1 < Trail2 and direction > 0 and rsi_mom > mom_rsi_val and Time_interval


// Strategy entries 
if strategy.opentrades == 0 and buy_signal and ( trade_direction == 'LONG' or trade_direction == 'BOTH')
    strategy.entry('Long_0', strategy.long, qty=dollar / close)

if strategy.opentrades == 0 and sell_signal and ( trade_direction == 'SHORT' or trade_direction == 'BOTH')
    strategy.entry('Short_0', strategy.short, qty=dollar / close)


if close < supertrend and v1
    strategy.exit('Long_Close',from_entry = "Long_0", stop=supertrend, qty_percent=100)
if  v2 and strategy.position_size > 0
    strategy.exit('Long_Close',from_entry = "Long_0", stop=v2stoploss_level_long,limit= v2takeprofit_level_long  , qty_percent=100)
    
if close > supertrend and v1
    strategy.exit('Short_Close',from_entry = "Short_0", stop=supertrend, qty_percent=100)
if  v2 and strategy.position_size < 0
    strategy.exit('Short_Close',from_entry = "Short_0", stop=v2stoploss_level_short,limit= v2takeprofit_level_short ,qty_percent=100)