
Стратегия является самостоятельной стратегией торговли акциями, основанной на динамических показателях. Она объединяет ленты Брин, каналы Келтнера и индикаторы ценового сжатия, обеспечивает полностью автоматизированную торговлю для определения тенденций, идентификации точек прорыва и прекращения убытков.
Стратегия основана на построении ценового канала с помощью поясов Брин и каналов Келтнера, чтобы идентифицировать прорыв канала, который формирует торговый сигнал. Принимаются позитивные действия, когда цена прорывает канал снизу вверх; принимаются нисходящие действия, когда цена прорывает канал сверху вниз. Кроме того, стратегия использует индикатор ценовой компрессии, чтобы определить, когда она находится внутри ценового канала, и принимает соответствующие действия в зависимости от положительного или отрицательного значения индикатора.
В частности, стандартная разница в ценах по Брин-полосе вычисляется, чтобы выйти вверх и вниз; канал Келтнера вычисляется, чтобы выйти вниз, вычисляя среднее значение цены плюс средний диапазон колебаний. Когда оба канала fdopen, считается, что ситуация вступает в свертывание и ждет следующего прорыва.
В целом, эта стратегия объединяет в себе множество показателей для определения движения цен, формируя четкую долгосрочную логику, которая может эффективно отфильтровывать ложные прорывы и идентифицировать высоковероятные торговые возможности.
Интеграция нескольких показателей, высокая оценка. Комбинация показателей взаимодополняет друг друга, что может повысить точность идентификации.
Определение разрыва в сжатом показателе, уменьшение ложных прорывов. Разрыв в показателе в качестве вспомогательного условия, чтобы избежать бесполезной торговли.
Приспосабливаясь к остановке каналов, эффективно контролируйте риск. Канал, как место остановки, может автоматически корректироваться в зависимости от колебаний рынка, чтобы уменьшить убытки.
Простая настройка параметров, подходит для автоматизации. Есть только несколько основных параметров, которые легко тестировать и оптимизировать, легко интегрировать в автоматизированную торговую систему.
Частое преобразование в несколько позиций приводит к увеличению количества сделок. При колебаниях рынка может привести к частому открытию и закрытию позиций.
Неправильные параметры показателя могут привести к упущенным возможностям для обучения. Необходимо тщательно тестировать и оптимизировать, чтобы найти оптимальные параметры.
Подходит только для цен на акции с четким направлением, не подходит для рынков с сильными колебаниями.
Добавление модуля контроля позиций, оптимизация эффективности использования средств. Например, распределение средств в соответствии с прорывной силой и т. Д.
Добавление модели машинного обучения для динамической корректировки параметров индикатора. Пусть параметры индикатора автоматически адаптируются к различным периодам и различным акциям.
Улучшение стратегии остановки убытков, введение дополнительных показателей для определения времени остановки убытков. После улучшения можно уменьшить количество остановок убытков в ключевых точках.
Стратегия объединяет в себе пояса Бринга, каналы Келтнера и индикаторы ценового сжатия, формируя четкую логику суждения и систему управления рисками. Она объединяет тенденционное суждение и прорывную операцию, которая может автоматически адаптироваться к ситуации и идентифицировать высоковероятные торговые возможности.
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © juliopetronilo
//@version=4
strategy("DMI/ADX/Squeeze Robot", shorttitle="DMI/ADX/SQZ", overlay=true)
// Squeeze Momentum Indicator
length = input(20, title="BB Length")
mult = input(2.0, title="BB MultFactor")
lengthKC = input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = input(true, title="Use TrueRange (KC)")
source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev
ma = sma(source, lengthKC)
rangeKC = useTrueRange ? tr : (high - low)
rangema = sma(rangeKC, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC
sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz = not (sqzOn or sqzOff)
val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)), sma(close, lengthKC)), lengthKC, 0)
// DMI/ADX Plot
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
keyLevel = input(23, title="Key Level for ADX")
dirmov(len) =>
up = change(high)
down = -change(low)
truerange = rma(tr, len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx_val = abs(plus - minus) / (sum == 0 ? 1 : sum) * 100
[adx_val, plus, minus]
[sig, up, down] = adx(dilen, adxlen)
// Estrategia de Trading
strategy.entry("Buy", strategy.long, when=sqzOn and crossover(up, down) and crossover(val, 0))
strategy.entry("Sell", strategy.short, when=sqzOn and crossunder(up, down) and crossunder(val, 0))
strategy.close("Buy", when=sqzOff)
strategy.close("Sell", when=sqzOff)
// Plot de los indicadores
plot(val, color=color.blue, style=plot.style_histogram, linewidth=4)
plot(0, color=noSqz ? color.blue : sqzOn ? color.black : color.rgb(236, 238, 247), style=plot.style_cross, linewidth=2)
plot(up, color=color.blue, title="+DI")
plot(down, color=color.gray, title="-DI")
plot(keyLevel, color=color.white, title="Key Level")