Стратегия импульса на основе сжатия LazyBear

Автор:Чао ЧжанДата: 21-12-2023 14:22:49
Тэги:

img

Обзор

Основная идея этой стратегии основана на индикаторе Squeeze Momentum LazyBear для анализа сроков покупки и продажи. Он анализирует точки перегиба в тренде импульса, локализуя пики и дно как сигналы продажи и покупки соответственно. Поскольку это длинная стратегия, он также учитывает 50-периодный экспоненциальный скользящий средний для выявления восходящих тенденций. Если цена закрытия свечи выше 50EMA, а наклон 50EMA имеет тенденцию к росту, то сигнал покупки исполняется.

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

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

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

Чтобы отфильтровать ложные сигналы, стратегия также оценивает, стоит ли цена закрытия выше 50-дневной экспоненциальной скользящей средней и находится ли 50-дневная экспоненциальная скользящая средняя в восходящем наклоне.

Анализ преимуществ

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

  1. Комплексное применение полос Боллинджера, каналов Келтнера и индикаторов импульса для многомерного анализа и повышения точности.

  2. Зоны сжатия могут эффективно идентифицировать пики и дновые точки отклонений импульса и точно улавливать повороты.

  3. Фильтрация трендов, основанная на цене закрытия и 50-дневной EMA, позволяет избежать повторного открытия позиций во время консолидации.

  4. Сигналы, испускаемые только в зоны сжатия, уменьшают ложные сигналы и повышают уровень прибыльности.

  5. Большое пространство для оптимизации параметров позволяет проводить целенаправленные оптимизации с помощью периодов корректировки и т.д.

  6. Длинный и короткий сочетаются, учитывает большие тенденции цикла и интегрирует среднесрочные индикаторы, долгосрочное направление ясно.

Анализ рисков

Несмотря на то, что эта стратегия имеет несколько технических индикаторов, все еще существуют некоторые риски:

  1. Пропущенные возможности покупки/продажи при расхождении полос Боллинджера и каналов Келтнера.

  2. Большие убытки могут произойти во время бурных рыночных подъемов или падений.

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

  4. Склонность к корректировочным потерям во время бычьих и медвежьих переходов.

Чтобы избежать этих рисков, мы можем принять следующие меры:

  1. Оптимизировать параметры для синхронизации полос Боллинджера и каналов Келтнера как можно больше.

  2. Установите стоп-потерю для контроля одиночных потерь.

  3. Использовать эту стратегию в рамках стратегии портфеля в сочетании с другими стратегиями.

  4. Сократить позиции в соответствующем порядке на рынках с высокой волатильностью.

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

По-прежнему существует большое пространство для оптимизации этой стратегии, главным образом в следующих направлениях:

  1. Оптимизировать периоды полос Боллинджера и каналов Келтнера, чтобы максимально синхронизировать их.

  2. Испытайте различные множители, чтобы найти оптимальные комбинации параметров.

  3. Попробуйте ввести другие индикаторы для подтверждения, такие как RSI и т.д.

  4. Основываясь на моделях Вэнь Хуа Пять цветовых линий, выборочно используйте эту стратегию в зависимости от этапов рынка.

  5. Используйте машинное обучение и т.д. для динамической оптимизации параметров.

  6. Проверка на различных монетах, чтобы найти наиболее подходящие товары.

  7. Исследуйте эффективность этой стратегии в более длительные периоды времени (ежедневно, еженедельно и т.д.).

Заключение

LazyBear Squeeze Momentum Strategy широко использует различные технические индикаторы, точно определяя изменения импульса для торговли во время сжатых зон, избегая повторного открытия позиций на не трендовых рынках. Он систематически определяет количественно определяемые правила покупки и продажи, отлично работает в бэк-тестах. Благодаря оптимизации параметров, внедрению новых показателей суждения и т. Д. Эта стратегия имеет большое пространство для улучшений и заслуживает глубокого исследования и применения квантовыми трейдерами.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

//
// @author LazyBear 
// List of all my indicators: https://www.tradingview.com/v/4IneGo8h/
//
initialBalance = 8000

strategy("Crypto momentum strategy", overlay=false)


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)", type=input.bool)

// Calculate BB
source = close
basis = sma(source, length)
ema = ema(source, 50)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

// Calculate KC
ma = sma(source, lengthKC)
range = useTrueRange ? tr : high - low
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn = lowerBB > lowerKC and upperBB < upperKC
sqzOff = lowerBB < lowerKC and upperBB > upperKC
noSqz = sqzOn == false and sqzOff == false

val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)), sma(close, lengthKC)), lengthKC, 0)

slope = (val - val[2])
emaSlope = (ema - ema[1])


bcolor = iff(slope > 0, color.lime, color.red)
scolor = noSqz ? color.green : sqzOn ? color.black : color.green
squeeze = (noSqz ? 0 : sqzOn ? 1 : 0)

plot(val, color=color.gray, style=plot.style_line, linewidth=1, title="momentum")
plot(slope, color=bcolor, style=plot.style_circles, linewidth=2, title="slope")
plot(0, color=scolor, style=plot.style_line, linewidth=2, title="squeeze-zero")

co = crossover(slope / abs(slope), 0)
cu = crossunder(slope / abs(slope), 0)

if co and source > ema and emaSlope > 0
    strategy.entry("long", strategy.long, comment="long")
if cu
    strategy.close("long")


Больше