Stratégie de percée de la ligne de tendance MA

Auteur:ChaoZhang est là., Date: le 30 octobre 2023 11:39:31
Les étiquettes:

img

Cette stratégie permet de réaliser une rentabilité continue sur les marchés volatils en suivant les avancées de la moyenne mobile.

La logique de la stratégie

La logique de base de cette stratégie est d'ouvrir des positions basées sur les percées de la ligne de moyenne mobile.

Plus précisément, la stratégie adopte une moyenne mobile double WMA à 60 périodes comme ligne moyenne mobile principale. En même temps, elle calcule la vraie plage du prix et dessine des bandes supérieures et inférieures.

En plus des signaux de percée, la stratégie intègre également RSI et EMA comme indicateurs auxiliaires.

En outre, la stratégie utilise des formations de moyennes mobiles triples pour déterminer les points de sortie.

Analyse des avantages

  • En utilisant MA pour fluidifier les variations de prix, il peut identifier efficacement les tendances
  • Les échanges basés sur les ruptures de canal peuvent générer des bénéfices décents sur les marchés à fourchette
  • La combinaison de RSI et EMA évite les faux signaux de rupture
  • L'utilisation de formations triple MA pour déterminer les points de sortie évite les tendances épuisées

Analyse des risques

  • Les lignes MA peuvent générer de nombreuses fausses ruptures sur des marchés très fluctuants
  • Les délais de sortie de la triple MA peuvent ne pas être très précis
  • Les paramètres de l'indicateur de volatilité inappropriés peuvent entraîner une survente

Ces risques peuvent être réduits en optimisant les périodes de MA, en ajustant les paramètres de triple MA, en utilisant prudemment le RSI, etc.

Directions d'optimisation

  • Optimiser les périodes de MA pour trouver de meilleurs paramètres pour la ligne de la moyenne mobile principale
  • Essayez différents indicateurs auxiliaires pour remplacer le RSI, par exemple KDJ, MACD, etc.
  • Ajuster les paramètres de triple MA pour identifier plus précisément les points d'inversion
  • Ajouter le stop loss au risque de contrôle par transaction

Résumé

En résumé, il s'agit d'une excellente stratégie de rupture pour les marchés à plage. L'idée principale est d'ouvrir des positions basées sur des ruptures de MA, filtrées par des indicateurs de tendance, et de réaliser des profits stables sur les marchés non tendance. Les sorties sont déterminées plus tôt en utilisant des formations de triple MA. Il y a beaucoup de place pour optimiser les paramètres, améliorer la logique d'entrée / sortie, etc. pour maximiser les performances sur les marchés à plage.


/*backtest
start: 2022-10-23 00:00:00
end: 2023-03-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/



//@version=5

//exapple bot
strategy('RIPO BOT', shorttitle='RIPO BOT', overlay=true, process_orders_on_close=true, calc_on_order_fills=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
sl_inp = input(0.1, title='Stop Loss %') / 100
tp_inp = input(0.33, title='Take Profit %') / 100

length = input(defval=21)
upper = ta.highest(length)
lower = ta.lowest(length)

lengthChop = input.int(14, minval=1)
ci = 100 * math.log10(math.sum(ta.atr(1), lengthChop) / (ta.highest(lengthChop) - ta.lowest(lengthChop))) / math.log10(lengthChop)
offset = input.int(0, "Offset",  minval = -500, maxval = 500)
plot(ci, "CHOP", color=#2962FF, offset = offset)
band1 = hline(61.8, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
hline(50, "Middle Band", color=color.new(#787B86, 50))
band0 = hline(38.2, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
fill(band1, band0, color = color.rgb(33, 150, 243, 90), title = "Background")

rsi = ta.rsi(close, 14)

var float entry_price = na

output = 100 * (close - upper) / (upper - lower)
ema = ta.ema(output, input(defval=13, title='EMA'))

ma(src, len) =>
    ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len), math.round(math.sqrt(len)))
BBMC = ma(close, 60)
rangema = ta.ema(ta.tr, 60)
upperk = BBMC + rangema * 0.2
lowerk = BBMC - rangema * 0.2
color_bar = close > upperk ? color.blue : close < lowerk ? color.fuchsia : color.gray

ExitHigh = ma(high, 15)
ExitLow = ma(low, 15)
Hlv3 = int(na)
Hlv3 := close > ExitHigh ? 1 : close < ExitLow ? -1 : Hlv3[1]
sslExit = Hlv3 < 0 ? ExitHigh : ExitLow
base_cross_Long = ta.crossover(close, sslExit)
base_cross_Short = ta.crossover(sslExit, close)
codiff = base_cross_Long ? 1 : base_cross_Short ? -1 : na
entry_long = false

entry_short = false

    
if ta.crossover(close, BBMC) and output > ema
    entry_long := true
    
if ta.crossunder(close, BBMC) and output < ema
    entry_short := true

if entry_long and strategy.position_size == 0
    entry_price := close
    strategy.entry('enter long', strategy.long, comment='ENTER-LONG_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
if strategy.position_size > 0
    strategy.exit('Stop Loss/TP long', 'enter long', limit=entry_price * (1 + tp_inp), stop = color_bar == color.fuchsia ? BBMC : na, comment='EXIT-LONG_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
plot(entry_price * (1 + tp_inp), color=color.new(color.green, 0))


//if entry_short and strategy.position_size == 0
    //entry_price := close
    //strategy.entry('enter short', strategy.short, comment='ENTER-SHORT_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
if strategy.position_size < 0
    strategy.exit('Stop Loss/TP short', 'enter short', limit=entry_price * (1 - tp_inp), stop = color_bar == color.blue ? BBMC : na, comment='EXIT-SHORT_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
plot(entry_price * (1 + tp_inp), color=color.new(color.green, 0))
// plot(entry_price * (1 - sl_inp), color=color.new(color.red, 0))

plot(rsi, color=color.yellow)

plot(output, title='%R', color=color.new(color.yellow, 0), linewidth=2)
plot(ema, title='EMA', color=color.new(color.aqua, 0), linewidth=2)

plotarrow(codiff, colorup=color.new(color.blue, 35), colordown=color.new(color.fuchsia, 35), title='Exit Arrows', maxheight=20, offset=0)
plot(BBMC, color=color_bar, linewidth=4, title='MA Trendline')





Plus de