Amélioration de la stratégie de suivi des vagues

Auteur:ChaoZhang est là., Date: 2024-01-31 15h35 et 41 min
Les étiquettes:

改进波浪跟踪策略

Résumé: C'est une stratégie de suivi des tendances qui utilise des indicateurs ondulatoires. Elle obtient une ligne ondulée en calculant une moyenne mobile indicielle des prix moyens et une moyenne mobile des prix négatifs absolus. La stratégie produit des signaux de trading en surveillant l'intersection de la ligne ondulée avec une zone d'excédent d'achat et d'excédent de vente.

Les stratégies suivantes:

  1. Calculer le prix moyen ap = ((le prix le plus élevé + le prix le plus bas + le prix de clôture) / 3)

  2. Calculer l'EMA de l'ap pour le cycle n1 et obtenir l'esa

  3. Calculer la différence absolue de l'ap par rapport à l'esa pour l'EMA de la période n1 et obtenir d

  4. Le calcul de la ligne d'onde: ci = ((ap-esa) / ((0.015*d))

  5. Calculer l'EMA de cycles n2 ci et obtenir la ligne de l'onde finale tci, soit wt1.

  6. On calcule la SMA de 4 cycles de wt1 et on obtient wt2.

  7. Tracer la ligne horizontale obLevel1/2 et osLevel1/2 des zones d'achat et de vente excédentaires

  8. Signal d'achat lorsque wt1 traverse la ligne obLevel2; signal de vente lorsque wt1 traverse la ligne osLevel2

  9. Ajout d'emaFilter et de volume de transaction comme conditions de filtrage pour éviter les signaux erronés

  10. Après l'entrée, définissez le taux de stop-loss et quittez la position.

L'analyse des avantages:

  1. Les ondes traitent mieux les conversions multi-espaces pour capturer efficacement les tendances

  2. Combinaison de double filtrage de la ligne droite et du volume de transaction pour une fiabilité accrue

  3. Le calcul de plusieurs ensembles de paramètres évite les contraintes d'un seul indicateur

  4. Un stop-loss peut être mis en place pour bloquer une partie des bénéfices et contrôler efficacement les risques.

Risques et défauts:

  1. La sélection des paramètres peut entraîner des performances médiocres ou une suradaptation dans certains cas.

  2. Il n'y a pas de directives claires sur le choix des paramètres optimaux, il faut faire des essais et des erreurs.

  3. Les conditions du marché ne sont pas intégrées dans le signal

  4. Risque d'effets flagrants s'il est utilisé dans des marchés à portée limitée ou volatiles

  5. Manque de règles de retrait, sauf pour le gain/perte

L'optimisation:

  1. Testez les ensembles de paramètres sur différents délais et actifs pour trouver les meilleures valeurs

  2. Combinaison d'indicateurs de volatilité pour éviter les signaux en période de faible volatilité

  3. Ajout d'indicateurs complémentaires comme le RSI pour améliorer l'exactitude du signal

  4. Construire un modèle d'apprentissage automatique pour trouver les paramètres optimaux pour un actif spécifique

  5. Retrait renforcé en ajoutant un stop-loss de suivi ou un retrait basé sur un événement d'expansion soudaine.

Résumé:

Il s'agit d'une stratégie qui combine la conception d'indicateurs d'aide et de lignes d'onde. Elle utilise les caractéristiques d'une ligne d'onde pour identifier efficacement les changements de tendance, en plus du filtrage des moyennes et des volumes de transactions pour éviter les signaux erronés, ce qui permet d'obtenir la majeure partie des tendances de la ligne moyenne.


/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bush Strategy test", shorttitle="Nique Audi", overlay=false)

// Paramètres
n1 = input(10, title="Channel Length")
n2 = input(21, title="Average Length")
obLevel1 = input(60, title="Over Bought Level 1")
obLevel2 = input(53, title="Over Bought Level 2")
osLevel1 = input(-65, title="Over Sold Level 1")
osLevel2 = input(-60, title="Over Sold Level 2")
takeProfitPercentage = input(1, title="Take Profit (%)")
stopLossPercentage = input(0.50, title="Stop Loss (%)")

// Calculs
ap = hlc3 
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)

wt1 = tci
wt2 = ta.sma(wt1, 4)

// Tracé des lignes
plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=plot.style_line)
plot(osLevel2, color=color.green, style=plot.style_line)

plot(wt1, color=color.green)
plot(wt2, color=color.red, style=plot.style_line)

// Tracé de la différence entre wt1 et wt2 en bleu
hline(0, "Zero Line", color=color.gray)

// Conditions d'entrée long et court
longCondition = ta.crossover(wt1, obLevel2)
shortCondition = ta.crossunder(wt1, osLevel2)

// Tracé des signaux d'achat et de vente
plotshape(series=longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")

// Conditions d'entrée et de sortie
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)

// Niveaux de prise de profit pour les positions longues et courtes
longTakeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercentage / 100)
shortTakeProfitLevel = strategy.position_avg_price * (1 - takeProfitPercentage / 100)

// Vérification si les niveaux de prise de profit sont atteints
longTakeProfitReached = strategy.position_size > 0 and high >= longTakeProfitLevel
shortTakeProfitReached = strategy.position_size < 0 and low <= shortTakeProfitLevel

// Tracé des formes de prise de profit
plotshape(series=longTakeProfitReached, style=shape.xcross, location=location.belowbar, color=color.blue, size=size.small, title="Take Profit Long")
plotshape(series=shortTakeProfitReached, style=shape.xcross, location=location.abovebar, color=color.blue, size=size.small, title="Take Profit Short")

// Niveaux de stop loss pour les positions longues et courtes
longStopLossLevel = strategy.position_avg_price * (1 - stopLossPercentage / 100)
shortStopLossLevel = strategy.position_avg_price * (1 + stopLossPercentage / 100)

// Vérification si les niveaux de stop loss sont atteints
longStopLossReached = strategy.position_size > 0 and low <= longStopLossLevel
shortStopLossReached = strategy.position_size < 0 and high >= shortStopLossLevel

// Tracé des formes de stop loss
plotshape(series=longStopLossReached, style=shape.xcross, location=location.belowbar, color=color.red, size=size.small, title="Stop Loss Long")
plotshape(series=shortStopLossReached, style=shape.xcross, location=location.abovebar, color=color.red, size=size.small, title="Stop Loss Short")

// Fermeture des positions en cas de prise de profit ou de stop loss
strategy.close("Long", when=longTakeProfitReached or longStopLossReached)
strategy.close("Short", when=shortTakeProfitReached or shortStopLossReached)




En savoir plus