
Die Strategie ist eine effiziente Quantitative Trading-Strategie, die auf einem Quantitativen Modell basiert. Die Strategie verwendet das Modellius-Volumen-Modell als Basismodell und erweitert und optimiert auf dieser Basis. Die Strategie kann quantitative Trading-Gelegenheiten im Markt erfassen und stabile Gewinne erzielen.
Im Mittelpunkt der Strategie steht das Modellius-Volumen-Modell. Es nutzt die Veränderungen des Preises und des Handelsvolumens, um quantitative Handelsmöglichkeiten in den Märkten zu identifizieren. Insbesondere wird die Strategie in Kombination mit dem Close-Preis, dem Open-Preis, dem Höchstpreis und dem Tiefpreis verwendet, um die Richtung der aktuellen K-Linie nach bestimmten Regeln zu berechnen.
Die grundlegende Handelslogik besteht darin, wenn der Indikator von Negativ zu Positiv bricht, zu handeln; wenn der Indikator von Positiv zu Negativ bricht, zu verlieren. Darüber hinaus setzt die Strategie Stop Loss, Stop Stop und Tracking Stop Loss ein, um das Risiko zu kontrollieren.
Der größte Vorteil dieser Strategie besteht darin, dass sie die Möglichkeit nutzt, die Quantifizierungschancen effektiv zu identifizieren. Im Vergleich zu herkömmlichen technischen Indikatoren ist das Modell stärker auf die Veränderung der Transaktionsmengen ausgerichtet, was in den derzeitigen hochfrequenten Quantifizierungsgeschäften sehr praktisch ist. Darüber hinaus sind die Einstiegsregeln der Strategie strenger, wodurch die Wahrscheinlichkeit einer Unordnung vermieden und gleichzeitig die Quantifizierungschancen vermieden werden.
Das Hauptrisiko dieser Strategie besteht darin, dass das Modellius-Volumen-Modell selbst nicht vollständig auf Geräusche verzichten kann. Wenn ein Markt unüblich schwankt, kann dies zu falschen Handelssignalen führen. Außerdem können die Parameter-Einstellungen in der Strategie Auswirkungen auf die endgültigen Ergebnisse haben.
Um das Risiko zu kontrollieren, können die Parameter angepasst werden und in Kombination mit anderen Indikatoren unterstützt werden. Darüber hinaus müssen die Stop-Loss- und Stop-Stop-Positionen vernünftigerweise eingestellt werden.
Die Strategie bietet auch Optimierungsmöglichkeiten. Zum Beispiel kann man die Einstellung von Parametern in Kombination mit einem Machine-Learning-Algorithmus dynamisch optimieren. Oder man kann Indikatoren wie Emotion-Analyse in Verbindung bringen, um die Entscheidungsgenauigkeit zu verbessern.
Insgesamt nutzt die Strategie die Vorteile des Modellierungsmodells von Modelius Volume, um eine quantitative Handelsstrategie mit hoher Handhabbarkeit zu entwickeln. Die Optimierung kann durch Parameteranpassung, Modellvergrößerung und maschinelles Lernen optimiert werden, um bessere stabile Erträge im tatsächlichen Handel zu erzielen.
/*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)