akumidv
akumidv личный блог
16 августа 2021, 08:30

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

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

Пример последовательности работы с расширением браузера 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.

13 Комментариев
  • Винни Пух
    16 августа 2021, 09:15

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

  • Follower
    28 августа 2021, 10:58
    Круто, спасибо огромное!
  • Фархад Рахметов
    16 августа 2022, 23:53
    Я совсем залёный в теме, и многие вещи из статьи где-то внутри откликаются. У меня вопрос, точнее поставил перед собой задачу. Например, у меня есть спотовый сигнал, который уже отработал и мне нужно узнать, через какое время (в часах/сутках) сигнал достиг первой цели, второй и так далее, или стопалоса (тоже из сигнала), это возможно как-то сделать с помощью Вашего расширения или нет? Расширение скачал в хром, но пока не понимаю что именно нужно грузить в аплоад сигнал, в каком виде должен быть сигнал чтобы расширение его прочитало?

  • devil1
    17 сентября 2022, 14:57
    я тоже не могу подключить оптимизатор, в начале тестирования выдает ошибку что чего то не хватает, а хз чего

  • devil1
    07 октября 2022, 12:55

     

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

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

  • Stingray
    11 октября 2022, 00:05

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

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн