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:
Calculer le prix moyen ap = ((le prix le plus élevé + le prix le plus bas + le prix de clôture) / 3)
Calculer l'EMA de l'ap pour le cycle n1 et obtenir l'esa
Calculer la différence absolue de l'ap par rapport à l'esa pour l'EMA de la période n1 et obtenir d
Le calcul de la ligne d'onde: ci = ((ap-esa) / ((0.015*d))
Calculer l'EMA de cycles n2 ci et obtenir la ligne de l'onde finale tci, soit wt1.
On calcule la SMA de 4 cycles de wt1 et on obtient wt2.
Tracer la ligne horizontale obLevel1/2 et osLevel1/2 des zones d'achat et de vente excédentaires
Signal d'achat lorsque wt1 traverse la ligne obLevel2; signal de vente lorsque wt1 traverse la ligne osLevel2
Ajout d'emaFilter et de volume de transaction comme conditions de filtrage pour éviter les signaux erronés
Après l'entrée, définissez le taux de stop-loss et quittez la position.
L'analyse des avantages:
Les ondes traitent mieux les conversions multi-espaces pour capturer efficacement les tendances
Combinaison de double filtrage de la ligne droite et du volume de transaction pour une fiabilité accrue
Le calcul de plusieurs ensembles de paramètres évite les contraintes d'un seul indicateur
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:
La sélection des paramètres peut entraîner des performances médiocres ou une suradaptation dans certains cas.
Il n'y a pas de directives claires sur le choix des paramètres optimaux, il faut faire des essais et des erreurs.
Les conditions du marché ne sont pas intégrées dans le signal
Risque d'effets flagrants s'il est utilisé dans des marchés à portée limitée ou volatiles
Manque de règles de retrait, sauf pour le gain/perte
L'optimisation:
Testez les ensembles de paramètres sur différents délais et actifs pour trouver les meilleures valeurs
Combinaison d'indicateurs de volatilité pour éviter les signaux en période de faible volatilité
Ajout d'indicateurs complémentaires comme le RSI pour améliorer l'exactitude du signal
Construire un modèle d'apprentissage automatique pour trouver les paramètres optimaux pour un actif spécifique
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)