Cette stratégie investit des pourcentages égaux de capital basés sur l'utilisation des dérivés du 1er, 2e, 3e et 4e temps de la moyenne mobile de Hull (HMA).
La stratégie calcule d'abord la HMA. La moyenne mobile Hull est une moyenne mobile pondérée calculée selon la formule suivante:
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
où src est le prix et sm est un paramètre d'entrée contrôlant la longueur de la moyenne.
La stratégie calcule ensuite la vitesse (première dérivée), l'accélération (deuxième dérivée), la secousse (troisième dérivée) et la jonction (quatrième dérivée).
speed = (hullma-hullma[len])/len
Les autres dérivés sont calculés de la même manière.
La stratégie détermine les entrées et les sorties en regardant les signes de l'accélération, de la secousse et de la jonction. Si les trois indicateurs sont positifs, il ira long. Si les trois sont négatifs, il ira court.
En outre, la stratégie suivra également les arrêts de pertes pour verrouiller les bénéfices.
L'un des principaux avantages de cette stratégie est qu'elle utilise plusieurs dérivés comme signaux d'entrée et de sortie, ce qui peut filtrer certains faux signaux.
Un autre avantage de cette stratégie est qu'elle est très flexible, avec de multiples paramètres réglables, y compris la longueur de la HMA, la longueur des différents dérivés, les pourcentages de stop loss, etc., qui peuvent être optimisés pour différents marchés.
L'utilisation de trailing stops réglables est également un avantage. Cela peut aider la stratégie à capturer plus de profits sur les marchés tendance, tout en sortant en temps opportun pendant les marchés agités, limitant le tirage maximum.
Le principal risque de cette stratégie est la diminution du taux de réussite en raison d'événements soudains. S'il n'y a pas de filtres pertinents en place, les événements d'actualité majeurs pourraient entraîner plusieurs dérivés à donner des signaux erronés en même temps, entraînant des pertes plus importantes. Certains filtres d'actualité pourraient être mis en œuvre ou la stratégie pourrait être interrompue pendant un certain temps après les événements d'éclatement pour atténuer ce risque.
Un autre risque est que les paramètres pourraient être facilement sur-adaptés. La longueur de la HMA, les longueurs des dérivés, etc. pourraient tous avoir un impact sur les résultats. Cela nécessite un backtesting rigoureux pour évaluer la robustesse de ces paramètres sur différents marchés.
Cette stratégie pourrait être optimisée de plusieurs manières:
Ajoutez des filtres basés sur les événements d'éclatement pour mettre en pause le trading pendant un certain temps après les événements d'actualité majeurs, évitant ainsi de manquer des points d'entrée entraînant de grosses pertes
Effectuer des tests de robustesse des paramètres sur les différents marchés.
Essayez d'améliorer la logique d'entrée: introduisez des modèles d'apprentissage automatique pour identifier les tendances au lieu de simples jugements positifs/négatifs
Améliorer la méthodologie des arrêts de perte. Utiliser des arrêts de volatilité ou d'apprentissage automatique au lieu de simples arrêts de pourcentage
La logique actuelle repose principalement sur les arrêts, pourrait ajouter des sorties de profit à la hausse ou ciblées.
Il s'agit d'une stratégie de suivi de tendance multi-temporelle utilisant plusieurs dérivés de la moyenne mobile de Hull comme signaux d'entrée et de sortie avec des arrêts de trail pour verrouiller les bénéfices. Les principaux avantages comprennent le filtrage des faux signaux en utilisant plusieurs dérivés, des paramètres flexibles réglables, etc. Les risques à noter incluent les impacts des événements d'éclatement et du surajustement potentiel des paramètres. La stratégie pourrait être optimisée en ajoutant des filtres, en améliorant la robustesse des paramètres, en améliorant la logique d'entrée / sortie, etc. pour en faire un système de trading automatisé plus fiable.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="Derivative Based Strategy", shorttitle="DER", currency="USD", calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=1000) len = input(1, minval=1, title="Derivatives Length") sm = input(4, minval=1, title="HMA Length") longTrailPerc=input(title="Trail Long Loss %", type=float,minval=0.0,step=0.1,defval=25)*0.01 shortTrailPerc=input(title="Trail Short Loss %",type=float,minval=0.0,step=0.1,defval=25)*0.01 longStopPrice=0.0 shortStopPrice=0.0 src = input(ohlc4, title="Source") hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm))) speed = (hullma-hullma[len])/len accel = (speed-speed[len])/len jerk = (accel-accel[len])/len jounce = (jerk-jerk[len])/len plot(speed, color=green) plot(accel, color=purple) plot(jerk, color=red) plot(jounce, color=blue) // hline(0, linestyle=solid, color=black) if accel>0 and jerk>0 and jounce>0// and strategy.opentrades==0 strategy.entry("openlong", strategy.long) if accel<0 and jerk<0 and jounce<0// and strategy.opentrades==0 strategy.entry("openshort",strategy.short) speed_profit = (strategy.openprofit-strategy.openprofit[1])/len accel_profit = (speed_profit-speed_profit[1])/len jerk_profit = (accel_profit-accel_profit[1])/len longStopPrice:=if(strategy.position_size>0) stopValue=ohlc4*(1-longTrailPerc) max(stopValue,longStopPrice[1]) else 0 shortStopPrice:=if(strategy.position_size<0) stopValue=ohlc4*(1+shortTrailPerc) min(stopValue,shortStopPrice[1]) else 999999 if(strategy.position_size>0) strategy.exit(id="closelong",stop=longStopPrice) if(strategy.position_size<0) strategy.exit(id="closeshort",stop=shortStopPrice)