Расчет и Визуализация Уровней Ликвидации Binance Futures (Kingfisher) в Pine Script v5

Расчет и Визуализация Уровней Ликвидации Binance Futures (Kingfisher) в Pine Script v5 Pine Script
Подробная инструкция по созданию Pine Script v5 индикатора для расчета и визуализации уровней ликвидации Binance Futures, используя алгоритм Kingfisher. Включает исходный код и разбор параметров.
Суть: Создание Pine Script v5 индикатора для расчета и визуализации уровней ликвидации Binance Futures, имитируя алгоритм Kingfisher, который определяет крупные ордера, способные вызвать каскадные ликвидации.

Исходный код

Понимание уровней ликвидации является критически важным аспектом торговли фьючерсами, особенно на таких платформах, как Binance Futures. Алгоритм Kingfisher, известный своим анализом кластеров ликвидаций, помогает трейдерам выявлять потенциальные ценовые уровни, где может произойти значительное количество принудительных закрытий позиций, что часто приводит к резким движениям рынка. Данный скрипт на Pine Script v5 позволяет вам рассчитать и визуализировать уровень ликвидации для гипотетической позиции, используя параметры, аналогичные тем, что учитываются в реальных торговых сценариях.

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


//@version=5
indicator("Binance Futures Liquidation Level (Kingfisher Algo Sim)", "Liq Level", overlay=true)

// --- Входные параметры --- //
float leverage = input.float(20.0, "Плечо (Leverage)", minval=1, maxval=125, step=1)
float entry_price = input.float(28000.0, "Цена входа (Entry Price)", minval=0.01)
float position_size = input.float(0.1, "Размер позиции (BTC, ETH и т.д.)", minval=0.000001)
bool is_long = input.bool(true, "Позиция: Длинная (Long) / Короткая (Short)")
float maintenance_margin_rate = input.float(0.005, "Ставка поддерживающей маржи (Maintenance Margin Rate, 0.005 = 0.5%)", minval=0.0001, maxval=0.1, step=0.0001)

bool show_lines = input.bool(true, "Показывать линии", group="Визуализация")
bool show_labels = input.bool(true, "Показывать метки", group="Визуализация")
int line_width = input.int(2, "Толщина линии", minval=1, maxval=5, group="Визуализация")
string label_size = input.string(size.normal, "Размер текста метки", options=[size.tiny, size.small, size.normal, size.large, size.huge], group="Визуализация")

// --- Расчеты --- //

// Общая стоимость позиции в USD
float position_value = entry_price * position_size

// Начальная маржа, необходимая для открытия позиции
// Для изолированной маржи: Initial Margin = Position Value / Leverage
float initial_margin_usd = position_value / leverage

// Расчет цены ликвидации
float liquidation_price = na

if is_long
    // Формула для длинной позиции:
    // Liq Price = (Entry Price * Position Size - Initial Margin) / (Position Size * (1 - Maintenance Margin Rate))
    liquidation_price := (position_value - initial_margin_usd) / (position_size * (1 - maintenance_margin_rate))
else
    // Формула для короткой позиции:
    // Liq Price = (Entry Price * Position Size + Initial Margin) / (Position Size * (1 + Maintenance Margin Rate))
    liquidation_price := (position_value + initial_margin_usd) / (position_size * (1 + maintenance_margin_rate))

// --- Визуализация --- //

// Линия цены входа и ликвидации (рисуются только на последнем баре и расширяются вправо)
if show_lines and barstate.islast
    line.new(
         x1=bar_index,
         y1=entry_price,
         x2=bar_index + 1,
         y2=entry_price,
         xloc=xloc.bar_index,
         extend=extend.right,
         color=color.rgb(33, 150, 243, 50),
         style=line.style_solid,
         width=line_width
         )

    line.new(
         x1=bar_index,
         y1=liquidation_price,
         x2=bar_index + 1,
         y2=liquidation_price,
         xloc=xloc.bar_index,
         extend=extend.right,
         color=color.red,
         style=line.style_dashed,
         width=line_width
         )

// Метки
if show_labels and barstate.islast
    label.new(
         x=bar_index,
         y=entry_price,
         text="Вход: " + str.tostring(entry_price, "#.00"),
         xloc=xloc.bar_index,
         yloc=yloc.price,
         color=color.rgb(33, 150, 243, 50),
         textcolor=color.white,
         style=label.style_label_left,
         size=label_size
         )

    label.new(
         x=bar_index,
         y=liquidation_price,
         text="Ликвидация: " + str.tostring(liquidation_price, "#.00"),
         xloc=xloc.bar_index,
         yloc=yloc.price,
         color=color.red,
         textcolor=color.white,
         style=label.style_label_left,
         size=label_size
         )

// Вывод значений в Data Window
plot(entry_price, "Entry Price", color=color.rgb(33, 150, 243, 50), display=display.none)
plot(liquidation_price, "Liquidation Price", color=color.red, display=display.none)


// --- Дополнительные комментарии --- //
// Этот скрипт предоставляет базовый расчет. Реальные условия ликвидации на Binance Futures
// могут включать дополнительные факторы, такие как комиссии, фонд страхования, динамическое
// изменение поддерживающей маржи в зависимости от размера позиции и типа актива.
// Всегда сверяйтесь с официальной документацией Binance для точных расчетов.

Разбор параметров

  • leverage:

    Плечо, используемое для позиции. Это множитель, определяющий, во сколько раз ваша позиция превышает вашу начальную маржу. Например, плечо 20x означает, что на каждый 1 USD вашей маржи вы контролируете позицию на 20 USD.

  • entry_price:

    Цена, по которой была открыта или предполагается открыть позиция. Это ключевой фактор для расчета PnL и, следовательно, уровня ликвидации.

  • position_size:

    Размер вашей позиции в базовой валюте (например, количество BTC для пары BTC/USDT). Чем больше размер позиции при том же плече, тем ближе уровень ликвидации к цене входа.

  • is_long:

    Булевый параметр, указывающий тип позиции. Если true, рассчитывается уровень ликвидации для длинной (покупка) позиции. Если false, для короткой (продажа) позиции.

  • maintenance_margin_rate:

    Ставка поддерживающей маржи. Это процент от стоимости вашей позиции, который должен быть постоянно доступен на вашем маржинальном счете для поддержания открытой позиции. На Binance Futures эта ставка может варьироваться в зависимости от актива и размера позиции. Типичное значение для небольших позиций составляет 0.5% (0.005).

  • show_lines:

    Определяет, будут ли на графике отображаться горизонтальные линии для цены входа и цены ликвидации.

  • show_labels:

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

  • line_width:

    Толщина линий, отображающих уровни цены входа и ликвидации.

  • label_size:

    Размер шрифта для текстовых меток. Позволяет настроить читаемость меток на графике.

Как запустить

Чтобы использовать этот скрипт и визуализировать уровни ликвидации на вашем графике TradingView, выполните следующие шаги:

  1. Откройте TradingView: Перейдите на сайт TradingView и откройте любой график фьючерсного контракта Binance (например, BTCUSDT.P).

  2. Перейдите в Pine Editor: В нижней части экрана TradingView найдите вкладку Pine Editor и откройте ее.

  3. Вставьте код: Удалите любой существующий код в редакторе и вставьте предоставленный выше Pine Script v5 код.

  4. Добавьте на график: Нажмите кнопку "Добавить на график" (Add to Chart) в правом верхнем углу Pine Editor.

  5. Настройте параметры: После добавления индикатора на график, он появится в списке ваших индикаторов. Нажмите на значок шестеренки (настройки) рядом с названием индикатора "Binance Futures Liquidation Level (Kingfisher Algo Sim)". В открывшемся окне вы сможете настроить все входные параметры, такие как leverage, entry_price, position_size, is_long и maintenance_margin_rate, а также параметры визуализации.

  6. Интерпретация: На графике появятся две горизонтальные линии: синяя линия для цены входа и красная пунктирная линия для рассчитанного уровня ликвидации. Эти линии будут сопровождаться метками, если вы включили их отображение. Красная линия показывает, где ваша гипотетическая позиция будет ликвидирована, если цена достигнет этого уровня.

Помните, что этот скрипт рассчитывает уровень ликвидации для одной изолированной позиции. Алгоритмы, подобные Kingfisher, агрегируют подобные расчеты для множества позиций на рынке, чтобы выявить кластеры ликвидаций. Понимание базовой механики, реализованной в этом скрипте, является первым шагом к более глубокому анализу рынка. Для более сложных стратегий, таких как реализация стратегии парного трейдинга или использование многотаймфреймовых индикаторов, вам могут потребоваться более продвинутые техники Pine Script. Также, если вы хотите получать уведомления о достижении уровня ликвидации, вы можете настроить отправку графиков через Webhook в Discord при алертах.

Оцените статью
FinFluct