Les ressources ont été chargées... Je charge...

Stratégie de négociation basée sur des produits dérivés

Auteur:ChaoZhang est là., Date: 2024-01-12 11h06 et 28 min
Les étiquettes:

img

Résumé

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 logique de la stratégie

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.

Analyse des avantages

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.

Analyse des risques

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.

Directions d'optimisation

Cette stratégie pourrait être optimisée de plusieurs manières:

  1. 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

  2. Effectuer des tests de robustesse des paramètres sur les différents marchés.

  3. 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

  4. 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

  5. La logique actuelle repose principalement sur les arrêts, pourrait ajouter des sorties de profit à la hausse ou ciblées.

Conclusion

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)


Plus de