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

MA BB SMA SD
Дата создания: 2024-12-13 11:20:13 Последнее изменение: 2024-12-13 11:20:13
Копировать: 3 Количество просмотров: 123
1
Подписаться
1166
Подписчики

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

Обзор

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

Стратегический принцип

Ключевой принцип стратегии основан на статистических особенностях Брин-пояса: верхняя треугольная стандартная разница, которая означает, что вероятность того, что цена прорвется вверх, составляет только 0,15% при нормальном распределении, поэтому, когда происходит прорыв, это часто указывает на значительное формирование тенденции. Средняя треугольная использует 100-дневную подвижную среднюю, которая достаточно длинна, чтобы эффективно фильтровать краткосрочный рыночный шум. Нижняя треугольная использует 1-кратную стандартную разницу в качестве стоп-линии, которая является относительно консервативной и помогает своевременно остановить убытки.

Стратегические преимущества

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

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

  1. Риск ложного прорыва: рынок может быстро отступить после кратковременного прорыва, что приводит к ложным сигналам.
  2. Большие отступления: Большие отступления могут возникнуть в условиях резкой волатильности рынка.
  3. Риск отставания: 100-дневная средняя линия имеет определенную отсталость и может пропустить некоторые быстрые события.
  4. Рыночная зависимость: в условиях нестабильности рынка может происходить частое вхождение и выхождение, что приводит к избыточным расходам на торговлю.

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

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

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MounirTrades007

// @version=6
strategy("Bollinger Bands", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=200)

// Get user input
var g_bb        = "Bollinger Band Settings"
upperBandSD     = input.float(title="Upper Band Std Dev", defval=3.0, tooltip="Upper band's standard deviation multiplier", group=g_bb)
lowerBandSD     = input.float(title="Lower Band Std Dev", defval=1.0, tooltip="Lower band's standard deviation multiplier", group=g_bb)
maPeriod        = input.int(title="Middle Band MA Length", defval=100, tooltip="Middle band's SMA period length", group=g_bb)
var g_tester    = "Backtester Settings"
drawTester      = input.bool(title="Draw Backtester", defval=true, group=g_tester, tooltip="Turn on/off inbuilt backtester display")

// Get Bollinger Bands
[bbIgnore1, bbHigh, bbIgnore2] = ta.bb(close, maPeriod, upperBandSD)
[bbMid, bbIgnore3, bbLow]      = ta.bb(close, maPeriod, lowerBandSD)

// Prepare trade persistent variables
drawEntry   = false
drawExit    = false

// Detect bollinger breakout
if close > bbHigh and barstate.isconfirmed and strategy.position_size == 0
    drawEntry := true
    strategy.entry(id="Trade", direction=strategy.long)
    alert("Bollinger Breakout Detected for " + syminfo.ticker, alert.freq_once_per_bar_close)

// Detect bollinger sell signal
if close < bbLow and barstate.isconfirmed and strategy.position_size != 0
    drawExit := true
    strategy.close(id="Trade")
    alert("Bollinger Exit detected for " + syminfo.ticker, alert.freq_once_per_bar_close)

// Draw bollinger bands
plot(bbMid, color=color.blue, title="Middle SMA")
plot(bbHigh, color=color.green, title="Upper Band")
plot(bbLow, color=color.red, title="Lower Band")

// Draw signals
plotshape(drawEntry, style=shape.triangleup, color=color.green, location=location.belowbar, size=size.normal, title="Buy Signal")
plotshape(drawExit, style=shape.xcross, color=color.red, location=location.belowbar, size=size.normal, title="Sell Signal")

// // =============================================================================
// // START BACKTEST CODE
// // =============================================================================

// // Prepare stats table
// var table testTable = table.new(position.top_right, 2, 2, border_width=1)
// f_fillCell(_table, _column, _row, _title, _value, _bgcolor, _txtcolor) =>
//     _cellText = _title + "\n" + _value
//     table.cell(_table, _column, _row, _cellText, bgcolor=_bgcolor, text_color=_txtcolor)

// // Draw stats table
// var bgcolor = color.black
// if barstate.islastconfirmedhistory
//     if drawTester
//         dollarReturn = strategy.equity - strategy.initial_capital
//         f_fillCell(testTable, 0, 0, "Total Trades:", str.tostring(strategy.closedtrades), bgcolor, color.white)
//         f_fillCell(testTable, 0, 1, "Win Rate:", str.tostring(strategy.wintrades / strategy.closedtrades * 100, "##.##") + "%", bgcolor, color.white)
//         f_fillCell(testTable, 1, 0, "Equity:", "$" + str.tostring(strategy.equity, "###,###.##"), bgcolor, color.white)
//         f_fillCell(testTable, 1, 1, "Return:", str.tostring((strategy.netprofit / strategy.initial_capital) * 100, "##.##") + "%", dollarReturn > 0 ? color.green : color.red, color.white)

// // =============================================================================
// // END BACKTEST CODE
// // =============================================================================