Адаптивная стратегия торговли на основе индикаторов импульса

Автор:Чао Чжан, Дата: 2024-01-05 11:43:25
Тэги:

img

Обзор

Эта стратегия - адаптивная стратегия торговли акциями, основанная на индикаторах импульса. Она объединяет полосы Боллинджера, каналы Келтнера и индикатор ценового сжатия для достижения суждения о тренде, определения точки прорыва и выхода стоп-лосса для автоматизированной торговли.

Принцип стратегии

Основой этой стратегии является построение ценового канала через полосы Боллинджера и каналы Келтнера и выявление торговых сигналов, когда цена проходит через канал. Он займет длинную позицию, когда цена пройдет через канал, и займет короткую позицию, когда цена пройдет через канал. Кроме того, когда цена сжимается в канале, стратегия определит направление операции на основе положительного и отрицательного значения индикатора сжатия цены.

В частности, полосы Боллинджера рассчитывают стандартное отклонение цены для изображения верхней и нижней рельсы; Keltner Channels изображает верхнюю и нижнюю рельсы на основе средней цены ± среднего диапазона волатильности. Когда происходит слияние каналов между ними, считается, что рынок вступает в консолидацию в ожидании следующего прорыва. Индикатор сжатия цены отражает, сжимается ли цена между двумя каналами. Стратегия определяет направление рынка на основе положительного и отрицательного значения индикатора сжатия.

В целом, эта стратегия включает в себя множество индикаторов для оценки движения цен и формирует четкую долгосрочную и короткосрочную логику, которая может эффективно отфильтровывать ложные прорывы и выявлять высоковероятные торговые возможности.

Преимущества стратегии

  1. Интегрирует несколько показателей с сильной способностью судить.

  2. Сжатие разницы индикатора для определения, уменьшения ложного прорыва.

  3. Адаптивный канал стоп-лосса, эффективно управляет рисками. Канал служит позицией стоп-лосса, которая может автоматически корректироваться на основе колебаний рынка для снижения потерь.

  4. Простые настройки параметров, подходящие для автоматизации.

Риски стратегии

  1. Частые длинные-короткие переключения, когда рынок резко колеблется, что приводит к увеличению количества сделок.

  2. Неправильные параметры индикатора могут лишить хороших торговых возможностей. Требуется достаточное тестирование и оптимизация, чтобы найти оптимальные параметры.

  3. Применяется только для акций с четким направлением, не подходит для чрезвычайно волатильных рынков.

Руководство по оптимизации

  1. Увеличьте модуль управления позицией, чтобы оптимизировать эффективность использования капитала.

  2. Увеличить модель машинного обучения для динамической корректировки параметров показателей, позволяя показателям автоматически адаптироваться к различным циклам и различным запасам.

  3. Улучшить стратегию стоп-лосса, введя больше вспомогательных индикаторов для определения времени стоп-лосса.

Заключение

Эта стратегия объединяет полосы Боллинджера, каналы Келтнера и индикатор ценового сжатия, чтобы сформировать четкую логику для системы суждения и контроля рисков. Она сочетает в себе суждение о тренде и операции с выходом, может автоматически адаптироваться к рыночным условиям и идентифицировать высоковероятные торговые возможности. С дальнейшей оптимизацией параметров и улучшением вспомогательных условий эта стратегия может быть еще больше укреплена в важный инструмент для количественной торговли.


/*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")



Больше