Стратегия прорыва микрокоррекции, основанная на количественном импульсе

ATR SMA OCA VOLUME
Дата создания: 2025-02-19 16:32:46 Последнее изменение: 2025-02-19 17:25:25
Копировать: 0 Количество просмотров: 335
2
Подписаться
319
Подписчики

Стратегия прорыва микрокоррекции, основанная на количественном импульсе Стратегия прорыва микрокоррекции, основанная на количественном импульсе

Обзор

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

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

Основная логика стратегии основана на принципе непрерывности рыночной динамики и включает в себя следующие ключевые элементы:

  1. Сильный рост, определяемый количеством сделок и ATR, требует объема сделок в 1,5 раза больше среднего и более 200 000
  2. Контроль за процессом отбора после привыкания, ограничение максимального количества последовательных красных яблок до 3
  3. Установите максимальную отклонение в размере 50% и откажитесь от возможности.
  4. После стабилизации цены вызывают множественный сигнал, когда они перебивают предыдущий максимум.
  5. Управление портфелем ордеров OCO с учетом целей стоп-лосса и прибыли
  6. Стоп-лосс установлен ниже отклонения, целью является получение прибыли в два раза больше риска

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

  1. Улучшение надежности сигнала в сочетании с двойным подтверждением динамики цен и объема сделок
  2. Фильтрация с помощью строгих условий обратной связи, чтобы избежать ловушки ложного прорыва
  3. Использование объективных технических показателей снижает влияние субъективных суждений
  4. Ясные механизмы контроля риска, фиксированная установка соотношения риска и прибыли
  5. Высокий уровень автоматизации системы, подходит для оптовой торговли несколькими сортами
  6. Хорошая масштабируемость, легко добавлять новые условия фильтрации

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

  1. Некоторые из этих сигналов могут часто вызывать ложные сигналы во время сильных колебаний на рынке.
  2. Высокомощный рынок акций может перешагнуть установленные пределы
  3. Условия сбыта требуют динамической корректировки в различных рыночных условиях
  4. Стоп-лизинг установлен ближе, может быть затронут рынком
  5. Цели прибыли могут быть слишком радикальными и трудно достижимыми
  6. Необходимо большое количество образцов для проверки стабильности стратегии

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-17 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BNB_USDT"}]
*/

//@version=6
strategy(title="Micropullback Detector w/ Stop Buy & Exits", shorttitle="MicroPB Det+Exits", overlay=true)

// USER INPUTS
volLookback = input.int(20, "Volume SMA Period", minval=1)
volMultiplier = input.float(1.5, "Volume Multiplier for High Volume", minval=1.0)
largeCandleATR = input.float(0.5, "Fraction of ATR to define 'Large Candle'", minval=0.1)
maxRedPullback = input.int(3, "Max Consecutive Red Candles in Pullback")
maxRetracementPc = input.float(50, "Max Retracement % for pullback", minval=1.0, maxval=100.0)

// CALCULATIONS
fastAtr = ta.atr(14)
avgVolume = ta.sma(volume, volLookback)
isLargeGreenCandle = (close > open) and ((close - open) > fastAtr * largeCandleATR) and (volume > avgVolume * volMultiplier) and (volume > 200000)

// HELPER FLAGS
isGreen = close >= open
isRed   = close < open

// STATE VARIABLES
var int   state = 0
var float waveStartPrice   = na
var float waveHighestPrice = na
var float largestGreenVol  = na
var int   consecutiveRedPulls = 0
var bool  triggerSignal    = false
var float wavePullbackLow  = na

if barstate.isnew
    triggerSignal:=false
    if state==0
        wavePullbackLow:=na
        if isLargeGreenCandle
            state:=1
            waveStartPrice:=open
            waveHighestPrice:=high
            largestGreenVol:=volume
            consecutiveRedPulls:=0
    else if state==1
        if isGreen
            waveHighestPrice:=math.max(waveHighestPrice,high)
            if volume>largestGreenVol
                largestGreenVol:=volume
        else
            state:=2
            consecutiveRedPulls:=1
            wavePullbackLow:=low
    else if state==2
        if isRed
            if volume>largestGreenVol
                state:=0
            consecutiveRedPulls+=1
            if consecutiveRedPulls>=maxRedPullback+1
                state:=0
            retracementLevel=waveStartPrice+(maxRetracementPc/100.0)*(waveHighestPrice-waveStartPrice)
            wavePullbackLow:=math.min(wavePullbackLow,low)
            if close<retracementLevel
                state:=0
        else
            consecutiveRedPulls:=0
            if high>high[1]
                triggerSignal:=true
                state:=3
    else if state==3
        state:=0

// Plot shapes for signals (last 1440 bars ~ 1 day at 1-min TF)
plotshape(isLargeGreenCandle, title="Large Green Candle", style=shape.diamond, location=location.belowbar, color=color.new(color.blue, 0), offset=0, size=size.small, show_last=1440)
plotshape(triggerSignal, title="MicroPB Entry", style=shape.arrowdown, location=location.abovebar, color=color.new(color.green, 0), offset=0, size=size.large, show_last=1440)

// ENTRY & EXITS
if triggerSignal
    // Stop Buy above the previous bar's high
    entryPrice = high[1]
    strategy.order("MicroPullback Long", strategy.long, limit=entryPrice, oca_name="MicroPullback")

    // Stoploss slightly below pullback low
    stopPrice = wavePullbackLow - 2*syminfo.mintick

    // Risk & take-profit calculations
    risk = entryPrice - stopPrice
    tpPrice = entryPrice + 2 * risk

    // Exit: stop or TP
    strategy.exit("SL+TP", "MicroPullback Long", stop=stopPrice, limit=tpPrice, qty_percent=100)

// ALERT
alertcondition(triggerSignal, title="MicroPullback LONG", message="Micropullback Long Signal Detected!")