pine script что это
Поприветствуем Pine Script v5
Конвертер из v4 в v5
Уже существующие индикаторы и стратегии, написанные на предыдущих версиях Pine, будут и дальше работать без изменений. Для тех, кто хочет опробовать новый функционал, мы предоставляем возможность автоматически конвертировать скрипты четвёртой версии в пятую — в дальнейшем новый функционал Pine будет выходить исключительно для v5. Инструмент конвертации скриптов v4 в v5 доступен в выпадающем меню по нажатию кнопки Ещё, когда в редакторе открыт скрипт четвёртой версии:
Обратите внимание, что не весь код четвертой версии можно сконвертировать автоматически. Если у вас возникнут проблемы с конвертацией или вы решите конвертировать свои скрипты вручную, в Руководстве пользователя описаны все различия между v4 и v5, которые нужно принять во внимание.
Библиотеки
Ключевое нововведение Pine v5 — это библиотеки, новый тип публикации. Библиотеки позволяют создавать и экспортировать пользовательские функции для повторного использования в других скриптах. Когда библиотека опубликована, другие скрипты (будь то индикаторы, стратегии или даже другие библиотеки) могут её импортировать и использовать написанные в ней функции. Вы можете создать библиотеку, которая реализует какой-либо сложный алгоритм или часто запрашиваемую функцию, чтобы вам (или всему сообществу Pine) в будущем было проще их использовать.
Значения по умолчанию для пользовательских функций
Улучшение, которое идет рука об руку с библиотеками: теперь для параметров в пользовательских функциях можно определять значение по умолчанию, что фактически делает эти параметры опциональными. В примере ниже мы объявляем функцию customPow(), которая возводит аргумент base в степень exp. Если значение exp не определено, используется 2:
Оператор switch
Коллекции объектов рисования
Значительное улучшение качества жизни для тех, кто работает с объектами рисования в Pine: новые переменные line.all, label.all, box.all и table.all возвращают массив, наполненный ссылками на все нарисованные на графике линии, лейблы, прямоугольники и таблицы соответственно.
Это можно использовать, например, чтобы ограничить количество объектов рисования на графике на основе значения, заданного в настройках индикатора. В скрипте ниже мы рисуем линию на цене открытия каждого дня (до
50 линий — лимит на количество линий по умолчанию). После этого мы проверяем размер массива line.all и, если он превышает разрешённый, удаляем самую старую линию в массиве:
Цикл while
Еще одна долгожданная функция Pine, добавленная в v5, это циклы while. Оператор while создает цикл, который останавливается, когда условие ложно или когда в цикле используется команда break.
В качестве примера приведем индикатор, который вычисляет разницу между средним расстоянием, на которое нам нужно обратиться в прошлое, чтобы найти объем вверх и вниз, равный общему объему последних n баров. Чем дальше нам нужно обращаться в прошлое, чтобы найти увеличивающийся или падающий объем, тем более медвежьим или бычьим будет его значение:
Цикл while в скрипте выполняется до тех пор, пока не будет найден требуемый объем (как покупки, так и продажи), и пока мы не запрашиваем данные, выходящие за пределы максимально разрешенного количества баров. Скрипт также демонстрирует еще одну функцию, добавленную в Pine v5: runtime.error().
runtime.error()
Функция runtime.error() теперь позволяет останавливать выполнение скрипта и отображать сообщение об ошибке на основе любого условия, которое вы можете определить в Pine. Это пригодится создателям скриптов, которые хотят, чтобы пользователи не использовали их индикаторы некорректно. Функцию runtime.error() также можно использовать как нестандартный инструмент отладки, например, чтобы остановить выполнение скрипта во время цикла или внутри функции.
Чтобы воспользоваться этим функционалом, просто вызовите функцию runtime.error() внутри какого-либо условия. Когда условие будет выполнено и функция вызовется, скрипт остановится и около названия индикатора появится знакомый восклицательный знак. По клику на восклицательный знак появляется сообщение, которое вы задавали при вызове функции.
Приведенный ниже код представляет собой простой индикатор Средневзвешенная цена объёма (VWAP) с двумя пользовательскими ошибками. Первая появляется, когда для символа нет данных об объеме: VWAP рассчитывается на основе объема, поэтому, если объем отсутствует, скрипт не может работать. Второй появляется, когда таймфрейм на графике 1D или выше. Базовые вычисления VWAP накапливают взвешенные по объему скользящие средние на каждом новом баре и сбрасываются в начале нового дня, поэтому индикатор полезен только на внутридневных временных интервалах.
Новые функции для работы со стратегиями
Хорошие новости для любителей стратегий! Мы добавили целый ряд новых переменных и функций, которые позволяют вам запрашивать свойства, статистику и показатели сделок. Их значения обновляются по мере того, как эмулятор брокера выполняет ваши заказы, поэтому вы можете следить за значениями на протяжении всего графика, где стратегия торгуется.
Нажмите здесь, чтобы получить подробную информацию о каждой функции и переменной
Краткое руководство
Скрипт, написанный на языке Pine, состоит из функций и переменных. Функции содержат инструкции, которые описывают необходимые вычисления. Переменные сохраняют значения, использованные или созданные во время этих вычислений.
Пример скрипта Pine
Давайте посмотрим на реализацию индикатора MACD в Pine:
Это комментарий, содержащий описание версии компилятора, которая сообщает компилятору, что скрипт будет использовать 4-ую версию языка Pine.
Определяет имя скрипта, который будет отображаться на графике как «MACD».
Определяет переменную macd как разницу между двумя EMA.
Определяет переменную signal как сглаженное значение macd, с и спользованием алгоритма SMA (Simple Moving Average, простое скользящее среднее) с длинной 9.
Вызывает функцию plot для вывода переменной macd, отображая линией синего цвета.
После добавления скрипта «MACD» на график вы увидите следующее:
Индикаторы и стратегии
Pine стратегии используются для запуска бэк-тестов. В дополнение к обычным скриптовым вычислениям они также содержат strategy.***** вызовы для создания заявок (ордеров) на покупку и продажу. Они могут отображать информацию на графиках, но не могут быть использованы для создания оповещений.
Pine индикаторы, как и в предыдущем примере, также содержат расчеты и могут отображать информацию на графиках, но не могут использоваться при тестировании на истории. Индикаторы, содержащие alertcondition вызовы, могут использоваться для создания оповещений с помощью диалогового окна « Создать оповещение TradingView».
Модель исполнения скриптов Pine
Скрипт Pine не похож на многие обычные программы, которые выполняются один раз, а затем останавливаются. В среде выполнения Pine скрипт выполняется как скрытый цикл, где он выполняется один раз на каждом историческом изменении. Когда выполнение достигает последней свечи в реальном времени, скрипт будет выполняться каждый раз, когда обнаруживается изменение цены или объема, затем последний раз, когда свеча реального времени закрывается и становится исторической свечой.
Серии
Понимание сценариев
Если вы собираетесь написать сценарий Pine любой разумной сложности, то хорошее понимание как модели выполнения Pine, так и серии важно для понимания того, как работают сценарии Pine. Если вы никогда раньше не работали с данными, организованными в серии, вам понадобится практика, чтобы заставить их работать на вас. Когда вы ознакомитесь с фундаментальными концепциями Pine, вы обнаружите, что, комбинируя использование рядов с нашими встроенными функциями, разработанными для эффективной обработки информации в сериях, можно достичь многого за несколько строк кода Pine.
Редактор Pine
Что дальше?
Эта документация содержит многочисленные примеры кода, используемого для иллюстрации того, как функции, переменные и операторы используются в Pine. Пройдя через это, вы сможете изучить основы Pine и изучить примеры сценариев.
Самый быстрый способ выучить язык программирования — прочитать ключевые понятия и опробовать их на реальном коде. Как мы только что сделали, скопируйте примеры этой документации в редактор и поиграйте с ними. Проводите исследования! Вы ничего не испортите.
Также вы найдете примеры скриптов Pine в выпадающем меню редактора Новый и в обширной публичной библиотеке скриптов TradingView, которая содержит тысячи скриптов Pine с открытым исходным кодом. Наслаждайтесь и добро пожаловать в Pine!
Представляем Pine Script v4!
Встречайте новую версию языка Pine Script! Четвёртая версия включает в себя массу новых возможностей. Мы поработали над улучшением структуры языка и исправили ряд проблем. Однако основная, самая запрашиваемая и долгожданная «фишка» четвёртой версии — поддержка объектов рисования!
Объект рисования label
Объект рисования line
Серийные строки
Мы реализовали поддержку серийных переменных строкового типа. Пример использования серийных строк в объектах label:
Ключевое слово var
Переменная, объявленная обычным способом, реинициализируется при каждом очередном просчете скрипта. Из-за этого возникает проблема сохранения значения, записанного в переменную на предыдущем баре. Ключевое слово var объявляет переменную и инициализирует её однократно. Это позволяет сохранить значение переменной между барами с момента инициализации или последнего присваивания. Например, скрипт, подсчитывающий количество «зелёных» баров на графике:
При каждом выполнении условия close >= open значение переменной s будет увеличиваться на единицу. Инициализирующим значением может быть любое арифметическое выражение.
Переименование встроенных констант, переменных и функций
В Pine Script v4 был выполнен ряд переименований встроенных констант, переменных и функций, представленный ниже:
Переименования были сделаны для структурирования стандартных средств языка и, в конечном счете, облегчения работы с кодом. Новые имена сгруппированы в соответствии с их назначением под общими префиксами таким образом, что, к примеру, набрав в редакторе «color» и нажав комбинацию клавиш Ctrl + Space, вы увидите список со всеми доступными константами цветов.
Явное указание типа переменных
Пробуйте, экспериментируйте с новой версией Pine Script v4! Некоторые из наших пользователей уже познакомились с возможностями четвёртой версии и написали несколько впечатляющих скриптов с использованием объектов рисования.
Например, Ricardo Santos написал целую серию скриптов, с которыми вы можете ознакомиться ниже:
Спасибо, что выбираете TradingView!
Учебник Pine Script 4
Введение
Сервис TradingView разработал свой собственный скриптовый язык, который называется Pine Script. Это позволяет пользователям создавать собственные индикаторы и запускать их на наших серверах. Pine был разработан как легкий язык, ориентированный на конкретную задачу — разработка технических индикаторов и торговых стратегий. Большинство встроенных индикаторов TradingView были запрограммированы в Pine. Наша главная цель — сделать Pine доступным и понятным для самой широкой аудитории.
Pine основан на облачной платформе и поэтому отличается по своей природе от клиентских языков программирования. Хотя мы не будем развивать Pine в полноценный язык с мощными возможностями кодирования для создания очень сложных инструментов, постоянное улучшение Pine является одним из наших главных приоритетов, и мы будем рады рассмотреть любые запросы на добавление нового функционала.
Поскольку каждый скрипт использует вычислительные ресурсы в облаке, мы должны накладывать ограничения для справедливого распределения этих ресурсов среди наших пользователей. Мы стремимся устанавливать как можно меньше ограничений, ограничивая настолько, насколько это необходимо. Мы должны обеспечить бесперебойную работу платформы, чтобы скрипты, которые потребляют непропорционально большое количество ресурсов, ни на кого отрицательно не повлияли. Наложенные ограничения применяются к таким элементам, как объем данных из дополнительных инструментов, время выполнения, использование памяти и размер скрипта. Кроме того, мы сохраняем синтаксис и семантику Pine простыми, чтобы они могли эффективно решать общие задачи.
Мы продолжим совершенствовать документацию и поддержку Pine, чтобы каждый, кто хочет изучать и использовать Pine, мог это сделать, поскольку это помогает развивать сообщество разработчиков Pine и предоставляет пользователям TradingView более надежные и полезные инструменты.
Quickstart guideВ¶
A script written in Pine is composed of functions and variables. Functions contain instructions that describe the required calculations. Variables save the values used or created during those calculations.
A script must contain a study or strategy annotation which defines the script’s name and other properties. The script’s body contains the functions and variables necessary to calculate results which will be rendered on a chart with a plot function, or some other function that plots the script’s output.
Example of a Pine scriptВ¶
Let’s look at the implementation of the MACD indicator in Pine:
After adding the “MACD” script to the chart you will see the following:
Pine contains a variety of built-in functions for the most popular algorithms (SMA, EMA, WMA, etc.). You can also define your custom functions. You will find a description of all available built-in functions here.
“study” vs “strategy”¶
Pine studies, as the one in the previous example, also contain calculations, but cannot be used in backtesting. Because they do not make use of the broker emulator, they use less resources and will run faster.
Execution model of Pine scriptsВ¶
A Pine script is not like many normal programs that execute once and then stop. In the Pine runtime environment, a script runs in the equivalent of an invisible loop where it is executed once on each historical bar. When execution reaches the last, real-time bar, the script executes once every time a price or volume change is detected, then one final time when the real-time bar closes and becomes a historical bar.
SeriesВ¶
Understanding scriptsВ¶
If you intend to write Pine scripts of any reasonable complexity, a good comprehension of both the Pine execution model and series is essential in understanding how Pine scripts work. If you have never worked with data organized in series before, you will need practice in putting them to work for you. When you familiarize yourself with Pine’s fundamental concepts, you will discover that by combining the use of series with our built-in functions designed to efficiently process series information, much can be accomplished in very few lines of Pine code.
Pine EditorВ¶
The Pine Editor is where you will be working on your scripts. To open it, click on the Pine Editor tab at the bottom of your TradingView chart. This will open up the editor’s window. We will create our first working Pine script. Start by bringing up the “New” dropdown menu at the top right of the editor and choose Blank indicator script. Then copy the previous example script, select all code already in the editor and replace it with the example script. Click Save, choose a name and then click Add to Chart. The MACD indicator will appear in a separate Pane under the chart.
Where to go from here?В¶
This documentation contains numerous examples of code used to illustrate how functions, variables and operators are used in Pine. By going through it, you will be able to both learn the foundations of Pine and study the example scripts.
The fastest way to learn a programming language is to read about key concepts and try them out with real code. As we’ve just done, copy this documentation’s examples in the editor and play with them. Explore! You won’t break anything.
You will also find examples of Pine scripts in the editor’s New dropdown menu and in TradingView’s extensive Public Library of scripts which contains thousands of open source Pine scripts. Enjoy and welcome to Pine!