Stratégie de trading quantitative efficace basée sur des modèles quantitatifs personnalisés


Date de création: 2023-12-22 13:14:33 Dernière modification: 2023-12-22 13:14:33
Copier: 0 Nombre de clics: 658
1
Suivre
1623
Abonnés

Stratégie de trading quantitative efficace basée sur des modèles quantitatifs personnalisés

Aperçu

Cette stratégie est une stratégie de trading quantitatif hautement efficace, conçue sur mesure et basée sur un modèle quantitatif. Elle utilise le modèle Modélius Volume comme modèle de base, sur lequel elle est étendue et optimisée.

Principe de stratégie

Le cœur de la stratégie est le modèle Modélius Volume. Le modèle utilise les variations du prix et du volume des transactions pour identifier les opportunités de transactions quantitatives dans le marché. Plus précisément, la stratégie est combinée avec le prix de fermeture, le prix d’ouverture, le prix le plus élevé et le prix le plus bas, calculant la direction de la ligne K actuelle selon certaines règles.

La logique de base du trading est de faire plus lorsque l’indicateur passe de négatif à positif et de faire moins lorsque l’indicateur passe de positif à négatif. De plus, la stratégie met en place des arrêts de perte, des stop-loss et des stop-loss de suivi pour contrôler le risque.

Analyse des avantages

Le plus grand avantage de cette stratégie réside dans le fait qu’elle utilise le modèle de volume de Modelius pour identifier efficacement les opportunités de négociation quantifiées. Comparé aux indicateurs techniques traditionnels, le modèle est plus attentif aux variations du volume des transactions, ce qui est très pratique dans les transactions quantifiées à haute fréquence actuelles. De plus, les règles d’entrée de la stratégie sont plus strictes, ce qui permet d’éviter efficacement les opportunités de négociation quantifiées manquées tout en minimisant la probabilité de désordre.

Analyse des risques

Le principal risque de cette stratégie réside dans le fait que le modèle Modélius Volume lui-même ne peut pas éviter complètement le bruit. Lorsque des fluctuations anormales se produisent sur le marché, cela peut entraîner des signaux de trading erronés. De plus, les paramètres de la stratégie peuvent également avoir un impact sur les résultats finaux.

Les paramètres peuvent être ajustés de manière appropriée pour contrôler le risque et pour un jugement auxiliaire en combinaison avec d’autres indicateurs. En outre, il est nécessaire de régler raisonnablement les positions d’arrêt et d’arrêt.

Direction d’optimisation

Cette stratégie a aussi une certaine marge d’optimisation. Par exemple, on peut envisager de combiner des algorithmes d’apprentissage automatique pour optimiser dynamiquement les paramètres de réglage. Ou combiner des indicateurs tels que l’analyse de l’humeur pour améliorer l’exactitude des décisions.

Résumer

Dans l’ensemble, la stratégie utilise les avantages du modèle quantitatif Modélius Volume pour concevoir une stratégie de trading quantitatif plus opérationnelle. Les améliorations peuvent être optimisées par l’ajustement des paramètres, l’extension du modèle, l’apprentissage automatique, etc. pour obtenir de meilleurs rendements stables dans les transactions réelles.

Code source de la stratégie
/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=3
strategy(title="strategy modelius volume model ", shorttitle="mvm",overlay=true, calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false)

method = input(defval="ATR", options=["ATR", "Traditional", "Part of Price"], title="Renko Assignment Method")
methodvalue = input(defval=14.0, type=float, minval=0, title="Value")
pricesource = input(defval="Close", options=["Close", "Open / Close", "High / Low"], title="Price Source")
useClose = pricesource == "Close"
useOpenClose = pricesource == "Open / Close" or useClose
useTrueRange = input(defval="Auto", options=["Always", "Auto", "Never"], title="Use True Range instead of Volume")
isOscillating=input(defval=true, type=bool, title="Oscillating")
normalize=input(defval=false, type=bool, title="Normalize")
vol = useTrueRange == "Always" or (useTrueRange == "Auto" and na(volume))? tr : volume
op = useClose ? close : open
hi = useOpenClose ? close >= op ? close : op : high
lo = useOpenClose ? close <= op ? close : op : low

if method == "ATR"
    methodvalue := atr(round(methodvalue))
if method == "Part of Price"
    methodvalue := close/methodvalue

currclose = na
prevclose = nz(currclose[1])
prevhigh = prevclose + methodvalue
prevlow = prevclose - methodvalue
currclose := hi > prevhigh ? hi : lo < prevlow ? lo : prevclose

direction = na
direction := currclose > prevclose ? 1 : currclose < prevclose ? -1 : nz(direction[1])
directionHasChanged = change(direction) != 0
directionIsUp = direction > 0
directionIsDown = direction < 0

barcount = 1
barcount := not directionHasChanged and normalize ? barcount[1] + barcount : barcount
vol := not directionHasChanged ? vol[1] + vol : vol
res = barcount > 1 ? vol/barcount : vol


x=isOscillating and directionIsDown ? -res : res

TP = input(0) * 10
SL = input(0) * 10
TS = input(1) * 10
TO = input(3) * 10
CQ = 100

TPP = (TP > 0) ? TP : na
SLP = (SL > 0) ? SL : na
TSP = (TS > 0) ? TS : na
TOP = (TO > 0) ? TO : na

longCondition = crossover(x,0)
if (longCondition)
    strategy.entry("Long", strategy.long)


shortCondition = crossunder(x,0)
if (shortCondition)
    strategy.entry("Short", strategy.short)

strategy.exit("Close Short", "Short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)
strategy.exit("Close Long", "Long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)