
Стратегия является высокоэффективной количественной торговой стратегией, разработанной на основе количественной модели. Стратегия использует модель Modelius Volume в качестве базовой модели, и на ее основе проводится расширение и оптимизация. Стратегия может захватить количественные торговые возможности на рынке и обеспечить стабильную прибыль.
В основе этой стратегии лежит модель Modelis Volume. Эта модель использует изменения цены, объема сделок для выявления количественных торговых возможностей на рынке. В частности, стратегия использует в сочетании с ценой закрытия, ценой открытия, ценой максимума и ценой минимума, чтобы рассчитать направление текущей K-линии в соответствии с определенными правилами.
Основная логика торговли заключается в том, чтобы делать больше, когда индикатор переходит от отрицательного к положительному; когда индикатор переходит от положительного к отрицательному, делать нулевой. Кроме того, стратегия также устанавливает стоп-лосс, стоп-стоп и стоп-лосс для контроля риска.
Наибольшее преимущество этой стратегии заключается в том, что модель Modelius Volume позволяет эффективно идентифицировать возможности для количественной торговли. По сравнению с традиционными техническими показателями, модель уделяет больше внимания изменениям в объеме торгов, что очень практично в современных высокочастотных количественных сделках. Кроме того, правила входа в стратегию являются более строгими, что позволяет эффективно избежать упущенных возможностей для количественной торговли и одновременно минимизировать вероятность несанкционированности.
Основной риск этой стратегии заключается в том, что модель Modelius Volume сама по себе не может полностью избежать шума. Когда на рынке происходят аномальные колебания, это может привести к ошибке торговых сигналов. Кроме того, параметры в стратегии также могут повлиять на конечные результаты.
Для управления риском, можно соответствующим образом скорректировать параметры, и в сочетании с другими показателями для вспомогательного суждения. Кроме того, также необходимо разумно установить стоп-потери, стоп-позиции.
В этой стратегии также есть определенное пространство для оптимизации. Например, можно рассмотреть возможность динамического настройки параметров оптимизации в сочетании с алгоритмами машинного обучения. Или в сочетании с такими показателями, как эмоциональный анализ, для повышения точности принятия решений.
В целом, эта стратегия использует преимущества количественной модели Modelius Volume, чтобы разработать стратегию количественной торговли с высокой работоспособностью. Она может быть оптимизирована путем корректировки параметров, расширения модели, машинного обучения и т. Д., Чтобы получить лучшую стабильную прибыль в реальной торговле.
/*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)