Стратегия, основанная на полосах Боллинджера и следующая за трендом

Автор:Чао Чжан, Дата: 2024-01-18 16:37:56
Тэги:

img

Обзор

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

Логика стратегии

Стратегия состоит в основном из индикатора Bollinger Bands и скользящих средних.

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

ВДвижущиеся средниеПрименять быструю скользящую среднюю и медленную скользящую среднюю. Быстрая скользящая средняя имеет период 40 и медленная скользящая средняя имеет период 120. Когда быстрая MA пересекает медленную MA, это сигнал покупки. Когда быстрая MA пересекает ниже медленной MA, это сигнал продажи.

Основываясь на правилах вышеуказанных показателей, конкретные торговые сигналы этой стратегии:

Сигнал покупки: Закрытие цены проходит через средний диапазон и быстрое пересечение MA через медленное MA

Сигнал продажи: Закрытие ценовых перебоев ниже средней полосы и быстрое пересечение МА ниже медленного МА

Остановить потерю: ATR последующий стоп-лосс, цена стоп-лосса - текущая цена минус 4 раза ATR

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

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

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

Золотой крест и мертвый крест быстрых и медленных МА также являются широко используемыми методами определения тенденций.

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

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

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

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

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

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

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

  2. Корректировка параметров быстрого и медленного MA для лучшего соответствия конкретным инструментам торговли

  3. Добавление других вспомогательных показателей для комбинации для повышения стабильности стратегии

  4. Оптимизировать методы размещения позиций, увеличивать позиции в периоды тренда и уменьшать позиции в периоды диапазона

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

Заключение

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


/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 1m
basePeriod: 1m
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/
// © Robrecht99

//@version=5
strategy("Trend Following with Bollinger Bands", overlay=true, margin_long=100, margin_short=100, pyramiding=4)

// Bollinger Bands //

length = input.int(20, minval=1, group="Bollinger Bands Inputs")
src = input(close, title="Source", group="Bollinger Bands Inputs")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500, group="Bollinger Bands Inputs")
plot(basis, "Basis", color=color.orange, offset = offset)
p1 = plot(upper, "Upper", color=color.orange, offset = offset)
p2 = plot(lower, "Lower", color=color.orange, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(255, 0, 255, 95))

// Moving Averages //

len1 = input.int(40, minval=1, title="Length Fast MA", group="Moving Average Inputs")
len2 = input.int(120, minval=1, title="Length Slow MA", group="Moving Average Inputs")
src1 = input(close, title="Source Fast MA")
src2 = input(close, title="Source Slow MA")
maColorFast = input.color(color.new(color.red, 0), title = "Color Fast MA", group = "Moving Average Inputs", inline = "maFast")
maColorSlow = input.color(color.new(color.purple, 0), title = "Color Slow MA", group = "Moving Average Inputs", inline = "maSlow")
fast = ta.ema(src1, len1) 
slow = ta.ema(src2, len2)
plot(fast, color=maColorFast, title="Fast EMA")
plot(slow, color=maColorSlow, title="Slow EMA")

// ATR Inputs //
strategy.initial_capital = 50000

lengthATR = input.int(title="ATR Period", defval=14, minval=1, group="ATR Input")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Input")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (2 * atr))

// Buy and Sell Conditions //

entrycondition1 = ta.crossover(fast, slow)
entrycondition2 = fast > slow
sellcondition1 = ta.crossunder(fast, slow)
sellcondition2 = slow > fast

// Buy and Sell Signals //

if (close > basis and entrycondition2)
    strategy.entry("long", strategy.long, qty=amount)
    stoploss = close - atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2)
    strategy.close(id="long")

if (close < basis and sellcondition2)
    strategy.entry("short", strategy.short, qty=amount)
    stoploss = close + atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2)
    strategy.close(id="short")

Больше