стратегия многократного подтверждения для обеспечения ликвидности

LIQUIDITY VOLUME EMA Pivot
Дата создания: 2025-12-17 15:33:28 Последнее изменение: 2025-12-17 15:33:28
Копировать: 10 Количество просмотров: 288
2
Подписаться
421
Подписчики

стратегия многократного подтверждения для обеспечения ликвидности стратегия многократного подтверждения для обеспечения ликвидности

Мобильная очистка + подтверждение транзакций - это настоящий институциональный образ мышления

Перестаньте доверять одному показателю. Эта стратегия идеально сочетает в себе три измерения: мобильность, аномальные объемы трафика, тенденции EMA, 11 циклов колебаний, чтобы идентифицировать ключевые сопротивления поддержки, 31 цикл EMA фильтрации направления тенденции.

Увеличение фильтрации в 1 раз, чтобы отклонить низкокачественный сигнал

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

Сигналы в обратном направлении - прямой баланс, никогда не вступать в войну

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

EMA вынуждена выйти из строя, тренд - король

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

Механизм блокировки сигналов, чтобы избежать перепланировки

В коде есть хитроумная конструкция buy_lock и sell_lock. После того, как будет задействован сигнал “зачистки”, он будет блокировать сигнал в том же направлении, пока цена не вернется в ключевую позицию. Это позволяет избежать повторного открытия позиции в одном и том же волне, снижая затраты на торговлю и рисковое воздействие.

Применимые сценарии: волатильный рынок с четкой тенденцией

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

Риск: исторический отсчет не говорит о будущих доходах

Существует риск непрерывного убытка стратегии, особенно при изменении структуры рынка. Развитие колебаний 11-го цикла может быть неэффективным в некоторых экстремальных ситуациях, а 31-й цикл EMA имеет отсталость при быстром развороте. Рекомендуется строго контролировать отдельные позиции не более чем на 10% от общего капитала и корректировать параметры в зависимости от рыночных условий.

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

//@version=5
strategy(
     "Liquidity Sweep + Volume + OB + EMA Cross Exit (Fixed)",
     overlay=true,
     max_boxes_count=500,
     max_lines_count=500,
     initial_capital=100000,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=10,
     pyramiding=1)

//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// INPUTS
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
len = input.int(11, "Swing Length", minval=1)

volLen  = input.int(11, "Volume MA Length", group="Volume Filter")
volMult = input.float(1, "Volume Multiplier", step=0.1, group="Volume Filter")

emaLength  = input.int(31, "EMA Length", minval=1, group="EMA Filter")
extendBoxes = input.bool(true, "Extend Boxes")

//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// EMA
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
emaVal = ta.ema(close, emaLength)
plot(emaVal, title="EMA", color=color.orange)


//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// COLORS
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
buyCol   = color.lime
sellCol  = color.red

liqBuyCol  = color.new(color.lime, 85)
liqSellCol = color.new(color.red, 85)

obBuyCol  = color.new(color.green, 75)
obSellCol = color.new(color.maroon, 75)

//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// VOLUME FILTER
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
volMA   = ta.sma(volume, volLen)
highVol = volume > volMA * volMult

//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// PIVOTS
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ph = ta.pivothigh(len, len)
pl = ta.pivotlow(len, len)

var float lastPH = na
var float lastPL = na

if not na(ph)
    lastPH := ph
if not na(pl)
    lastPL := pl

//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// LIQUIDITY SWEEPS
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
sellSweep = not na(lastPH) and high > lastPH and close < lastPH and highVol
buySweep  = not na(lastPL) and low  < lastPL and close > lastPL and highVol

//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// ANTI-SPAM LOCK
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
var bool buyLock  = false
var bool sellLock = false

if buySweep
    buyLock := true
else if not na(lastPL) and close < lastPL
    buyLock := false

if sellSweep
    sellLock := true
else if not na(lastPH) and close > lastPH
    sellLock := false

buySignal  = buySweep  and not buyLock[1]
sellSignal = sellSweep and not sellLock[1]

//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// TRADE STATE
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
var float entryPrice = na
var int   entryBar   = na
var int   entryDir   = 0   // 1 = BUY, -1 = SELL
var bool  tradeAlive = false

//━━━━━━━━ ENTRY ━━━━━━━━━━━━━━━━━━━
if buySignal and not tradeAlive
    strategy.entry("BUY", strategy.long)
    entryPrice := close
    entryBar   := bar_index
    entryDir   := 1
    tradeAlive := true

if sellSignal and not tradeAlive
    strategy.entry("SELL", strategy.short)
    entryPrice := close
    entryBar   := bar_index
    entryDir   := -1
    tradeAlive := true

barsFromEntry = tradeAlive ? bar_index - entryBar : na

//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// EXIT LOGIC
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
exitBuyAfter3  = tradeAlive and entryDir == 1  and barsFromEntry >= 3 and close < entryPrice
exitSellAfter3 = tradeAlive and entryDir == -1 and barsFromEntry >= 3 and close > entryPrice

exitOppBuy  = tradeAlive and entryDir == 1  and sellSignal
exitOppSell = tradeAlive and entryDir == -1 and buySignal

// EMA downside cross exit
emaCrossDown = tradeAlive and ta.crossunder(close, emaVal)
exitEMA      = emaCrossDown

exitSignal = exitBuyAfter3 or exitSellAfter3 or exitOppBuy or exitOppSell or exitEMA

if exitSignal
    if entryDir == 1
        strategy.close("BUY")
    if entryDir == -1
        strategy.close("SELL")

    tradeAlive := false
    entryPrice := na
    entryBar   := na
    entryDir   := 0

//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// PLOTS
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
plotshape(buySignal,  "BUY",  shape.labelup,   location.belowbar, color=buyCol,  text="BUY",  textcolor=color.black)
plotshape(sellSignal, "SELL", shape.labeldown, location.abovebar, color=sellCol, text="SELL", textcolor=color.white)

plotshape(exitBuyAfter3,  "EXIT BUY 3+",  shape.xcross, location.abovebar, color=color.orange)
plotshape(exitSellAfter3, "EXIT SELL 3+", shape.xcross, location.belowbar, color=color.orange)

plotshape(exitOppBuy,  "EXIT BUY OPP",  shape.flag, location.abovebar, color=color.yellow)
plotshape(exitOppSell, "EXIT SELL OPP", shape.flag, location.belowbar, color=color.yellow)

plotshape(exitEMA and entryDir == 1, "EXIT EMA BUY",  shape.triangledown, location.abovebar, color=color.blue)
plotshape(exitEMA and entryDir == -1, "EXIT EMA SELL", shape.triangleup,  location.belowbar, color=color.blue)

//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// ALERTS
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
alertcondition(buySignal,  "BUY Alert",  "Liquidity Sweep BUY")
alertcondition(sellSignal, "SELL Alert", "Liquidity Sweep SELL")
alertcondition(exitEMA,title="EXIT EMA CROSS",message="Price crossed below EMA")