
La estrategia es una estrategia de comercio cuantitativo altamente eficiente y personalizada basada en modelos cuantitativos. La estrategia utiliza el Modelo de Volumen de Modélius como modelo básico y se expande y optimiza sobre esta base. La estrategia puede capturar oportunidades de comercio cuantitativo en el mercado y obtener ganancias estables.
El núcleo de esta estrategia es el modelo de volumen de Modelius. El modelo utiliza los cambios en el precio y el volumen de transacciones para identificar oportunidades de transacciones cuantitativas en el mercado. En concreto, la estrategia se combina con el precio de cierre, el precio de apertura, el precio más alto y el precio más bajo para calcular la dirección de la línea K actual de acuerdo con ciertas reglas.
La lógica básica de la negociación es hacer más cuando el indicador se rompe de negativo a positivo; hacer un descuento cuando el indicador se rompe de positivo a negativo. Además, la estrategia también establece un stop loss, un stop stop y un stop loss de seguimiento para controlar el riesgo.
La mayor ventaja de esta estrategia es que utiliza el modelo de volumen de Modelius para identificar eficazmente las oportunidades de comercio cuantitativo. En comparación con los indicadores técnicos tradicionales, el modelo se centra más en los cambios en el volumen de las transacciones, lo que es muy práctico en las transacciones cuantitativas de alta frecuencia actuales. Además, las reglas de entrada de la estrategia son más estrictas, lo que permite evitar efectivamente las oportunidades de comercio cuantitativo perdidas y al mismo tiempo reducir al máximo la probabilidad de desorden.
El principal riesgo de esta estrategia reside en que el modelo de volumen de Modelius no puede evitar el ruido por sí solo. Cuando hay una fluctuación anormal en el mercado, puede causar errores en las señales de negociación. Además, la configuración de los parámetros en la estrategia también puede afectar los resultados finales.
Para controlar el riesgo, los parámetros se pueden ajustar adecuadamente y en combinación con otros indicadores para tomar decisiones auxiliares. Además, también es necesario establecer razonablemente los puntos de parada y parada.
La estrategia también tiene cierto espacio de optimización. Por ejemplo, se puede considerar la combinación de algoritmos de aprendizaje automático para optimizar dinámicamente la configuración de los parámetros. O se puede combinar con indicadores como el análisis de sentimientos para mejorar la precisión de la toma de decisiones. Además, se puede estudiar la correlación entre diferentes variedades para crear modelos de arbitraje multivariados.
En general, la estrategia aprovecha las ventajas de los modelos cuantitativos de Volume de Modelius para diseñar una estrategia de comercio cuantitativo de gran capacidad operativa. Se puede optimizar y mejorar mediante ajustes de parámetros, extensión de modelos y aprendizaje automático, para obtener mejores ganancias estables en el comercio real.
/*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)