Стратегия отслеживания трендов на основе полос Боллинджера и экспоненциальной скользящей средней

Автор:Чао Чжан, Дата: 2023-11-17 17:36:43
Тэги:

img

Обзор

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

Принципы

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

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

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

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

Стратегия, объединяющая полосы Боллинджера для направления тренда и EMA для управления стоп-лосом/прибылью, имеет следующие преимущества:

  1. Использование полос Боллинджера может эффективно определить направление тренда и быстро реагировать на прорывы.

  2. Стоп-лосс/приобретение прибыли на основе EMA может максимизировать блокировку прибыли при одновременном контроле рисков.

  3. Стратегия имеет несколько параметров, которые легко реализовать - только один для BB и один для EMA, очень просто.

  4. Он может быть широко применен к различным продуктам с сильной адаптивностью.

Риски и оптимизация

Стратегия также несет в себе некоторые риски:

  1. Прорыв через верхние/нижние полосы BB не может полностью избежать риска ложных прорывов.

  2. Установка параметров EMA требует тщательного тестирования в соответствии с конкретными продуктами. Слишком короткий период EMA может увеличить время остановки потери. Слишком длинный может снизить эффективность отслеживания.

  3. Необходимо избегать чрезмерной оптимизации. Слишком много комбинаций параметров BB и EMA может привести к перенастройке.

Для решения рисков и направлений оптимизации можно рассмотреть следующее:

  1. Добавьте объем или MACD и т.д. для фильтрации ложных сигналов прорыва.

  2. Оптимизировать период EMA путем тестирования, чтобы найти наиболее подходящий параметр для конкретных продуктов.

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

  4. Подумайте о использовании RSI и т.д. для определения корректировки позиции в среднесрочной тенденции.

Резюме

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


/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © zxcv55602
//@version=4
strategy(shorttitle=" BB+EMA", title="Bollinger Bands", overlay=true)
date1 = input(title="Start Date", type=input.time, defval=timestamp("2020-01-01T00:00:00"))
date2 = input(title="Stop Date", type=input.time, defval=timestamp("2030-01-01T00:00:00"))
length = input(40, minval=1)
src = input(close, title="Source")
mult = input(2.0,title="StdDev",step=0.1)
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
//offset = input(0, "Offset", minval = -500, maxval = 500)
offset=0
stopcon=input(title="stopcon/lot", type=input.bool, defval=true)
lot1=input(title="lot",defval=1)
stoploss=input(title="stopcon",defval=1000)
emacon=input(title="emacon", type=input.bool, defval=true)
ema_value=input(title="value",defval=30, minval=2,step=1)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=color.new(color.blue,50), offset = offset)
p2 = plot(lower, "Lower", color=color.new(color.blue,50), offset = offset)
ema1=ema(close,ema_value)
plot(ema1, "SMA", color=#2962FF)
period() => true
//-----------
if period()
    if strategy.opentrades==0 and ema1<upper
        if close>upper
            lot_L=stoploss/((close-lower)/2)
            strategy.entry("OP_L",strategy.long,qty=stopcon==true?lot_L:lot1,stop=emacon==true?max(basis,ema1):basis)
    if strategy.opentrades==0 and ema1>lower
        if close<lower
            lot_S=stoploss/((upper-close)/2)
            strategy.entry("OP_S",strategy.short,qty=stopcon==true?lot_S:lot1,stop=emacon==true?min(basis,ema1):basis)
    if strategy.position_size>0
        strategy.exit("OP_L",stop=emacon==true?max(basis,ema1):basis,comment="exit_L")
    if strategy.position_size<0
        strategy.exit("OP_S",stop=emacon==true?min(basis,ema1):basis,comment="exit_S")

Больше