В процессе загрузки ресурсов... загрузка...

Динамическая стратегия Bollinger Bands для получения прибыли

Автор:Чао Чжан, Дата: 2024-05-24 17:54:47
Тэги:SMA

img

Обзор

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

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

  1. Расчет скользящей средней и стандартного отклонения: Для расчета скользящей средней цены закрытия (базы) используйте простую скользящую среднюю (SMA), а затем вычислите стандартное отклонение (dev) цены закрытия относительно скользящей средней.
  2. Вычислите верхнюю и нижнюю полосы: верхняя полоса - основа + дев * мультипликатор, а нижняя полоса - основа - дев * мультипликатор, где мультипликатор - кратный амплитуде волатильности.
  3. Создание торговых сигналов: когда цена закрытия пересекает нижний диапазон, а текущее закрытие меньше, чем открытие, генерируется длинный сигнал; когда цена закрытия пересекает нижний диапазон, а текущее закрытие больше, чем открытие, генерируется короткий сигнал.
  4. Динамическая прибыль: после открытия позиции вычисляется цена прибыли на основе входной цены и процента прибыли. Закрывается позиция, когда цена достигает уровня прибыли.
  5. Визуализация: на графике изображены полосы Боллинджера, скользящая средняя и торговые сигналы.

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

  1. Простая и эффективная: логика стратегии ясна и использует только один технический показатель, что облегчает понимание и реализацию.
  2. Широкое применение: полосы Боллинджера имеют универсальное применение и могут использоваться для различных торговых инструментов и рынков.
  3. Динамическая прибыль: По сравнению с фиксированной прибылью, динамическая прибыль может максимизировать прибыль от выигрыша сделок при одновременном контроле риска.
  4. Эффективно улавливать тенденции: на трендовых рынках, после того как цена достигает верхней или нижней полосы, она обычно продолжает двигаться в первоначальном направлении в течение некоторого времени.

Стратегические риски

  1. Плохая производительность на рыночных рынках: когда рынок находится в условиях больших колебаний и цены неоднократно прорываются через полосы Боллинджера, стратегия может генерировать частые торговые сигналы, что приводит к чрезмерной торговле и увеличению затрат на транзакции.
  2. Глубокие ретриксы на рынках с тенденциями: если тенденция длится длительное время и цены отклоняются от скользящей средней в течение длительного периода, стратегия идет против тенденции, потенциально ведущей к глубоким ретриксам.
  3. Сложность в выборе параметров: параметры полос Боллинджера (такие как длина и мультипликатор) оказывают значительное влияние на эффективность стратегии, но универсально оптимальных параметров не существует.

Направления оптимизации стратегии

  1. Включите анализ трендов: добавьте к стратегии индикаторы идентификации трендов (например, скользящие средние значения).
  2. Оптимизировать получение прибыли и остановку убытков: динамически корректировать получение прибыли и остановку убытков на основе показателей волатильности, таких как ATR, для достижения лучшего соотношения риск-вознаграждение.
  3. Комбинация нескольких факторов: рассмотреть возможность комбинирования полос Боллинджера с другими техническими индикаторами (такими как RSI, MACD и т.д.) для повышения точности сигналов и уменьшения ложных сигналов.
  4. Фундаментальная фильтрация: после генерации торговых сигналов используйте фундаментальные данные (такие как финансовые отчеты, отраслевые данные и т. д.) для вторичного подтверждения для повышения надежности стратегии.

Резюме

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


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Future Price Prediction", overlay=true)

// Ayarlar
length = input.int(14, "Length")
mult = input.float(2.0, "Multiplier")
showBands = input.bool(true, "Show Bands")
takeProfitPercentage = 1.0

// Ortalama ve Standart Sapma Hesaplamaları
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)

// Üst ve Alt Bantlar
upper = basis + dev
lower = basis - dev

// Grafikte Gösterim
plot(basis, color=color.blue, linewidth=2, title="Basis")
plot(showBands ? upper : na, color=color.red, linewidth=1, title="Upper Band")
plot(showBands ? lower : na, color=color.green, linewidth=1, title="Lower Band")

// Al-Sat Sinyalleri
longCondition = ta.crossover(close[1], lower[1]) and close[1] < open[1]
shortCondition = ta.crossunder(close[1], upper[1]) and close[1] > open[1]

// Kar al seviyeleri
float longTakeProfit = na
float shortTakeProfit = na

if longCondition
    longTakeProfit := close * (1 + takeProfitPercentage / 100)
if shortCondition
    shortTakeProfit := close * (1 - takeProfitPercentage / 100)

// Strateji Giriş ve Çıkış
if longCondition
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit", from_entry="Buy", limit=longTakeProfit)

if shortCondition
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit", from_entry="Sell", limit=shortTakeProfit)

// Al-Sat Sinyalleri Grafikte Gösterim
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Bilgi Tablosu
var table data = table.new(position.bottom_right, 2, 2, frame_color=color.black, frame_width=1)
if barstate.islast
    table.cell(data, 0, 0, "Current Price", text_color=color.white)
    table.cell(data, 1, 0, str.tostring(close))
    table.cell(data, 0, 1, "Predicted Basis", text_color=color.white)
    table.cell(data, 1, 1, str.tostring(basis))


Связанные

Больше