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

MTF
Дата создания: 2024-12-20 14:20:11 Последнее изменение: 2024-12-20 14:20:11
Копировать: 0 Количество просмотров: 433
1
Подписаться
1617
Подписчики

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

Обзор

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

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

В основе стратегии лежит обнаружение ценных точек через функции ta.pivothigh и ta.pivotlow на протяжении нескольких временных периодов. Для каждого временного периода система использует левую и левую ссылку на K-линию (по умолчанию 7) для определения заметных высоких и низких точек. Когда в любом периоде появляется новая центральная низкая точка, система генерирует многосигналы; когда появляется новая центральная высокая точка, система генерирует пустые сигналы.

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 4h
basePeriod: 4h
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/
// © pmotta41
//@version=5
strategy("GPT Session Liquidity Heatmap Strategy", overlay=true)

// Inputs
timeframe1 = input.timeframe("15", title="Intraday Timeframe 1")
timeframe2 = input.timeframe("60", title="Intraday Timeframe 2")
timeframe3 = input.timeframe("240", title="Higher Timeframe")
leftBars = input.int(7, title="Left Bars for Pivot", minval=2, maxval=20)
rightBars = input.int(7, title="Right Bars for Pivot", minval=2, maxval=20)
takeProfitDollar = input(200, title="Take Profit $$")
stopLossDollar = input(100, title="Stop Loss $$")

// Pivot Detection Function
detectPivot(highs, lows, left, right) =>
    pivotHigh = ta.pivothigh(highs, left, right)
    pivotLow = ta.pivotlow(lows, left, right)
    [pivotHigh, pivotLow]

// Get Pivots from Different Timeframes
[pivotHigh1, pivotLow1] = request.security(syminfo.tickerid, timeframe1, detectPivot(high, low, leftBars, rightBars))
[pivotHigh2, pivotLow2] = request.security(syminfo.tickerid, timeframe2, detectPivot(high, low, leftBars, rightBars))
[pivotHigh3, pivotLow3] = request.security(syminfo.tickerid, timeframe3, detectPivot(high, low, leftBars, rightBars))

// Plot Pivots
plotshape(series=pivotHigh1, title="Pivot High 1", location=location.abovebar, color=color.red, style=shape.labeldown, text="H1")
plotshape(series=pivotLow1, title="Pivot Low 1", location=location.belowbar, color=color.green, style=shape.labelup, text="L1")
plotshape(series=pivotHigh2, title="Pivot High 2", location=location.abovebar, color=color.red, style=shape.labeldown, text="H2")
plotshape(series=pivotLow2, title="Pivot Low 2", location=location.belowbar, color=color.green, style=shape.labelup, text="L2")
plotshape(series=pivotHigh3, title="Pivot High 3", location=location.abovebar, color=color.red, style=shape.labeldown, text="H3")
plotshape(series=pivotLow3, title="Pivot Low 3", location=location.belowbar, color=color.green, style=shape.labelup, text="L3")

// Strategy Logic
buyCondition = pivotLow1 or pivotLow2 or pivotLow3
sellCondition = pivotHigh1 or pivotHigh2 or pivotHigh3

if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.entry("Sell", strategy.short)

// Function to Convert $$ to Points for Stop Loss and Take Profit
moneyToSLPoints(money) =>
    strategy.position_size != 0 ? (money / syminfo.pointvalue / math.abs(strategy.position_size)) / syminfo.mintick : na

p = moneyToSLPoints(takeProfitDollar)
l = moneyToSLPoints(stopLossDollar)

// Exit Conditions
strategy.exit("Exit Buy", from_entry="Buy", profit=p, loss=l)
strategy.exit("Exit Sell", from_entry="Sell", profit=p, loss=l)

// Visualization for Stop Loss and Take Profit Levels
pointsToPrice(pp) =>
    na(pp) ? na : strategy.position_avg_price + pp * math.sign(strategy.position_size) * syminfo.mintick

tp = plot(pointsToPrice(p), style=plot.style_linebr, color=color.green, title="Take Profit Level")
sl = plot(pointsToPrice(-l), style=plot.style_linebr, color=color.red, title="Stop Loss Level")
avg = plot(strategy.position_avg_price, style=plot.style_linebr, color=color.blue, title="Entry Price")
fill(tp, avg, color=color.new(color.green, 90), title="Take Profit Area")
fill(avg, sl, color=color.new(color.red, 90), title="Stop Loss Area")

// Background for Gain/Loss
gainBackground = strategy.position_size > 0 and close > strategy.position_avg_price
lossBackground = strategy.position_size > 0 and close < strategy.position_avg_price
bgcolor(gainBackground ? color.new(color.green, 90) : na, title="Gain Background")
bgcolor(lossBackground ? color.new(color.red, 90) : na, title="Loss Background")