La tendance à la triple confirmation à la suite de la stratégie

Auteur:ChaoZhang est là., Date: 2024-01-05 15h46 et 21h
Les étiquettes:

img

Résumé

Cette stratégie génère des signaux de négociation en utilisant un mécanisme de triple confirmation, c'est-à-dire que l'indicateur de dynamique confirme une forte tendance du marché, l'indicateur Supertrend confirme la direction de la tendance et l'indicateur EMA fournit une vérification supplémentaire de la direction de la tendance.

Principe de stratégie

  1. Indicateur de dynamique (RSI)

    • L'indicateur Momentum RSI est utilisé pour déterminer la force de la tendance du marché.

    • Les signaux de trading ne sont générés que pendant les marchés haussiers ou baissiers intenses.

  2. Analyse des super-tendances

    • La ligne Supertrend représente la direction de la tendance du marché. Les positions ne sont considérées que lorsque le prix franchit la ligne Supertrend.

    • Lorsque le prix franchit la ligne de Supertrend vers le haut, il est converti en tendance haussière; lorsqu'il franchit la tendance à la baisse, il est converti en tendance à la baisse.

  3. Stratégie de l'EMA

    • L'EMA et ses lignes de tendance auxiliaires sont utilisées pour confirmer la direction de la tendance.

Ce n'est que lorsque les trois indicateurs répondent simultanément aux conditions d'ouverture de position que de véritables signaux de négociation seront émis, ce qui réduit considérablement le nombre de faux signaux et améliore la stabilité de la stratégie.

Analyse des avantages

La stratégie présente une stabilité et une rentabilité extrêmement élevées.

  1. Les mécanismes de confirmation multiples filtrent efficacement le bruit et ne sélectionnent que les transactions à forte probabilité.

  2. La ligne Supertrend a un stop loss dynamique pour contrôler efficacement le risque.

  3. Combiné avec le jugement de la force de la tendance, seule la négociation dans des tendances fortes évite un risque supplémentaire.

  4. L'indicateur EMA fournit une vérification supplémentaire pour s'assurer que la direction des échanges est correcte.

  5. Entièrement paramétrée pour que les commerçants puissent personnaliser au besoin.

Analyse des risques

Les principaux risques de cette stratégie proviennent de ruptures anormales provoquant des signaux commerciaux erronés.

  1. Risque de fausse fuite: renforcer les mécanismes de vérification de la fuite.

  2. Risque d'une plus grande plage d'oscillation: régler de manière appropriée la plage de stop loss.

  3. Risque d'inversion de tendance: raccourcissement de la période de détention, arrêt des pertes en temps opportun.

Directions d'optimisation

Les principales orientations d'optimisation de cette stratégie sont les suivantes:

  1. Optimisation des paramètres: ajuster les paramètres des indicateurs pour qu'ils correspondent à plus de variétés.

  2. Filtrage accru: combiner plus d'indicateurs pour améliorer la qualité du signal.

  3. Stratégies composites: Combiner avec d'autres stratégies pour utiliser des avantages complémentaires.

  4. Ajustement dynamique des paramètres: ajustez automatiquement les paramètres en fonction des conditions du marché.

  5. Apprentissage automatique: utiliser des algorithmes pour trouver automatiquement les paramètres optimaux.

Résumé

Cette stratégie permet d'obtenir une stratégie de trading à forte probabilité avec plusieurs confirmations en combinant efficacement les indicateurs de dynamique, Supertrend et EMA. Son mécanisme de vérification de rupture strict lui donne également une stabilité extrêmement forte. En même temps, elle a un très haut potentiel de personnalisation et d'optimisation. En résumé, cette stratégie intègre les avantages du suivi des tendances et du trading de rupture, ce qui en fait une stratégie de trading algorithmique très prometteuse.


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

Plus de