Tendance progressive de la moyenne mobile suivant une stratégie

Auteur:ChaoZhang est là., Date: le 26 octobre 2023 à 17h08h43
Les étiquettes:

img

Résumé

La stratégie de suivi de tendance de la moyenne mobile graduelle utilise plusieurs moyennes mobiles de différentes périodes pour capturer les changements de tendance des prix, combinée à des indicateurs d'oscillateur pour déterminer les zones de surachat et de survente, formant une tendance à faible achat et à forte vente à la suite de la stratégie de trading. Cette stratégie convient aux positions de détention à moyen et à long terme pour suivre les tendances significatives des marchés.

La logique de la stratégie

La stratégie utilise plusieurs ensembles de moyennes mobiles, comme les MAs de 18-, 26-, 36 périodes, pour capturer les tendances des prix. Lorsque les MAs plus courts traversent au-dessus des MAs plus longs, cela indique une tendance à la hausse, ce qui signifie que vous allez long. Lorsque les MAs plus courts traversent en dessous des MAs plus longs, cela indique une tendance à la baisse, ce qui signifie que vous allez court.

Pendant ce temps, des indicateurs d'oscillateur comme le MACD, le RSI, l'EFI sont utilisés pour identifier les conditions de surachat et de survente. Par exemple, le passage du MACD de négatif à positif suggère un long, tandis que le passage du positif à négatif suggère un short.

Règles d'entrée:

Longue: croisement MA court vers le haut MA long et MACD>0 et RSI rebondit des bas et EFI<0

Courte: croisement à la baisse de la courte MA et MACD<0 et RSI retombe des hauts et EFI>0

Règles d'arrêt des pertes:

Long SL: EFI au-dessus du seuil ET des écarts de prix inférieurs à l'AM spécifié

SL courte: EFI inférieure au seuil ET des écarts de prix supérieurs à la MA spécifiée

Les avantages

  1. Plusieurs MAs captent les principaux points de changement de tendance.

  2. Les combinaisons d'oscillateurs évitent de poursuivre les hauts et de vendre les bas.

  3. Les règles SL tiennent compte à la fois des tendances et des flux de trésorerie, contrôlant ainsi efficacement les risques.

  4. Paramètres optimisés grâce à des tests antérieurs approfondis, adaptés à la plupart des environnements du marché.

  5. Fréquence de négociation moyenne, signaux stables, adaptés au suivi des tendances à long terme.

Les risques

  1. Les accidents soudains peuvent invalider le SL, la portée du SL doit être élargie.

  2. Il y a trop de signaux sur les marchés de variation, les paramètres doivent être ajustés.

  3. Une détention trop longue peut amplifier les pertes, des MAs plus courtes peuvent prendre plus de SL.

  4. Retour sur l'adaptation, résultats commerciaux réels en attente de validation.

Améliorations

  1. Optimiser les paramètres pour des rendements plus élevés et une fréquence appropriée.

  2. Ajoutez des algorithmes d'apprentissage automatique pour optimiser dynamiquement les paramètres.

  3. Construire un mécanisme SL adaptatif basé sur les différentes conditions du marché.

  4. Ajouter plus de filtres pour déterminer de meilleurs signaux d'entrée.

  5. Incorporer des stratégies de dimensionnement des positions pour contrôler la taille des mises individuelles.

Conclusion

La stratégie de suivi de tendance progressive suit efficacement les grandes tendances en identifiant la direction de la tendance avec plusieurs MAs et en entrant sur des signaux filtrés, obtenant des profits stables grâce à une détention à long terme.


/*backtest
start: 2023-09-25 00:00:00
end: 2023-10-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © murdocksilva

//@version=5

strategy("Daily_Mid Term_Consulting BOLT")

//calculo longuitud
longuitud = input(58, title= "longitud_sma")


px = ta.sma(close, 1)
px2 = ta.sma(low, 1)

Length1 = input.int(18)
Length2 = input.int(18)
Length3 = input.int(26)
Length4 = input.int(36)
Length5 = input.int(78)
Length6 = input.int(1)
Length7 = input.int(1500)
Length8 = input.int(58)
Length9 = input.int(3000)
Length10 = input.int(2)
Length11 = input.int(14)
ma1 = ta.sma(low, Length1)
ma2 = ta.sma(high, Length2)
ma3 = ta.sma(close, Length3)
ma4 = ta.sma(close, Length4)
ma5 = ta.sma(close, Length5)
ma6 = ta.sma(close, Length6)
ma7 = ta.sma(close, Length7)
ma8 = ta.sma(close, Length8)
ma9 = ta.sma(close, Length9)
ma10 = ta.sma(close, Length10)
ma11 = ta.sma(close, Length11)

// calculo EFI
efi = (close[1]-close) * volume / 1000
efi_indicador = (efi[1] + efi) / 2

//Variable  RSI - calculo desv estandar
b = (px-ma10)*(px-ma10)
b2 = (px[1]-ma10[1])*(px[1]-ma10[1])
c = b + b2
c2 = c / 2
desv = math.sqrt(c2)/10

//calculo MACD
macd = ma4 - ma5

//calculo RSI
rsi = ta.rsi(close, 9)

// calculo Divergencia
ma = ta.sma(close, longuitud)
dist = close - ma
porcentaje = dist * 100 / close
ma_dista = ta.sma(porcentaje, 333)

//condición de entrada y salida long
long = ma1[1] < ma1 and ma2[1] < ma2 and macd > 0 and px > ma3 and efi_indicador < 9 and px > ma7 and macd[1] < macd
clong = efi_indicador > 22000 and px < ma8
strategy.entry("BUY", strategy.long, when = long)
strategy.close("BUY", when = clong)

//condición de entrada y salida short
short = ma1[1] > ma1 and ma2[1] > ma2 and macd < 0 and px < ma3 and efi_indicador > 9 and macd[1] > macd 
cshort =  efi_indicador < 14000 and px > ma8 and ma11 > desv
strategy.entry("SELL", strategy.short, when = short)
strategy.close("SELL", when = cshort)

//SL Y TP
//strategy.exit("long exit", "Daily_Mid Term_Consulting BOLT", profit = close * 40 / syminfo.mintick, loss = close * 0.02 / syminfo.mintick)
//strategy.exit("shot exit", "Daily_Mid Term_Consulting BOLT", profit = close * 40 / syminfo.mintick, loss = close * 0.02 / syminfo.mintick)

// GRAFICA smas
plot(ma1, color=color.new(color.orange, 0))
plot(ma2, color=color.new(color.orange, 0))
plot(ma3, color=color.new(color.orange, 0))
plot(ma4, color=color.new(color.orange, 0))
plot(ma5, color=color.new(color.orange, 0))
plot(ma6, color=color.new(color.green, 0))
plot(ma7, color=color.new(color.orange, 0))
plot(ma8, color=color.new(color.orange, 0))
plot(ma9, color=color.new(color.orange, 0))
//GRAFICA MACD
plot(macd, color=color.new(color.red, 0), style = plot.style_columns)
//GRAFICA DIVERGENCIA
plot(porcentaje, style = plot.style_columns)
//GRAFICA MA DIVERGENCIA
plot(ma_dista, color=color.new(color.white, 0))
//GRAFICA MA DIVERGENCIA
plot(desv, color=color.new(color.blue, 0))
//GRAFICA EFI
plot(efi_indicador, color=color.new(color.yellow, 0))
// GRAFICA RSI
l1 = hline(70, color=color.new(color.green, 0))
l2 = hline(30, color=color.new(color.green, 0))
plot(rsi, color=color.new(color.white, 0))




//prueba 1 stop loss and take profit
//sl = 0.05
//tp = 0.1    
//calculo de precio para sl y tp
//longstop=strategy.position_avg_price*(1-sl)
//longprofit=strategy.position_avg_price*(1+tp)

//shortstop=strategy.position_avg_price*(1+sl)
//shortprofit=strategy.position_avg_price*(1-tp)

//if (long)
  //  strategy.exit("BUY", strategy.long)

//sl and tp  long|short
//if strategy.entry("BUY", strategy.long)

//if strategy.position_avg_price > 0
//strategy.exit("BUY", limit = longprofit, stop = longstop)

//if strategy.position_avg_price < 0
//strategy.exit("SELL", limit = shortprofit, stop=shortstop)

Plus de