Syntax error at input "end of line without line co...
Creado el: 11 de junio de 2025
Creado el: 11 de junio de 2025
Syntax error at input "end of line without line continuation"
// 2. STOP HUNTS (Liquidity Grabs)
isLiqHunt = volume > avgVol * 2.2 and (
(close < open and low < low[1]) or
(close > open and high > high[1])
)
оба варианта оказались с ошибкой
Syntax error at input "end of line without line continuation"
// 2. STOP HUNTS (Liquidity Grabs)
isLiqHunt = volume > avgVol * 2.2 and (
(close < open and low < low[1]) or
(close > open and high > high[1])
)
Ошибка синтаксиса в данном случае происходит, потому что вы используете комментарий с символами //
, а в Pine Script, как правило, комментарии обозначаются символами //
, и это не вызывает ошибки. Однако возможная причина ошибки может заключаться в предыдущих или последующих строках вашего кода.
Также, возможно, ошибка связана с переносом строки или с неправильной обработкой выражений. Попробуйте следующий исправленный и упрощенный формат:
pinescript// 2. STOP HUNTS (Liquidity Grabs) isLiqHunt = volume > avgVol * 2.2 and ((close < open and low < low[1]) or (close > open and high > high[1]))
Обратите внимание на то, что я поместил всё выражение в одну строку без дополнительных переносов и лишних скобок.
Если проблема сохранится, убедитесь, что переменные (volume
, avgVol
, close
, open
, low
, high
) определены и находятся в корректном контексте. Также проверьте предшествующие строки кода, возможно, синтаксическая ошибка происходит именно из-за них.
Syntax error at input "end of line without line continuation"
// 2. STOP HUNTS (Liquidity Grabs)
isLiqHunt = volume > avgVol * 2.2 and (
(close < open and low < low[1]) or
(close > open and high > high[1])
)
В Pine Script ошибка Syntax error at input "end of line without line continuation"
обычно указывает на то, что интерпретатор ожидает продолжения строки, но его не находит. В вашем случае ошибка возникает при разрыве строки с логическим выражением. Вот как это можно исправить.
pinescript// 2. STOP HUNTS (Liquidity Grabs) isLiqHunt = volume > avgVol * 2.2 and ( (close < open and low < low[1]) or (close > open and high > high[1]) )
Pine Script не поддерживает скобки в многострочном выражении без особого внимания к синтаксису, особенно если вы используете версии Pine Script ниже v5. Вместо этого, напишите в одну строку:
pinescriptisLiqHunt = volume > avgVol * 2.2 and ((close < open and low < low[1]) or (close > open and high > high[1]))
Или, если вы хотите разбить для читабельности — используйте \
(обратную косую черту) для продолжения строки:
pinescriptisLiqHunt = volume > avgVol * 2.2 and \ ((close < open and low < low[1]) or (close > open and high > high[1]))
Также важно, чтобы avgVol
была определена ранее:
pinescriptavgVol = ta.sma(volume, 20) // пример
И чтобы вы задали версию скрипта:
pinescript//@version=5 indicator("Stop Hunts", overlay=true)
\
как символ продолжения строки.avgVol
определены заранее.@version=5
).Если пришлёте больше кода — я помогу точнее.
shortEntry = (downtrend or close < ema200) and
(fractalDown or close < rangeLow) and
not falseBreakLow and
isDistribution and
rsi > 35 and
volume > avgVolume * volumeFactor and
(close > prevWeekLow or close > prevDayLow) and
(fvgZoneActive or close > fvgBottom) Syntax error at input "end of line without line continuation"
Ошибка Syntax error at input "end of line without line continuation"
указывает на то, что Pine Script не смог правильно интерпретировать ваше многострочное логическое выражение. Pine Script не поддерживает автоматическое продолжение выражения на новую строку, если не использовать правильный синтаксис.
shortEntry
Вот рабочая версия, переписанная корректно:
pinescriptshortEntry = (downtrend or close < ema200) and (fractalDown or close < rangeLow) and not falseBreakLow and isDistribution and rsi > 35 and volume > avgVolume * volumeFactor and (close > prevWeekLow or close > prevDayLow) and (fvgZoneActive or close > fvgBottom)
⚠️ Однако такой стиль работает ТОЛЬКО в версии Pine Script 5 и при соблюдении отступов без ошибок.
Если ошибка всё равно возникает, вы можете объединить всё в одну строку или использовать обратную косую черту \
для явного продолжения:
pinescriptshortEntry = (downtrend or close < ema200) and (fractalDown or close < rangeLow) and not falseBreakLow and isDistribution and rsi > 35 and volume > avgVolume * volumeFactor and (close > prevWeekLow or close > prevDayLow) and (fvgZoneActive or close > fvgBottom)
\
для переноса строкpinescriptshortEntry = (downtrend or close < ema200) and \ (fractalDown or close < rangeLow) and \ not falseBreakLow and \ isDistribution and \ rsi > 35 and \ volume > avgVolume * volumeFactor and \ (close > prevWeekLow or close > prevDayLow) and \ (fvgZoneActive or close > fvgBottom)
Версия скрипта:
pinescript//@version=5
Инициализация переменных — все переменные (ema200
, avgVolume
, fvgBottom
, и т.д.) должны быть определены выше по коду.
Чтобы исправить ошибку:
\
для переноса.//@version=5
указан в начале.Хочешь — можешь прислать весь код, я проверю его на целостность.
if longEntry
strategy.entry("Long", strategy.long)
strategy.exit("TP/SL", "Long",
stop=close - stopDistance,
limit=close + takeProfit,
trail_points=close > rangeHigh + atr ? atr * 3 : na,
trail_offset=atr) Syntax error at input "end of line without line continuation"
Ошибка Syntax error at input "end of line without line continuation"
в Pine Script указывает, что интерпретатор не смог завершить выражение, потому что оно оказалось оборвано на конце строки. В вашем примере ошибка вызвана многострочным вызовом strategy.exit(...)
, который Pine Script не интерпретирует корректно без явного объединения строк.
pinescriptif longEntry strategy.entry("Long", strategy.long) strategy.exit("TP/SL", "Long", stop = close - stopDistance, limit = close + takeProfit, trail_points = (close > rangeHigh + atr ? atr * 3 : na), trail_offset = atr)
strategy.exit
имеет строго определённые параметры, и если вы пишете их в нескольких строках, скрипт должен видеть это как одно целое.strategy.exit()
находятся в одной паре скобок, без "висячих" значений.(условие ? значение1 : значение2)
всегда обернуто в скобки — это защищает от путаницы при вычислении аргументов.Версия скрипта в начале файла:
pinescript//@version=5
Убедитесь, что все переменные (stopDistance
, takeProfit
, atr
, rangeHigh
) и логическое выражение longEntry
были объявлены ранее в коде.
Если тебе нужно, я могу помочь адаптировать аналогичный блок для shortEntry
. Также можешь скинуть полный кусок кода — проверю на все возможные ошибки.
//@version=6
strategy("ICT/Wyckoff Pro Strategy", overlay=true, margin_long=100, margin_short=100, pyramiding=1)
// === Параметры ===
length = input.int(20, "Длина диапазона")
rsiLength = input.int(14, "Длина RSI")
atrLength = input.int(14, "Длина ATR")
volumeFactor = input.float(1.5, "Фактор объема")
fractalLength = input.int(5, "Длина фрактала")
fvgLookback = input.int(3, "Глубина анализа FVG")
trendFilter = input.string("EMA 200", "Фильтр тренда", options=["EMA 50", "EMA 100", "EMA 200", "EMA 50/200"])
// === Индикаторы ===
// Трендовые
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)
uptrend = trendFilter == "EMA 50" ? close > ema50 :
trendFilter == "EMA 100" ? close > ema100 :
trendFilter == "EMA 200" ? close > ema200 :
close > ema50 and ema50 > ema200
downtrend = trendFilter == "EMA 50" ? close < ema50 :
trendFilter == "EMA 100" ? close < ema100 :
trendFilter == "EMA 200" ? close < ema200 :
close < ema50 and ema50 < ema200
// Объем и волатильность
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)
avgVolume = ta.sma(volume, 20)
// === ICT Концепции ===
// 1. Ликвидность
liqHigh = ta.highest(high, length2)
liqLow = ta.lowest(low, length2)
// 2. FVG (Fair Value Gap)
fvgUp = low[2] > high[1]
fvgDown = high[2] < low[1]
// 3. Определение зон FVG
var float fvgTop = na
var float fvgBottom = na
if fvgUp
fvgTop := high[2]
fvgBottom := low[1]
if fvgDown
fvgTop := high[1]
fvgBottom := low[2]
isBetween(price, lower, upper) => price >= lower and price <= upper
fvgZoneActive = not na(fvgTop) and isBetween(close, fvgBottom, fvgTop)
// 4. Ключевые уровни ICT
prevWeekHigh = request.security(syminfo.tickerid, "W", high[1], lookahead=barmerge.lookahead_on)
prevWeekLow = request.security(syminfo.tickerid, "W", low[1], lookahead=barmerge.lookahead_on)
prevDayHigh = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on)
prevDayLow = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on)
// === Ваикофф + ICT Логика ===
// Фракталы
fractalUp = ta.highest(high, fractalLength) == high[fractalLength-1]
fractalDown = ta.lowest(low, fractalLength) == low[fractalLength-1]
// Диапазон
rangeHigh = ta.highest(high, length)
rangeLow = ta.lowest(low, length)
rangeMiddle = math.avg(rangeHigh, rangeLow)
// Фазы рынка
isAccumulation = close > rangeMiddle and volume > avgVolume * volumeFactor
isDistribution = close < rangeMiddle and volume > avgVolume * volumeFactor
// Ложные пробои
falseBreakHigh = high > rangeHigh and close < rangeHigh and volume > avgVolume
falseBreakLow = low < rangeLow and close > rangeLow and volume > avgVolume
// === Условия входа ===
longEntry = (uptrend or close > ema200) and
(fractalUp or close > rangeHigh) and
not falseBreakHigh and
isAccumulation and
rsi < 65 and
volume > avgVolume * volumeFactor and
(close < prevWeekHigh or close < prevDayHigh) and
(fvgZoneActive or close < fvgTop)
shortEntry = (downtrend or close < ema200) and
(fractalDown or close < rangeLow) and
not falseBreakLow and
isDistribution and
rsi > 35 and
volume > avgVolume * volumeFactor and
(close > prevWeekLow or close > prevDayLow) and
(fvgZoneActive or close > fvgBottom)
// === Управление позицией ===
stopDistance = atr * (uptrend ? 1.2 : 1.5)
takeProfit = atr * (uptrend ? 4 : 3)
if longEntry
strategy.entry("Long", strategy.long)
strategy.exit("TP/SL", "Long",
stop=close - stopDistance,
limit=close + takeProfit,
trail_points=close > rangeHigh + atr ? atr * 3 : na,
trail_offset=atr)
if shortEntry
strategy.entry("Short", strategy.short)
strategy.exit("TP/SL", "Short",
stop=close + stopDistance,
limit=close - takeProfit,
trail_points=close < rangeLow - atr ? atr * 3 : na,
trail_offset=atr)
// === Визуализация ===
// Трендовые линии
plot(ema50, "EMA 50", color=color.blue, linewidth=1)
plot(ema100, "EMA 100", color=color.orange, linewidth=1)
plot(ema200, "EMA 200", color=color.red, linewidth=2)
// Уровни Ваикоффа
plot(rangeHigh, "Range High", color=color.red, linewidth=2)
plot(rangeLow, "Range Low", color=color.green, linewidth=2)
// ICT Ликвидность
plot(liqHigh, "Liquidity High", color=color.red, style=plot.style_circles)
plot(liqLow, "Liquidity Low", color=color.green, style=plot.style_circles)
// FVG Зоны
bgcolor(fvgUp ? color.new(color.green, 80) : fvgDown ? color.new(color.red, 80) : na, title="FVG Zone")
plot(fvgTop, "FVG Top", color=color.teal, style=plot.style_linebr)
plot(fvgBottom, "FVG Bottom", color=color.teal, style=plot.style_linebr)
// Ключевые уровни ICT
plot(prevWeekHigh, "Prev Week High", color=color.purple, linewidth=1)
plot(prevWeekLow, "Prev Week Low", color=color.purple, linewidth=1)
plot(prevDayHigh, "Prev Day High", color=color.fuchsia, linewidth=1)
plot(prevDayLow, "Prev Day Low", color=color.fuchsia, linewidth=1)
// Сигналы
plotshape(longEntry, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, text="LONG")
plotshape(shortEntry, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, text="SHORT")
plotshape(falseBreakHigh, style=shape.xcross, location=location.abovebar, color=color.purple, size=size.small)
plotshape(falseBreakLow, style=shape.xcross, location=location.belowbar, color=color.purple, size=size.small)
Спасибо за предоставление полного скрипта. Ошибка Syntax error at input "end of line without line continuation"
в блоках strategy.exit(...)
вызвана тем, что вы используете многострочную запись без соблюдения правил Pine Script.
В Pine Script даже с @version=6
нельзя писать вызов функции с параметрами на новой строке без должной обработки. Вот как это можно исправить.
strategy.exit(...)
Замените:
pinescriptstrategy.exit("TP/SL", "Long", stop=close - stopDistance, limit=close + takeProfit, trail_points=close > rangeHigh + atr ? atr * 3 : na, trail_offset=atr)
На:
pinescriptstrategy.exit("TP/SL", "Long", stop=close - stopDistance, limit=close + takeProfit, trail_points=(close > rangeHigh + atr ? atr * 3 : na), trail_offset=atr)
Аналогично, для шорт-позиции:
pinescriptstrategy.exit("TP/SL", "Short", stop=close + stopDistance, limit=close - takeProfit, trail_points=(close < rangeLow - atr ? atr * 3 : na), trail_offset=atr)
@version=6
, все параметры должны быть в одной строке, или использовать \
(не рекомендуется для strategy.exit
).? :
обязательно оборачивайте в скобки, чтобы не нарушить парсинг.@version=6
, как вы указали — это правильно.strategy.exit()
на строки. Это особенно критично при использовании условных выражений (?:
) и нескольких параметров.atr
, rangeHigh
, stopDistance
, takeProfit
, и т.д.) определены раньше в коде.Ваш скрипт написан грамотно и выглядит как хорошо продуманная торговая система на базе ICT и Wyckoff. Ошибка была вызвана тем, что strategy.exit
не поддерживает многострочную форму без специальных правил. Объедините строки в одну, и ошибка исчезнет.
Хочешь — могу проверить остальную часть логики на соответствие вашей стратегии или предложить автоматическую оптимизацию параметров.