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