Как самому написать индикатор или стратегию на 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
А теперь скрипты и примеры их использования:
Крайне важно ограничить доступ к скриптам по белому списку IP адресов (только серверы TV). На 04.11.2021 это 52.32.178.7, 54.218.53.128, 34.212.75.30, 52.89.214.238. Можно вставить проверку в скрипты, но в примерах выше они вызываются через встроенный веб сервер PHP, открытые порты через некоторое время начнут долбить всякие боты.
Пример использования для крипты:
Если с 04 по 08 ноября закрываемся на дневках выше 4600 — купить эфир по рынку
В TV переходим на интервал 1Д, рисуем линию тренда на 4600 с 04 по 08 ноября:
Кликаем правой кнопкой по нарисованной линии — Добавить оповещение для Линия тренда.
Устанавливаем условия, жмём На закрытии бара, ставим галку URL веб-хука, в поле ниже пишем IP_сервера, жмём кнопку Больше и в поле Сообщение вписываем текст «ETHUSDT buy MARKET».
Рекомендую сначала всё вписать и сразу (до сохранения) снять галку URL веб-хука, сохранить уведомление. Если уведомление сразу не сработало — молодец, можно отредактировать — поставить галку. Первое время они будут часто срабатывать сразу после их создания 🙂
Поле Сообщение имеет вид «ТИКЕР КОМАНДА ПАРАМЕТР«, где КОМАНДА — это buy или sell, а ПАРАМЕТР — это MARKET или числовое значение, можно использовать встроенные переменные TW, такие как <
Использование webhook для Тинькова точно такое же, в поле Сообщение пишем «GAZP sell 999.99» или «AAPL buy 100». А ещё можно рисовать на одних графиках, а торговать совсем другие инструменты, можно прикрутить лоты, можно сделать переворот, можно использовать встроенные стратегии TV.
Послесловие: это не реклама, выложил то, чем пользуюсь сам. Идея и скрипты предоставлены по принципу «it works for me», не несу никакой ответственности за их работу или не работу у кого-либо. На вопросы «почему PHP?» или «почему не запускается веб сервер и вообще так всё криво реализовано?» отвечать не буду, на вопросы «как запрограммировать с помощью этого барахла мою идею?» отвечу. Если есть интересные проекты, связанные с криптой, торговыми роботами или просто подискутировать на связанные темы — пишите.
Как и зачем я писал парсер для сайта 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 ращу собственный сервис
Вся история началась с 5 апреля 2020 года, я в очередной раз сидел за графиком и думал, что всю эту кашу надо автоматизировать. Хоть как-то.
Тогда я шелестил кучу инфы по торговле – куда, как и самое главное зачем девать свои кровные деньги. Ведь и правда, зачем вообще торговать то?
Как вы понимаете, единственным выходом куда мне было бы интересно положить деньги, стал брокерский счет.
Я выработал некую стратегию в голове, что буду откладывать часть денег каждый месяц туда и содержать свой счет в пропорциях 70% облигации и 30% акции, чтобы в случае чего не оказаться в полной заднице.
Если с облигациями худо бедно разобраться можно, то вот акции – это уже повеселее.
Встает вопрос, что покупать и когда продавать. В интернете много всего, пришлось копаться и в итоге я нашел одного парня, который на примере написания программы на Python рассказал пару интересных для меня моментов.
А именно, чтобы код искал за меня вкусные акции, а не я сидел и пулился целый день в монитор. Для меня это прозвучало как зов господа с небес – не меньше.
Конечно прозвучало круто, ведь можно было ничего не делать, а какие акции покупать находились сами, вот так счастье.
И самое важное, поиск осуществлялся без всяких ИИ, нейросетей и прочей лабуды. Все просто и лаконично.
Но какую-то пачку акций я уже закупил и надо было с ними как-то разобраться, в конце концов продать или может закупить еще больше.
Тогда я написал для себя очень простой скриптик на TradingView – благо там можно делать примерно все.
Он показывает когда было бы круто зайти в акцию.
Продажа сигнализирует об открытии шорта, но буду честен – я пока не делаю шортов, наверное еще не дорос до них.
И я начал добавлять его на свои купленные акции, что явно помогало мне принимать решения.
Но голова не давала покоя, что будет когда я продам то что имею, и надо будет идти за новой порцией адреналина, где взять самый лучший?
Именно в этот момент появилась идея, прочесывать все акции которые есть у моего брокера и находить как раз эти точки входа в акцию.
Все это назвалось GooseTrade
Теперь я имею список акций, которые либо уже в течении 2-3 дней растут, либо те которые только начинают рост, конечно же те которые только начинают отдаю по подписке.
Так же для полноты картины, я сделал калькулятор, позволяющий расчитывать налоги и комиссии, чтобы было ясно, сколько получается денег на выходе.
По итогам, я уже сейчас обыгрываю процентную ставку в банке.
Теперь я выкатил сервис на всех своих друзей, знакомых и постепенно пишу полезности для людей, которые так же как и я решили начать торговать.
Интересно конечно, а проводил какие-нибудь интервью у своих емеил подписчиков?
Да, сейчас у меня 73 емеил подписчика на рассылку и недавно я проводил опрос, который показал, что люди любят рисковать и по какой-то причине чуть ли не весь портфель держат из акций. Не знаю кто им сказал так делать.
Спасибо, что дочитали до конца!
Если у вас есть вопросы или пожелания, я всегда готов выслушать и ответить.
На вопрос, а какой процент хороших акций находится – 65-69% акций из списка становятся плюсовыми на след. день.
Как создавать индикаторы для технического анализа на TradingView
Введение
Что такое Pine Script?
Настройка
Начать работу с Pine Script очень просто. Весь код, который мы пишем, запускается на серверах TradingView, а мы имеем доступ к редактору кода и можем писать скрипты прямо в браузере – не нужно скачивать сторонние приложения и что-то настраивать.
Ваш график должен быть более актуальным.
Подробный график. В панели над выделенными вкладками вы можете установить желаемые таймфреймы.
Редактор Pine
Теперь рассмотрим следующий пример:
Многие трейдеры используют свечные графики, поскольку последние предоставляют больше информации, чем обычные (например, тот, который мы только что построили). Теперь добавим на график свечи.
Удалите предыдущий график, если еще не сделали этого, и добавьте новый. Теперь у нас должен получиться обычный свечной график.
Построение скользящих средних (MA)
Простая скользящая средняя (SMA)
Мы можем построить SMA, а потом сравнить ее с EMА. Добавьте в скрипт следующую строку:
Эта строка отобразит среднее значение за предыдущие 10 дней. Вы можете задать в скобках разные значения периода и посмотреть, как изменяется кривая.
SMA за предыдущие 10 дней
Экспоненциальная скользящая средняя (EMA)
EMA немного сложнее для понимания, но не беспокойтесь. Сначала разберем формулу:
О чем говорит эта формула? Для каждого дня мы рассчитываем новую скользящую среднюю на основе предыдущей. Множитель – «вес» предыдущего периода, который рассчитывается по следующей формуле:
Как и в случае с простой скользящей средней, нужно указать период построения EMA. По синтаксису функция для EMA аналогична функции SMA. Для наглядности построим график EMA рядом с SMA:
Разница между SMA и EMA
Встроенные скрипты
До сих пор мы писали код вручную, чтобы подробнее в нем разобраться. Но давайте изучим инструмент, который позволит сэкономить нам время, особенно если мы пишем более сложные сценарии и не хотим делать это с нуля.
Добавьте код на график
Построение индикатора индекса относительной силы (RSI)
Тестирование стратегий
Мы можем протестировать наши собственные индикаторы. Несмотря на то, что эффективность на исторических данных не является гарантией будущих результатов, тестирование на них скриптов может дать представление о том, насколько они эффективны для отслеживания сигналов.
Рассмотрим в качестве примера простой скрипт. Создадим простую стратегию, по которой будем открывать длинную позицию, когда цена BTC падает ниже 11 000 долларов США, и закрывать позицию, когда цена превышает 11 300 долларов США. Мы можем посмотреть, насколько прибыльной является эта стратегия применительно к истории рынка.
Итак, если цена меньше или равна желаемому значению входа, первое выражение оценивается как истинное и мы открываем длинную позицию. Когда цена станет равной или превысит желаемое значение выхода, сработает второй блок, закрывающий все открытые позиции.