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


Дата создания: 2023-11-17 17:36:43 Последнее изменение: 2023-11-17 17:36:43
Копировать: 0 Количество просмотров: 647
1
Подписаться
1617
Подписчики

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

Обзор

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

Первоначальный анализ

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

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

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

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

Эта стратегия, в сочетании с определением направления тренда по буринской полосе и управлением стоп-стопами по EMA, имеет следующие преимущества:

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

  2. Стоп-стоп, основанный на EMA, позволяет максимально блокировать прибыль и контролировать риск, гарантируя прибыль.

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

  4. Широко применяется в различных сортах, обладает высокой адаптивностью.

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

В этой стратегии также есть некоторые риски, о которых следует помнить:

  1. Брин приводит к тому, что прорыв вниз не может полностью избежать риска, связанного с ложным прорывом. Можно использовать фильтрующие сигналы для таких показателей, как объем торгов.

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

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

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

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

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

  3. Постарайтесь, насколько это возможно, сохранить стабильность параметров Брин-полосы и 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")