Sergey Cellinsky
Sergey Cellinsky личный блог
30 июня 2019, 11:50

tslab и c#

Я периодически поругиваю tslab, но есть у него вещи, которые искупают недостатки. Писал как-то о проблеме, что движок с некой периодичностью (раз в неделю, в несколько, итп) может потерять кусок данных за несколько дней. Было 4000 баров, а стало 3800. Это приводит к тому, что мы вошли например в позицию, а с утра данные за два последних дня куда-то уехали. Мы в позиции, а с чего не понятно. Такая фигня возникает исключительно с itinvest, и в целях своевременного выявления я привинтил внешний скрипт, контролирующий по журналу, что число баров в инструменте всегда увеличивается. Всё было хорошо довольно долго, но на прошлой неделе метод перестал работать. В журнал перестали попадать записи нужного формата, хотя ничего не трогалось. Привязаться к чему-то еще не удалось, значит пойдем другим путём. Давно я целился в tslab api, что-бы делать какие-то мелкие вещи, и ребята откровенно порадовали. Вот тут   — как ставить и интегрировать среду разработки.  Здесь  доходчиво объясняются основные моменты, а тама можно найти исходники всех кубиков от версии 2.0, поэтому не придется взрывать себе разум, восстанавливая логику если нужно всего-то поправить чуть-чуть оригинал. 

В моём случае, есть кубик 'Сообщение', который сбрасывает в журнал запись по триггеру. Если категория 'DEBUG' то только в лог, если любое другое, то еще и в окно журнала событий программы. Одна беда, мне нужно не просто сообщение, а еще и численное значение поданное на вход. Не проблема, берем MessageHandlers.cs , впиливаем туда доп. вход и его обработку в меру своего умения программировать и вуаля. Теперь можно завести на вход номер бара и спокойно его отслеживать. Красота.

Правда я так и не понял, зачем там два обработчика Execute, т.к. что в режиме лабы, что в агенте — выполняется второй… Но на всякий случай оставил. Правленый исходник выложил тут может кому еще пригодится.

12 Комментариев
  • Андрей К
    30 июня 2019, 12:29
    Правда я так и не понял, зачем там два обработчика Execute
    В программирование есть понятие «переопределение методов». Если на пальцах — это методы с одинаковым названием, но разным набором входных параметров. Соответственно и выполнение пишется разное.

    Соответственно, у вас подключение:
    в журнал запись по триггеру...  на вход номер бара
    что соответствует второму Execution.

    Если бы вы подключили по другому (какой то набор триггеров судя по всему), то срабатывал бы первый Execution
    • Константин
      30 июня 2019, 13:19
      Андрей К, в программировании это называется перегрузкой, т.е. когда название функции / метода одинаковое, но сигнатура разная )))

      • Андрей К
        30 июня 2019, 13:39
        Константин, ой да, спутал с переопределением операторов, спс =)
  • VladMih
    30 июня 2019, 13:27
    Поругивать надо, конечно! 
    Но русских аналогов, к сожалению, нет.
  • ves2010
    30 июня 2019, 19:15
    торгую в айти… тслаб + смартком — проблем нет...
    в чем проблема написать в техподержку?
    • ch5oh
      01 июля 2019, 12:48
      ves2010, на СЛ проще черкануть. Причем сразу двух зайцев можно убить.
  • dnmsk ☮
    01 июля 2019, 10:01
    Всегда думал, что для шарпа есть студия. Ан нет, тут какой-то велосипед изобрели.
    • ch5oh
      01 июля 2019, 12:47

      dnmsk, для шарпа — студия. Не волнуйтесь.

      Для трейдеров — блок-схемы.

      • dnmsk ☮
        01 июля 2019, 12:50
        ch5oh, забыл поволноваться)

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

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