как вставить код в компилятор tradingview
Как самому написать индикатор или стратегию на tradingview на pine script
Популярная тема среди продвинутых людей: « Как самому написать индикатор или стратегию на tradingview «.
Все очень просто и делается интуитивно, в Трейдингвью применяется pine script.
Открываем внизу графиков вкладку pine script
Далее начинаем писать код
Пишем свой индикатор
Сперва нужно научиться писать индикаторы, а потом уже стратегии.
1. Сверху пишем версию pine script — можно и без этого пункта
2. слово Study — означает, что пишем как раз индикатор.
study(title= «MA Cross 14 & 28», overlay=true)
title — это название нашего индикатора, которое будет отображаться на графике
overlay=true означает отобразить поверх графика
3. Указываем входные данные. У нас это sma 14 и 28. Запишем их в переменные, short — короткий период, long — длинный период
short = sma(close, 14)
long = sma(close, 28)
4. Начинаем рисовать, это делается при помощи функции plot
plot(short, color = red, linewidth = 3)
plot(long, color = green, linewidth = 3)
Тут видно, что мы задействуем переменные, которые указали выше, а также цвет линий и ширину
Все! уже можно нажимать Сохранить (там же ) и Добавить на график!
Теперь вы видите их на графике это скользящие средние.
5. Можно жирным выделить пересечение данных MA для наглядности
Все поздравляю — индикатор готов и им можно пользоваться, подогнав цифры под себя.
Пишем свою стратегию
Тут в центре — условия, то же самое, что в индикаторах (писали выше), только сверху и снизу меняется.
Как и зачем я писал парсер для сайта Tradingview. Автоматизация торговли своими руками
Проблема: На текущий момент наиболее удобным и полноценным программным обеспечением (далее ПО) для автоматизации торговли на российском биржевом рынке является небезызвестный ТСЛАБ.
Несмотря на несомненные плюсы в виде удобного визуального редактора для написания торговых скриптов, который позволяет писать роботов даже без знания языков программирования, есть ряд недостатков, которые делают использование данного ПО для меня крайне не практичным. И думаю не только для меня, учитывая, что средний размер счёта на Мосбирже как правило не превышает 500 тыс.р.
1. Стоимость: Абонентская плата 4500р./мес+аренда виртуального сервера (1000 р./мес.)
Это постоянная издержка ложится очень сильным бременем на финансовый результат моей торговли. Поэтому имея размер счёт в размере 500 тыс.р. и надеясь с него получить хотя бы 20% годовых, с существующими издержками вам нужно зарабатывать порядка 32-35%, чтобы выйти на плановую доходность.
2. Нестабильность работы: Несмотря на то, что мои алгоритмы работают преимущественно с рыночными заявками (тип заявок, который предполагает 100% исполнение), мои позиции часто удваивались, либо не исполнялись вовсе.
Задача:Написать ПО для автоматизации торговли для минимизации постоянных издержек с удобным интерфейсом для создания торговых скриптов, позволяющим писать торговых роботов без наличия глубоких знаний в области программирования.
Архитектура всего проекта с текущим и функционалом и планируемыми доработками представлен на рисунке ниже.
Самым главным звеном в программе несомненно является сайт Tradingview (далее TV). Он как раз и представляет нам удобный функционал для написания своих торговых скриптов за счёт встроенного языка Pine_Script.
Язык к слову сказать не требует специфических знаний и в своей основе похож на язык Easy Language пакета Metastock, а наличие интерактивной справки на русском языке делает написания кода максимально приятным.
Пример стратегии пробитие скользящей средней (буквально в три строчки кода):
Теперь имея удобный интерфейс для написания торговых скриптов, собственно осталось наладить процесс отправки заявок из TV непосредственно в торговую систему (в моём случае это программа Quik), либо напрямую на сервер брокера. Проблема лишь в том, что у TV нет открытого API для реализации данного функционала.
В попытках решить данную проблему первое, что мне пришло в голову это использовать плагин для тестирования WebSelenium и путём поиска XPath локаторов находить нужные нам элементы, которые отвечают за сигналы покупки-продажи.
Сами сигналы при этом отображаются в таблице и проблем вроде не должно было бы возникнуть. Но для поиска крайнего сигнала таблица требовала скроллинга, а элемент скроллинга мне найти так и не удалось (см. рисунок ниже).
Поэтому пришлось искать другое решение.
Визуально сигналы TV у нас отображается в элементе сanvas. Цвет сигнала при необходимости можно менять (ex: красный-продажа, зелёный-покупка).
Цвета заданные в TV мы задаём в нашем приложении. Само приложение написано на Java, графический интерфейс реализован с помощью библиотеки Swing
Далее в самой программе нам нужно выделить область canvas (либо просто сканируемую область), в которой мы будем искать контрольные цвета.
На рисунке ниже представлен сайт tradingview c тремя выбранными инструментами, по каждому из них задан цвет торгового сигнала. Эти цвета продублированы в мою программу Parse_Signal.
.
Работает она в двух потоках.
1 первый поток:
Сканирует выделенную область (в данном случае canvas).
Скан делаем классически используя функционал класса Robot:
Далее разбивает полученный скан на массив пискелей:
Ищет в массиве пикселей контрольные цвета торговых сигналов. Поиск осуществляется слева направо. Т.е. именно цвет крайнего правого пикселя является актуальным для программы:
2 поток программы осуществляет запрос цены торгуемого инструмента посредством парсинга html страницы сайта Финам. Используется плагин JSOUP. Здесь всё просто выгружаю html страницы и осуществляю поиск кода необходимого мне торгуемого инструмента (ex: Si, Sber и т.п.).
Стоить отметить, что фактически у нас получается довольно громоздкая связка TV+Парсер+Quik. И несмотря на стабильность данного решения в будущем планируется отправлять заявки не в Quik, а напрямую на сервер брокера (ex: используя как вариант интерфейс Atlentis от Алора). Библиотека правда опять реализована на С#, поэтому придётся что-то придумывать.
Данную программа позволила решить мне изначальные задачи, которые я ставил перед собой:
а именно в разы снизить постоянные издержки.
Код программы выложен в открытом доступе.
Если кто-то готов поделится своими идеями взаимодействия с TV буду очень рад увидеть это в комментариях.
Подключение и настройка графиков TradingView
Если Вы — фрилансер или CTO финансового проекта, рано или позно Вы столкнетесь с вопросом подключения графиков, я сэкономлю Вам минимум сутки работы. Те, кто уже используют эту библиотеку, возможно, найдут что-то новое.
Статья будет в формате «книги рецептов» с open source решениями для криптовалютной биржи Binance и Forex.
У библиотеки TradingView (charting_library) высокий порог входа, при этом менее популярной она не стала из-за того, что используется на одноименном сервисе TradingView.com. Решил сделать «книгу рецептов» с ответами на основные вопросы.
Cook book
Контент буду дополнять по мере появляния новых сложностей. Если у Вас есть вопросы и Вы не нашли ответы в статье, пишите в комментариях, будем разбираться вместе 🙂
В статье буду указывать ссылки на документацию. Если, при переходе по ссылке, у Вас открывается 404 страница, это означает, что у Вас нет доступа.
Лицензия
Можно использовать бесплатно в коммерческих и некоммерческих целях. Самый главный критерий — сохранность логотипа компании на графиках.
При запросе доступа к графикам обязательно указывать конечный домен, где они будут использоваться. При реализации одного из проектов мы подключали Forex-дату к графику, все настроили и запустили. За 2-й месяц заказчик данные Forex не проплатил, из-за этого графики полностью не загружались и отсутствовал логотип. После сложившейся ситуации проверяющий связался с заказчиком последством эл.почты с вопросами для разъяснения ситуации.
Получение доступа
У библиотеки закрытый доступ на GitHub, чтобы его получить необходимо:
Мой опыт получения доступа
Спустя примерно 4 недели после заполнения заявки мне прислали договор для подписания. Через 3 дня после подписания открыли доступ к библиотеке. Судя по отзывам, период получения доступа плавает и точных сроков нет.
Не отображается график, даже с тестовыми данными
Для решения нужно подключить виджет и глобально указать доступ к бибилиотеке.
Подключение виджета
Доступ к библиотеке
Указать глобальный путь к папке charting_library в опциях виджета library_path: ‘/charting_library/’
Подключение данных
В базовом варианте используются тестовые данные. Далее необходимо подключить свой провайдер данных, используя одно из двух решений: JS API или UDF. Напрямую «скормить» массив данных не получится. Мы расмотрим JSAPI, UDF подключается аналогично, с отличием в указании конечной точки на сервере, откуда будет получать данные.
Основное отличие JSAPI от UDF, в отсутствии возможности для UDF добавить WebSocket подключение. При указании конечной точки на сервере, вы выставляете интервал для каждого запроса: datafeed: new Datafeeds.UDFCompatibleDatafeed(‘http://localhost:3000/datafeed’, 1000)
TradingView JS API adapter
Последовательность запуска: onReady => resolveSymbol => getBars => subscribeBars => unsubscribeBars.
Если вы меняете таймфрейм, символ, вызывается хук unsubscribeBars, который обращается к вашей функции, которая сбрасывает WebSocket подключение с провайдером данных. Если вы не используете subscribeBars, то и unsubscribeBars вам не нужен. getServerTime хук не обязательный, но если вам требуется использовать время сервера, подключайте его.
Если провайдер данных не отдает объемы, то можете указать в хуке resolveSymbol — has_no_volume: true.
Иногда провайдер данных не позволяет запрашивать данные напрямую с клиента, например биржа Binance, поэтому запрос можно прокидывать через прокси.
TradingView UDF adapter
UDF адаптер актуален, когда данные запрашиваются со своего сервера. В конструкторе клиента нужно указать datafeed: new Datafeeds.UDFCompatibleDatafeed(‘http://localhost:3000/datafeed’, 1000)
JS API getBars хук вызывается много раз
У моего провайдера нет WebSocket подключения
Не обязательно использовать UDF провайдер, если нет стрима. Интервал запросов задать не получится для JS API адаптера, но это не мешает нам добавить setInterval в subscribeBars и отдавать данные для обновления.
Кастомизация дизайна
Сохрание данных
Возможно понадобится сохранять «рисовалки».
Save\Load методы
Самый простой вариант, который можно использовать, если не планируется рисовать много на графиках. Простой, потому что можете вызвать объект со всеми данными графика widget.save(cb => this.setOverlay(cb)) и сохранить там, где будет удобно.
Save\Load adapter
Похож на UDF adapter. На сервере поднимаете конечные точки для сохранения\загрузки данных.
У меня что-то не работает, делаю все по документации
Реальный кейс, обратился фрилансер с проектом, проект был старый, он его переписывал. По итогу просто была старая версия библиотеки. Проверяйте версию.
Другая ситуация, когда пытаются вызвать методы у еще незагруженного графика, отслеживайте состояние через onChartReady. Если нет под капотом реактивности, чтобы отследить загрузку графика, используйте паттерн Observer.
Графики бибилиотеки отличаются от версий на сайте TradingView.com
Как добавить ордера на график
После добавления ордера на график, нет доступа массиву, поэтому необходимо самостоятельно отслеживать ордера. Поделюсь своим решением оформленное в формате миксина для Vuejs, суть будет понятна.
Как добавить формы, «рисовалки» на график (линия, фигуры и пр.)
Добавлять можно исключительно предложенные библитекой формы, которые используются в тулбаре. Это необходимо, когда нужно вывести информацию на график.
Хочу использовать PineScript
charting_library не поддерживает такой функционал. PineScript можно переписать на JavaScript и использовать алгоритм на клиентской или серверной части.
Хочу добавить свой индикатор
Посмотрите в сторону Custom Studies
Хочу использовать несколько графиков в одном окне
В бесплатной версии charting_library такой функционал отсутствует. При необходимости можно своими силами это сделать HTML+CSS.
Open source
Заключение
Статья будет дополняться. Если есть кейс с проблемой — решением, пишите, дополню статью с указанием авторства.
Также интересно услышать ваше мнение, опыт, вопросы и пожелания.
Автоматизация торговли для нищеброда. Пишем, тестируем и запускаем робота за 5 минут. Подготовка стратегии на Tradingview для парсера+ВИДЕО.
Коллеги, всем добрый вечер!
В рамках данного поста, а далее в видео я расскажу о том как максимально быстро запустить своего первого робота. При этом всё это у Вас займёт не более 5 минут.
Как я уже говорил выше TV предлагает довольно обширный перечень стратегий и индикаторов (см. рисунок ниже). Многие из них ранжированы по классу популярности (количество лайков). Правда слепо доверять данному показателю не стоит.
Далее выкладываю пошаговый алгоритм действий.
1. Перед тем как запустить стратегию в бой, Вы должны убедиться, что она не перерисовывает сигналы.
Сделать на самом деле это несложно.
Самый лёгкий способ — это зайти в описание стратегии и почитать отзывы пользователь. Так как аудитория в основном англоязычная, то появление фраз типа This strategy is repainting должно является для Вас сигналом того, что стратегия представляет не то, за что её выдают.
Второй способ — это тупо залезть в код. Пугаться здесь не нужно даже если Вы не знаете встроенный язык TV. Нас интересует только одна функция security. Если Вы видите, что она обращается к более старшему тайфрейму по сравнению тем на котором Вы работаете, будьте готовы к перерисовке.
Говорить однозначно, что эти стратегии плохие нельзя, но использовать их напрямую мы не можем, для этого их нужно дополнительно редактировать (в данном посте мы это касаться не будем).
2. После того как мы выбрали стратегию и у нас есть понимание, что она не будет перерисовываться, нам нужно её протестировать, задать цвета покупки, продажи и закрытия позиции и указать их программе ParseSignal (в принципе это всё).
Более детальную информацию смотрите в видео.
Бинарные опционы & Форекс. Форум
Форум трейдеров БО & Forex & CFD
#1 20.03.2015 02:46:40
Скрипты от AlexF для TradingView
1. Подсветка свечей при перекупленности/перепроданности стохастика по выставленным параметрам.
Если простыми словами, то скрипт подсвечивает прямо на графике свечу, которая попадает под условия:
3. Простейший скрипт, собственно индикатор «Радуга» одним индикатором. Не надо добавлять кучу скользящих, настраивать. Добавил и забыл.
Код скрипта
5. Скрипт, создающий алерт и показывающий на гистограмме внизу момент, когда имеются 8 подряд идущих свечей в одном направлении.
Отредактировано AlexF (15.05.2016 09:27:25)
#2 20.03.2015 06:55:21
Re: Скрипты от AlexF для TradingView
Спасибо Алексей, установил. попробую на рекомендованных валютах, разберусь, может и на другие перенастрою.
#3 20.03.2015 07:41:43
Re: Скрипты от AlexF для TradingView
Это не рекомендованные валюты, а те, на которых я работаю. Настроить можно абсолютно на любую.
#4 20.03.2015 14:06:45
Re: Скрипты от AlexF для TradingView
Установил! Удобная вещь! Спасибо
Отредактировано Brabus23 (20.03.2015 14:07:03)
#5 20.03.2015 15:09:36
Re: Скрипты от AlexF для TradingView
Спасибо, Алексей! Очень удобная вещь! С уважением! 🙂
#6 20.03.2015 15:17:44
Re: Скрипты от AlexF для TradingView
#7 20.03.2015 17:09:29
Re: Скрипты от AlexF для TradingView
Спасибо, интересная штука. Но необходимо потестить, чем и займемся.
#8 20.04.2015 17:03:26
Re: Скрипты от AlexF для TradingView
Если у вас есть простые идеи, можете сюда их кидать
Не знаю, насколько простая идея, но она касается всеми любимых линий п/с. O:)
У Криса Муди, есть подобный индикатор (CM_OldSchool_Projected_High_Low), кстати очень полезный, показывающий дневные/недельные и т.д. линии п/с. Собственно идея касается нас, простых смертных, т.е. сделать диапазон меньший, чем у Муди (4 часа, 1 час, 30 мин.). Ну и чтоб цвет менял как у него, если будет пробой. 😎
Понятно, что каждый их рисует по своему, но было бы не лишним сделать такой индикатор. Я в этих кодах ничего не понимаю, так бы сделал сам.))
#9 21.04.2015 06:26:42
Re: Скрипты от AlexF для TradingView
Если у вас есть простые идеи, можете сюда их кидать
Не знаю, насколько простая идея, но она касается всеми любимых линий п/с. O:)
У Криса Муди, есть подобный индикатор (CM_OldSchool_Projected_High_Low), кстати очень полезный, показывающий дневные/недельные и т.д. линии п/с. Собственно идея касается нас, простых смертных, т.е. сделать диапазон меньший, чем у Муди (4 часа, 1 час, 30 мин.). Ну и чтоб цвет менял как у него, если будет пробой. 😎
Понятно, что каждый их рисует по своему, но было бы не лишним сделать такой индикатор. Я в этих кодах ничего не понимаю, так бы сделал сам.))
Скрипт в шапке темы. Кстати довольно симпатично рисует уровни (смотрел на 5 минутке линии с ТФ4часа).
#10 21.04.2015 09:17:58
Re: Скрипты от AlexF для TradingView
Алексей, ты просто красавчик! Спасибо!
#11 21.04.2015 12:43:52
Re: Скрипты от AlexF для TradingView
Алексей есть вопрос у меня на графиках нет кнопки «Pine Script Editor» сразу идет кнопка алерт. Вы какой версией графиков пользуетесь? Может в этом дело?
#12 21.04.2015 14:45:28
Re: Скрипты от AlexF для TradingView
Да, TV обновили интерфейс. Поправил шапку с описанием, где найти.
#13 23.04.2015 07:23:17
Re: Скрипты от AlexF для TradingView
Добавил скрипт для стратегии Радуга, чтобы руками не добавлять несколько МА.
#14 23.04.2015 19:36:34
Re: Скрипты от AlexF для TradingView
Привет Алексей спасибо за скрипт подсветки! Пока все просто отлично главное не спешить и внимательно следить за поведением цены. Просмотрел на истории и три дня форекастом тестил сделки даже очень недурно на 30мин тф 90% в плюсе пробовал 3мин хуже но вполне прилично 70%. На следующей неделе попробую на реале отпишу. Кстати отмечу что скрипт работает на всех тф.
#15 24.04.2015 02:33:59
Re: Скрипты от AlexF для TradingView
#16 26.04.2015 05:00:17
Re: Скрипты от AlexF для TradingView
«Хотя основное внимание при анализе осциллятора RSI сфокусировано на уровнях 70 и 30, уровень 50 также важен. Являясь средним для кривой RSI (с диапазоном от 0 до 100), уровень 50 часто выполняет те же функции, что и нулевая линия для осциллятора скорости изменения: его пересечение нередко служит сигналом покупки или продажи. Нетрудно заметить, что, например, во время коррекции на восходящем тренде кривая RSI часто находит поддержку на уровне 50, прежде чем пойти вверх. При нисходящем тренде скачки кривой RSI останавливаются около уровня 50. Таким образом, пересечения уровня 50 несут определенную информацию и за ними стоит следить». Джон Мерфи. «Визуальный инвестор».
В связи с этим, Алексей, нельзя ли разработать скрипт, который бы окрашивал свечу при пересечении осциллятором RSI уровня 50 сверху вниз и снизу вверх разными цветами? В идеале при при достижении значения, например 49 снизу и 51 сверху ( т.к. возможен отскок) свеча подсвечивались бы одним цветом, а при уверенном пересечении уровня 50 другим, или бы цвет менял интенсивность.
От себя могу добавить, что пересечение осциллятором RSI уровня 50 дает неплохой сигнал для уточнения точки входа в сделку, так как зачастую совпадает с началом нового микро-тренда или с началом продолжения основного.
#17 26.04.2015 12:51:29
Re: Скрипты от AlexF для TradingView
#18 26.04.2015 13:27:53
Re: Скрипты от AlexF для TradingView
Так что с вас логика, с меня реализация 🙂
#19 26.04.2015 15:53:24
Re: Скрипты от AlexF для TradingView
Отредактировано Asmodeus (26.04.2015 17:19:23)
#20 27.04.2015 08:23:46
Re: Скрипты от AlexF для TradingView
В палитре TV все цвета радуги, можно 16-ричным кодом вбивать любой цвет (#1a2b3c как пример). Так что это не проблема.
#21 27.04.2015 09:47:40
Re: Скрипты от AlexF для TradingView
Если так, то отлично. Можно движение от подхода к уровню 50 до его пересечения в одном направлении указывать оттенками одного цвета, подобрав нужные градации.
#22 27.04.2015 12:22:29
Re: Скрипты от AlexF для TradingView
#23 27.04.2015 13:20:58
Re: Скрипты от AlexF для TradingView
Я именно это и имел ввиду, предлагая не отслеживать направление движения индикатора, а формально подсвечивать текущую свечу при достижении индикатором определенного значения, выбранного из разрешенного диапазона. То есть, например, RSI дошел до выбранного значения в диапазоне «предупреждение», свеча подсветилась. Далее, если значение RSI вернулось назад за диапазон, следующая свеча не подсвечивается, а текущая (в этот момент может уже предыдущая) гаснет. Если значение RSI перешло в диапазон «пересечение», текущая свеча подсвечивается другим цветом и светится до выхода из диапазона в сторону, противоположную входу, или продолжает светиться при сохранении направления движения индикатора.
Можно было бы попробовать реализовать этот алгоритм для тестирования, но я не программист, поэтому не могу сказать стоит ли овчинка выделки. Может быть я просто не замечаю очевидные для вас вещи. Из-за этого некоторая сумбурность изложения.
#24 27.04.2015 13:29:40
Re: Скрипты от AlexF для TradingView
«Погасить» старую свечу уже нельзя будет, движка скрипта не позволяет. Если подсветило и пошла следующая свеча, то выделение цветом остается навсегда.
#25 27.04.2015 15:04:03
Re: Скрипты от AlexF для TradingView
Ну может это и к лучшему, будет понятно откуда прилетело.