
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.
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.
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.
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.
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.
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.
/*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)