Il s'agit d'une stratégie de suivi de tendance. Il va long lorsque le prix sort d'une formation de triangle ascendant et ferme la position lorsque l'EMA rapide traverse en dessous de l'EMA moyenne.
Utilisez une EMA rapide et une EMA moyenne pour déterminer la direction de la tendance.
Utilisez les prix les plus élevés et les plus bas des dernières N barres pour déterminer si un triangle ascendant est formé.
Après l'entrée, lorsque l'EMA rapide traverse l'EMA moyenne, il indique un renversement de tendance et donne un signal de sortie.
Pour la sortie du stop loss, définir un certain pourcentage en dessous du prix d'entrée.
Fixer un objectif de prise de profit à un certain pourcentage au-dessus du prix d'entrée pour une prise partielle de profit.
Utilisez l'EMA de 200 jours pour déterminer la direction générale de la tendance, ne négociez que lorsque la tendance est à la hausse.
La formation triangulaire filtre la fausse fuite et améliore la précision d'entrée.
L'EMA rapide par rapport à l'EMA moyenne divise raisonnablement la tendance et la consolidation pour éviter les sauts de marée.
Les paramètres de stop loss et de prise de profit raisonnables contrôlent les pertes d'une seule transaction.
Seule la négociation à tendance haussière évite les périodes agitées.
Une fourchette trop étroite de triangles peut manquer les tendances, tandis qu'une fourchette trop large peut augmenter les transactions inutiles.
L'arrêt de perte trop proche tend à s'arrêter prématurément, tandis que trop large échoue à contrôler la perte.
Un mauvais réglage partiel des bénéfices peut entraîner un dépassement des bénéfices.
Des paramètres d'indicateur de tendance incorrects peuvent conduire à une mauvaise direction de position.
Optimiser le paramètre N pour la détermination du triangle afin de trouver la valeur optimale.
Testez différentes combinaisons de périodes EMA pour améliorer la précision de la tendance.
Optimiser les paramètres de stop-loss et de prise de profit en fonction des caractéristiques du produit.
Ajoutez d'autres indicateurs tels que le modèle MACD, la rupture de Bollinger, etc. pour améliorer la qualité du signal.
Ajoutez un mécanisme de réouverture pour augmenter les bénéfices lorsque la tendance se maintient.
La stratégie est globalement robuste avec la formation de triangles améliorant la précision du signal. Un grand espace d'optimisation des paramètres existe pour une amélioration ultérieure. Essayez également d'ajouter plus d'indicateurs auxiliaires ou d'améliorer le stop loss / take profit pour une plus grande efficacité. Dans l'ensemble, cette stratégie a le potentiel de devenir une tendance de qualité suivant la stratégie.
/*backtest start: 2023-08-20 00:00:00 end: 2023-09-19 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/ // © mohanee //@version=4 strategy(title="TrianglePoint strategy", overlay=true,pyramiding=2, default_qty_value=3, default_qty_type=strategy.fixed, initial_capital=10000, currency=currency.USD) // variables BEGIN numPeriods=input(9,title="Number of Bars") fastEMA = input(13, title="fast EMA", minval=1) slowEMA = input(65, title="slow EMA", minval=1) stopLoss = input(title="Stop Loss%", defval=5, minval=1) HH = highest(close[1],numPeriods) LL = lowest(close[1],numPeriods) tringlePoint = low > LL and high < HH fastEMAval= ema(close, fastEMA) slowEMAval= ema(close, slowEMA) two100EMAval= ema(close, 200) //plot emas plot(fastEMAval, color = color.green, linewidth = 1, transp=0) plot(slowEMAval, color = color.orange, linewidth = 1, transp=0) plot(two100EMAval, color = color.purple, linewidth = 2, transp=0) longCondition=fastEMAval>two100EMAval and tringlePoint //plotshape(triP,style=shape.triangleup,text="Buy",color=color.green,location=location.belowbar) //plotshape(longCondition,style=shape.triangleup,text="Buy",color=color.green,location=location.belowbar) //Entry strategy.entry(id="TBT LE", comment="TBT LE" , long=true, when= longCondition and strategy.position_size<1) //Add strategy.entry(id="TBT LE", comment="Add" , long=true, when= longCondition and strategy.position_size>=1 and close<strategy.position_avg_price) //barcolor(strategy.position_size>=1 ? color.blue : na) //Take profit takeProfitVal= strategy.position_size>=1 ? (strategy.position_avg_price * (1+(stopLoss*0.01) )) : 0.00 //strategy.close(id="TBT LE", comment="Profit Exit", qty=strategy.position_size/2, when=close>=takeProfitVal and close<open and close<fastEMAval) //crossunder(close,fastEMAval) barcolor(strategy.position_size>=1 ? (close>takeProfitVal? color.purple : color.blue): na) //Exit strategy.close(id="TBT LE", comment="TBT Exit", when=crossunder(fastEMAval,slowEMAval)) //stoploss stopLossVal= strategy.position_size>=1 ? (strategy.position_avg_price * (1-(stopLoss*0.01) )) : 0.00 //stopLossVal= close> (strategy.position_avg_price * (1+(stopLoss*0.01) )) ? lowest(close,numPeriods) : (strategy.position_avg_price * (1-(stopLoss*0.01) )) strategy.close(id="TBT LE", comment="SL Exit", when= close < stopLossVal)