Блог им. akumidv

Загрузка внешних сигналов на график Tradingview

    • 16 августа 2021, 08:30
    • |
    • akumidv
  • Еще

Я столкнулся с необходимостью загрузить на график трейдингвью сигналы покупки/продажи робота и бактеста для их графической проверки на истории. В итоге сделал расширение для гугл хрома, цикл загрузки выглядит примерно так (тестовые данные):

Пример последовательности работы с расширением браузера Tradingview assistant


Чуть подробней и как попробовать ниже.


В сообществе рекомендуют автоматически формировать Pinescript с условиями времени на каждое событие. Но это крайне неудобно и лимит 900 строк, а значит 900 сигналов.

Эту задачу можно решить лучше и проще, передать сигналы в индикатор как строки со штампом времени и проверять на их совпадение с текущим временем бара. Ограничение только в точности совпадения штампов времени. Есть ещё на лимиты в длине строке параметров и времени вычислений, но на тестовых 5000 сигналов я не столкнулся и ни с тем, ни с другим.


Скрипт простейший. Его нужно создать, сохранить и добавить на текущий график. Появится индикатор с именем «iondvSignals». Можно доработать, например добавить вывод текста, или изменить значок. Можно поменять на другой символ, бар или линию.

//©akumidv
//@version=4
study(«iondv Signals», shorttitle=«iondvSignals», overlay=true)
strTSBuy = input("", «TSBuy»)
strTSBuy = input("", «TSSell»)
tickerName = input("", «Ticker»)
var arrTSBuy = str.split(buy_series_time, ",")
var arrTSSell = str.split(sell_series_time, ",")
plotchar(tickerName == syminfo.ticker and array.includes(arrTSBuy, tostring(time))? low: na, location = location.belowbar, color=color.green, char='▲')
plotchar(tickerName == syminfo.ticker and array.includes(arrTSSell, tostring(time))? low: na, location = location.abovebar, color=color.red, char='▼')


Строка параметров должна выглядеть примерно так: 16255593400000,1625560200000,1625718600000,1625719500000.

А чтобы было удобней с этим работать, сделал загрузку параметров из CSV файла в виде расширение в хроме «Tradingview assistant», которое:

  • загружает данные в хранилище браузера
  • автоматически вставляет их в поле параметров индикатора, когда вызывается его окно параметров, если эти данные есть для данного тикера и таймфрейма

Расширение пока ещё не опубликовал в интернет-магазин Chrome, т.к. доделываю вторую часть — хочу реализовать оптимизацию параметров для стратегии Tradingview (по-видимому методом отжига), с этим же подходом — эмуляции действий в трейдингвью в браузере. Это может быть удобно для прототипирования и проверки торговой стратегии. Ну и выгружать весь список сделок для анализа.

Но версию загрузки сигналов из файла можно уже посмотреть, если установить расширение в режиме разработчика, т.к расширение опубликовано на гитхаб под открытой лицензией Apache 2. Как это сделать:

  1. Скачиваете архив с расширением по прямой ссылке https://github.com/akumidv/tradingview-assistant-chrome-extension/archive/refs/heads/main.zip
  2. Распаковываете.
  3. Переходите в список расширений browser://extensions/
  4. В правом верхнем углу включаете Режим разработчика
  5. В левом верхнем углу появится кнопка «Загрузить распакованное расширение»
  6. Выбираем папку в которое распаковали архив.
  7. Открываем в отдельной вкладке график tradingview и на нём кликаем на появившуюся иконку расширения.
  8. В окне расширения вкладка «External signals», кнопка «Upload signals» (все изначально делал на английском, русскую локализацию пока не делал).
  9. Пример файла CSV можно скачать там же.
Ограничения на файл CSV и данные:
  • в файле CSV обязательны заголовки "timestamp,ticker,timeframe,signal"
  • поле сигналов (signal) должно содержат слово BUY или SELL (можно и маленькими буквами)
  • дата должна быть либо датой в локальном формате или ISO, либо меткой времени UNIX
  • тикеры и таймфреймы в заголовке графика должны совпадать с загруженными, причем поддерживаются только минуты, часы и дни
  • в одном файле тикеры и таймфреймы можно миксовать. Также можно загрузить несколько файлов сразу и дозагружать их потом
  • новые данные для для комбинации тикера и таймфрейма заменяет предыдущие.

Не забудьте кликнуть на параметры индикатора «iondvSignals» когда на графике загруженные тикер и таймфрейм. При открытии окна свойств, расширение автоматически проверит есть ли данные, введет их, покажет окно об успехе и диапазоне дат, а также применит изменения параметров индикатора автоматически



Я буду рад обратной связи, идеям, мыслям, предложениям и найденным ошибкам. Их можно написать в комментах, лично или сделать заявку


Деклаймер.

Расширение распространяется как есть под открытой лицензией и на условиях Apache 2. Исходный код доступен. Расширение требует минимум доступов и только на сайте tradingview.com, а именно к локальному хранилищу браузера (используется для хранения загруженной информации сигналов) и работает только на активной вкладке Tradingview.

★7
13 комментариев

Выглядит интересно, но не понимаю зачем уже сделанный бэктест накладывать графически на свечи TW. Ведь есть данные по точкам, считались они по массиву OHLCV, есть итоговые цифры. Что даст визуальный анализ?

avatar
Винни Пух, мне не очень нравится как например backtrader рисует сделки например. Мне хотелось понять после гипероптимизации параметров, как ТС работает, что пропускает и что находит. Т.е. для визуальной перепроверки сделок, в том числе через другие индикаторы, которые не использовались и в каких условиях рынка ТС можно доработать.
avatar
Круто, спасибо огромное!
avatar
Я совсем залёный в теме, и многие вещи из статьи где-то внутри откликаются. У меня вопрос, точнее поставил перед собой задачу. Например, у меня есть спотовый сигнал, который уже отработал и мне нужно узнать, через какое время (в часах/сутках) сигнал достиг первой цели, второй и так далее, или стопалоса (тоже из сигнала), это возможно как-то сделать с помощью Вашего расширения или нет? Расширение скачал в хром, но пока не понимаю что именно нужно грузить в аплоад сигнал, в каком виде должен быть сигнал чтобы расширение его прочитало?

Фархад Рахметов, был в отпуске, ответил.
avatar

Я не очень понимаю, что значит через какое время достиг сигнал цели. Но если у вас есть сигналы и время когда они сработали, то нужно сформировать CSV по шаблону (его можно скачать с расширения)

timestamp,ticker,timeframe,signal<br />1625718600000,BTCUSDT,1m,BUY<br />2021-07-27T01:00:00Z,BABA,1H,SELL

Причем дата может быть в любом формате, который парсится ява скрипт developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse#examples

Второй столбец csv — тикер, третий таймфрейм, четвертый BUY/SELL тип сигнала соответственно.

Чтобы сигналы загрузились нужно еще добавить скрипт на страницу — его тоже можно скачать с расширения или он есть выше.

 

avatar
я тоже не могу подключить оптимизатор, в начале тестирования выдает ошибку что чего то не хватает, а хз чего

avatar

 

line 3: no viable alternative at character '«' Скрипт 'iondv Signals' был сохранен

скрипт выдает ошибку, переписываю, все равно не сохраняется и не добавляется на график, в чем проблема?

avatar

в коде выше видимо опечатка
strTSBuy = input("", «TSSell»)
должно быть strTSSell
avatar
не понятно что нужно писать по времени?
подгрузил стратегию, вписал тикер нужный, а что вписывать в дату?
стратегия прогоняет интервал не зависимо от содержимого файла.
но идея класс, спасибо!
avatar

теги блога akumidv

....все тэги



UPDONW
Новый дизайн