Как узнать версию Pine Script в примере
Смотрите на аннотацию в начале кода. По руководству TradingView строка вида //@version=6 сообщает компилятору, на какой версии написан скрипт, а номер может быть от 1 до 6. Аннотация не обязательна: если её нет, компилятор считает, что это версия 1. Поэтому пример без аннотации нельзя молча читать как v5 или v6.
Для примеров из интернета это важнее, чем кажется. Код, скопированный без аннотации или с другой цифрой, может не собраться или считать по другим правилам. Сам язык и его устройство разобраны в руководстве Pine Script: что это за язык.
Старые скрипты при этом никто не ломал. В блоге TradingView сказано, что обновления v6 не затрагивают личные и опубликованные скрипты на прежних версиях. Новые возможности добавляют только в последнюю версию. Версии библиотек - отдельная тема, она разобрана в руководстве про библиотеки Pine Script.
Какие различия v5 и v6 меняют результат
Первое различие - деление целых чисел. В v5 деление двух целых констант отбрасывает дробную часть, в v6 дробь сохраняется. Ниже разбор спецификации на вымышленных константах. Это не результат запуска кода в редакторе.
| Выражение | Pine Script v5 | Pine Script v6 |
|---|---|---|
7 / 2 | 3 | 3.5 |
7.0 / 2.0 | 3.5 | 3.5 |
int(7 / 2) | 3 | 3 |
Есть оговорка. В v5 дробь терялась только когда оба числа были константами. Если хотя бы одно целое приходило из настроек или менялось от бара к бару, v5 уже сохранял дробь. Целочисленное деление встречается и в других языках: в C#, например, 13 / 5 даёт 2. Если в v6 нужен целый результат, руководство советует обернуть деление в int().
Второе различие - логические значения.
| Что проверяем | Pine Script v5 | Pine Script v6 |
|---|---|---|
| Значения типа bool | true, false или na | только true или false |
| Число вместо условия | 0, 0.0 и na считаются false, остальное true | неявного приведения нет, нужен bool() |
| Выражение, которое в v5 давало логическое na | na | false |
Третье различие - порядок вычисления условий с and и or. В v5 обе части условия вычисляются всегда. В v6 вычисление ленивое: вторая часть может не выполняться, если ответ ясен по первой. Руководство приводит случай с ta.rsi() внутри условия: функция вызывается не на каждом баре, и это мешает её внутренней истории. Значения на графике после этого расходятся со старыми. Такое расхождение идёт от другого правила вычисления, и это не перерисовка.
Для стратегий есть своё изменение: в v6 маржа по умолчанию равна 100 процентам. Поэтому бэктест одной и той же стратегии до и после перехода стоит сравнивать заново.
Как разбирать старый пример перед переходом на v6
Начните с того, что пример на v5 должен собираться без ошибок. Конвертер запускается в редакторе: меню Manage script, пункт Convert code to v6. По руководству он работает, только если код v5 успешно компилируется. Скрипт на v4 и старше переводят по одной версии за шаг. Как открыть редактор и сохранить копию, описано в руководстве про редактор Pine Script.
Дальше пройдите по коду руками, по трём вопросам.
- Есть ли деление двух целых чисел, записанных прямо в коде, например
7 / 2. Посчитайте его по таблице выше для обеих версий. Если число приходит из настроек, например длина периода, дробь сохранялась и в v5, и результат тут не меняется. - Стоит ли где-то число на месте условия. В v6 его нужно явно обернуть в
bool(). - Есть ли внутри условий с
andиorвызовы функций, которым нужна история баров. Руководство советует вынести такой вызов в отдельную переменную до условия.
После конвертации сравните значения старой и новой версии на одном инструменте и одном таймфрейме. В блоге TradingView прямо сказано, что автоматически конвертируются не все скрипты и иногда нужны ручные правки.
Риски и ограничения. Таблицы выше построены по документации, а не по запуску кода, и охватывают только часть изменений v6. Полный список есть в руководстве по переходу. Успешная конвертация означает, что код собрался, но не что расчёты совпали с прежними. Версия языка ничего не говорит о качестве торговой идеи: v6 не делает стратегию прибыльнее. Торговля связана с риском потери капитала, прошлые результаты не гарантируют будущих. Материал образовательный и не является индивидуальной инвестиционной рекомендацией.
Источники
- Руководство TradingView по переходу на Pine Script v6 - деление целых, типы bool, ленивые and и or, маржа стратегии, конвертер.
- Обзор руководств по переходу, TradingView - конвертер и переход по одной версии.
- Pine Script v6 has landed, блог TradingView - старые скрипты не затронуты, ручные правки после конвертации.
- Script structure, руководство TradingView - аннотация версии и версия по умолчанию.
- Арифметические операторы C#, Microsoft Learn - целочисленное деление в другом языке.





