Стратегия пересечения трендов с несколькими индикаторами. Торговая система «Бычья полоса поддержки»

SMA BMSB EMA
Дата создания: 2024-12-27 14:35:53 Последнее изменение: 2024-12-27 14:35:53
Копировать: 1 Количество просмотров: 449
1
Подписаться
1617
Подписчики

Стратегия пересечения трендов с несколькими индикаторами. Торговая система «Бычья полоса поддержки»

Обзор

Стратегия является системой торговли, которая отслеживает тенденции, основанные на поддержке рынка быков. Она использует в основном 20-недельный простой перемещающийся средний (SMA) и 21-недельный индексный перемещающийся средний (EMA) для определения направления тенденции рынка и принятия торговых решений.

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

Основная логика стратегии заключается в том, чтобы оценивать рыночные тенденции, отслеживая взаимосвязь между 20-недельной SMA и 21-недельной EMA. Когда краткосрочная SMA с нижней стороны прорывает долгосрочную SMA с нижней стороны, это указывает на то, что рынок может сформировать восходящую тенденцию, и система открывает позицию.

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

  1. Тренд-наблюдение: средний пересекающийся тренд на уровне круговой линии эффективно фильтрует краткосрочный рыночный шум и захватывает трендовые возможности в среднесрочной и долгосрочной перспективе
  2. Управление рисками разумно: использование динамических скользящих средних в качестве ориентира для остановки убытков позволяет вовремя выйти из игры при рыночных изменениях
  3. Наука параметров настройки: параметры на 20 и 21 неделе гарантируют стабильность сигнала и не допускают чрезмерной задержки
  4. Ясность логики исполнения: входные и выходные сигналы четкие, без субъективных суждений
  5. Гибкость в управлении капиталом: поддержка открытия позиций в соответствии с пропорцией чистой стоимости счета и динамическая корректировка размеров позиций

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

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

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

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

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

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

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

// This source code is subject to the terms of the Mozilla Public License 2.0
// © zkdev

//@version=6
strategy(title='Demo GPT - Bull Market Support Band', 
     overlay=true, 
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, 
     commission_type=strategy.commission.percent, 
     commission_value=0.1, 
     slippage=3)

// -------------------------------------------------------------------------
// Compile-time timestamp constants for default date range
// (2018-01-01 00:00:00 UTC -> 1514764800000
//  2069-12-31 23:59:59 UTC -> 3155759999000)
// -------------------------------------------------------------------------
const int defaultFromDate = 1514764800000
const int defaultToDate   = 3155759999000

// -------------------------------------------------------------------------
// Inputs: date range
// -------------------------------------------------------------------------
fromDate = input(title='Start Date', defval=defaultFromDate)
toDate   = input(title='End Date',   defval=defaultToDate)

// -------------------------------------------------------------------------
// Indicator settings & calculations
// -------------------------------------------------------------------------
smaLength = 20
emaLength = 21

source = close
sma    = ta.sma(source, smaLength)
ema    = ta.ema(source, emaLength)

// -------------------------------------------------------------------------
// Fetch weekly SMA & EMA
// -------------------------------------------------------------------------
outSma = request.security(syminfo.tickerid, 'W', sma, gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off)
outEma = request.security(syminfo.tickerid, 'W', ema, gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off)

// -------------------------------------------------------------------------
// Plot visuals (20w SMA, 21w EMA, fill in between)
// -------------------------------------------------------------------------
smaPlot = plot(outSma, color=color.new(color.red,   0), title='20w SMA')
emaPlot = plot(outEma, color=color.new(color.green, 0), title='21w EMA')
fill(smaPlot, emaPlot, color=color.new(color.orange, 75), fillgaps=true)

// -------------------------------------------------------------------------
// We evaluate crossover/crossunder on *every bar* and store the result
// -------------------------------------------------------------------------
crossUp   = ta.crossover(outSma, outEma)
crossDown = ta.crossunder(outSma, outEma)

// -------------------------------------------------------------------------
// Trade logic: only operate within chosen date range
// Buy when outSma crosses above outEma; Sell (close) when outSma crosses below outEma
// -------------------------------------------------------------------------
inDateRange = true

if inDateRange
    // If we have a crossUp event on this bar, buy (go Long)
    if crossUp
        strategy.entry('Long', strategy.long)

    // If we have a crossDown event on this bar, sell (close Long)
    if crossDown
        strategy.close('Long')