Mike Pol

+4
с 08.06.2026
2 подписчика
1 подписка

В мире, где актерское мастерство и социальная инженерия стали базовыми навыками выживания, «удобная правда» научилась мимикрировать под искренность с виртуозной точностью. Профессионально подогнанный скафандр не жмет, не топорщится и выглядит даже более «честным», чем сама честность, потому что он идеален. Настоящая искренность часто угловата, неловка и неудобна, а роль всегда сидит как влитая.

@id6036823 Я поправил и оптимизировал для вашего инструмента) Экспериментируйте!
https://disk.yandex.ru/i/Bdk4okStkaXovg

1

Я получил токую же ошибку на фьючерсах доллар рубль. А на крипте проблем нет. Работаю над фиксом этой ошибки) Можете на крипте попробовать пока)

Странно. У меня в tradingview не выдаёт ошибок. Я понял в чем дело. Я на крипте тестирую на 1000pepe и btc.

@id6036823 я на яндекс загрузил в txt. Там правильное форматирование и не должно возникнуть проблем при копировании кода))
https://disk.yandex.ru/i/7e1hXHCPDX8Elw

1

Возможно это связано с вставкой текста на vc
//@version=4
study("HFT v.2026.3 - Сказ о Торнадо HFT", overlay=true, precision=2)

// ==========================================
// ЧЕРТОГ НАСТРОЕК (ВХОДНЫЕ ПАРАМЕТРЫ СОХРАНЕНЫ С СКРИНШОТА)
// ==========================================
mode = input(title="Режим Снасти", defval="Aggressive", options=["Aggressive", "Balanced"])
volWindow = input(3, title="Окно Волатильности (Jerk)", minval=3)
oiWindow = input(60, title="Окно Открытого Интереса", minval=2)
smoothLength = input(2, title="Сглаживание Вече", minval=1)
baseLength = input(3, title="Базовая Длина Шлейфа", minval=3)

jerkMult = input(1.0, title="Порог Рывка Богатырского (Z-Score)", step=0.05)
oiMult = input(9.0, title="Множитель Живой Воды (OI Delta)", step=0.05)

useHTFBias = input(false, title="Включить Старшее Небо (5m EMA)")
htfLength = input(20, title="Длина Старшего Тренда", minval=20)

useVolFilter = input(false, title="Фильтр Купеческого Объема")

// ==========================================
// СЛОЙ ТЕРМОДИНАМИКИ (OPEN INTEREST)
// ==========================================
oiTicker = syminfo.tickerid + "_OI"
rawOI = security(oiTicker, "1", close)

// Явное объявление рекурсивной переменной, дабы компилятор не ругался
float openInterest = na
openInterest := na(rawOI) ? nz(openInterest[1], 0.0) : rawOI

oiDelta = change(openInterest)
oiStd = stdev(oiDelta, oiWindow)
bool oiFuel = oiStd != 0 ? (oiDelta > oiStd * oiMult) : false

// ==========================================
// СТАРШЕЕ НЕБО (HIGHER TIMEFRAME BIAS)
// ==========================================
htfEMA = useHTFBias ? security(syminfo.tickerid, "5", ema(close, htfLength)) : close
trendBull = close > htfEMA
trendBear = close sma(volDelta, 10) * 0.3) : true

// ==========================================
// СИГНАЛЬНАЯ ВЯЗЬ (ЛОГИКА АЛГОРИТМА)
// ==========================================
bool bullCond = (jerkZ > jerkMult) and (oiFuel or change(close) > 0) and (vel > 0) and volFilter
bool bearCond = (jerkZ < -jerkMult) and (oiFuel or change(close) < 0) and (vel < 0) and volFilter

// Сверение со Старшим Небом
bool bullTornado = bullCond and (not useHTFBias or trendBull)
bool bearTornado = bearCond and (not useHTFBias or trendBear)

// Расчет времени со времён прошлых битв
float barsSinceBear = nz(barssince(bearTornado), 9999)
float barsSinceBull = nz(barssince(bullTornado), 9999)

// Сбалансированный режим — удержание шлейфа во время затишья
if mode == "Balanced"
bullTornado := bullTornado or (bullTornado[1] and barsSinceBear < 3)
bearTornado := bearTornado or (bearTornado[1] and barsSinceBull < 3)

// Фиксация знака: 1 — правь вверх, -1 — падай вниз
int signal = 0
signal := bullTornado ? 1 : bearTornado ? -1 : nz(signal[1], 0)

// ==========================================
// ДИНАМИЧЕСКИЙ ШЛЕЙФ (RIBBON НА ЦЕНЕ)
// ==========================================
e0 = ema(close, baseLength)
e1 = ema(close, baseLength + 1)
e2 = ema(close, baseLength + 2)
e3 = ema(close, baseLength + 3)
e4 = ema(close, baseLength + 4)

color ribbonColor = color.new(color.gray, 80)
if signal == 1
ribbonColor := color.new(#00e676, 45)
else if signal == -1
ribbonColor := color.new(#ff1744, 45)

p0 = plot(e0, "Ось Шлейфа", ribbonColor, 2)
p1 = plot(e1, "Край 1", ribbonColor, 1)
p2 = plot(e2, "Край 2", ribbonColor, 1)
p3 = plot(e3, "Край 3", ribbonColor, 1)
p4 = plot(e4, "Край 4", ribbonColor, 1)
fill(p0, p4, ribbonColor, title="Туманное Облако")

// ==========================================
// ЗНАМЕНИЯ НА ГРАФИКЕ (ВИЗУАЛИЗАЦИЯ И МЕТКИ)
// ==========================================
color bgColor = color.new(color.black, 100)
if signal == 1
bgColor := color.new(color.green, 93)
else if signal == -1
bgColor := color.new(color.red, 93)
bgcolor(bgColor)

// Малые стрелы для точечного входа (tiny)
plotshape(bullTornado, title="Стрела Вверх", style=shape.triangleup, location=location.belowbar, color=#00e676, size=size.tiny)
plotshape(bearTornado, title="Стрела Вниз", style=shape.triangledown, location=location.abovebar, color=#ff1744, size=size.tiny)

// Кличи вещие (Alerts для автоматизации)
alertcondition(bullTornado, "Клич на Покупку", "🚀 LONG")
alertcondition(bearTornado, "Клич на Продажу", "🔻 SHORT")

Алексей, спасибо за вашу наблюдательность!) Ответил)

Алексей, спасибо за ваш комментарий. Действительно, ошибка. Я поправил код.

//@version=4
study("HFT v.2026.3 - Сказ о Торнадо HFT", overlay=true, precision=2)

// ==========================================
// ЧЕРТОГ НАСТРОЕК (ВХОДНЫЕ ПАРАМЕТРЫ)
// ==========================================
mode = input(title="Режим Снасти", defval="Aggressive", options=["Aggressive", "Balanced"])
volWindow = input(5, title="Окно Волатильности (Jerk)", minval=3)
oiWindow = input(3, title="Окно Открытого Интереса", minval=2)
smoothLength = input(1, title="Сглаживание Вече", minval=1)
baseLength = input(5, title="Базовая Длина Шлейфа", minval=3)

jerkMult = input(0.75, title="Порог Рывка Богатырского (Z-Score)", step=0.05)
oiMult = input(0.65, title="Множитель Живой Воды (OI Delta)", step=0.05)

useHTFBias = input(true, title="Включить Старшее Небо (5m EMA)")
htfLength = input(50, title="Длина Старшего Тренда", minval=20)

useVolFilter = input(true, title="Фильтр Купеческого Объема")

// ==========================================
// СЛОЙ ТЕРМОДИНАМИКИ (OPEN INTEREST)
// ==========================================
oiTicker = syminfo.tickerid + "_OI"
rawOI = security(oiTicker, "1", close)

// Явное объявление рекурсивной переменной, дабы компилятор не ругался
float openInterest = na
openInterest := na(rawOI) ? nz(openInterest[1], 0.0) : rawOI

oiDelta = change(openInterest)
oiStd = stdev(oiDelta, oiWindow)
bool oiFuel = oiStd != 0 ? (oiDelta > oiStd * oiMult) : false

// ==========================================
// СТАРШЕЕ НЕБО (HIGHER TIMEFRAME BIAS)
// ==========================================
htfEMA = useHTFBias ? security(syminfo.tickerid, "5", ema(close, htfLength)) : close
trendBull = close > htfEMA
trendBear = close sma(volDelta, 10) * 0.3) : true

// ==========================================
// СИГНАЛЬНАЯ ВЯЗЬ (ЛОГИКА АЛГОРИТМА)
// ==========================================
bool bullCond = (jerkZ > jerkMult) and (oiFuel or change(close) > 0) and (vel > 0) and volFilter
bool bearCond = (jerkZ < -jerkMult) and (oiFuel or change(close) < 0) and (vel < 0) and volFilter

// Сверение со Старшим Небом
bool bullTornado = bullCond and (not useHTFBias or trendBull)
bool bearTornado = bearCond and (not useHTFBias or trendBear)

// Расчет времени со времён прошлых битв
float barsSinceBear = nz(barssince(bearTornado), 9999)
float barsSinceBull = nz(barssince(bullTornado), 9999)

// Сбалансированный режим — удержание шлейфа во время затишья
if mode == "Balanced"
bullTornado := bullTornado or (bullTornado[1] and barsSinceBear < 3)
bearTornado := bearTornado or (bearTornado[1] and barsSinceBull < 3)

// Фиксация знака: 1 — правь вверх, -1 — падай вниз
int signal = 0
signal := bullTornado ? 1 : bearTornado ? -1 : nz(signal[1], 0)

// ==========================================
// ДИНАМИЧЕСКИЙ ШЛЕЙФ (RIBBON НА ЦЕНЕ)
// ==========================================
e0 = ema(close, baseLength)
e1 = ema(close, baseLength + 1)
e2 = ema(close, baseLength + 2)
e3 = ema(close, baseLength + 3)
e4 = ema(close, baseLength + 4)

color ribbonColor = color.new(color.gray, 80)
if signal == 1
ribbonColor := color.new(#00e676, 45)
else if signal == -1
ribbonColor := color.new(#ff1744, 45)

p0 = plot(e0, "Ось Шлейфа", ribbonColor, 2)
p1 = plot(e1, "Край 1", ribbonColor, 1)
p2 = plot(e2, "Край 2", ribbonColor, 1)
p3 = plot(e3, "Край 3", ribbonColor, 1)
p4 = plot(e4, "Край 4", ribbonColor, 1)
fill(p0, p4, ribbonColor, title="Туманное Облако")

// ==========================================
// ЗНАМЕНИЯ НА ГРАФИКЕ (ВИЗУАЛИЗАЦИЯ И МЕТКИ)
// ==========================================
color bgColor = color.new(color.black, 100)
if signal == 1
bgColor := color.new(color.green, 93)
else if signal == -1
bgColor := color.new(color.red, 93)
bgcolor(bgColor)

// Малые стрелы для точечного входа (tiny)
plotshape(bullTornado, title="Стрела Вверх", style=shape.triangleup, location=location.belowbar, color=#00e676, size=size.tiny)
plotshape(bearTornado, title="Стрела Вниз", style=shape.triangledown, location=location.abovebar, color=#ff1744, size=size.tiny)

// Кличи вещие (Alerts для автоматизации)
alertcondition(bullTornado, "Клич на Покупку", "🚀 Industrial Titan LONG")
alertcondition(bearTornado, "Клич на Продажу", "🔻 Industrial Titan SHORT")

1