Boris Litvinov
Boris Litvinov личный блог
17 января 2018, 02:37

S#.Designe часть 2. (в предыдущих был запущен в боевой режим! Live)

S#.Designe часть 2. (в предыдущих был запущен в боевой режим! Live)

Как  работает на ТС Лаб боевой режим? Просто не смог решить пока что вопроса в боевом режиме на S#.Designe!
При перезапуске, начинает стратегию заново. Не учитывая прошлых трейдов! 
Не смотрит, были ли куплены лоты, да и саму стратегию начинает с текущего места по реальному времени!
ТО есть не подхватывает историю!


22 Комментария
  • Константин
    17 января 2018, 04:28
    в S# предусмотрена возможность создания собственных модулей на языке C#, напишите собственный модуль сохранения данных в файл, необходимых при перезагрузке системы, это делается в любом торговом роботе и любой платформе и зависит только от пользователя
  • Константин
    17 января 2018, 07:21
    Борис Литвинов, это нормальная практика, а вот почему у вас такие мысли:
    Это полный привет, минусы такой реализации  даже обсуждать не хочу!
    это не понятно, ведь разработчики S# не в курсе кто и какие переменные использует и будет использовать, поэтому на совести программиста-пользователя, это реализовывать самостоятельно, для это разработчик предоставил разработанный механизм, тем кому он не нравится, пусть пишут на C# библиотеке и такой подход так же имеет место быть ))
    а вообще общепринятая практика в программах, при старте читать из файлов состояние переменных которые были до выгрузки программы, т.е. во время исполнения кода программы, состояние важных переменных при их изменении (если это может нарушить общую логику при перезагрузке) сбрасывается в файл ))
      • Константин
        17 января 2018, 08:58
        Борис Литвинов, я вас не понимаю если честно, ваш вопрос решается стандартными методами, теми что описаны мной выше, а вы хотите что бы разработчики не зная что сохранять писали сохранение за вас )) ну т.е. абсурд
        например у меня в роботе есть данные учета торговых сущностей — ордера и позиции, есть объект контроля торговых транзакций, кроме того используются объекты и переменные необходимые в логике
        при перезагрузке робота, эти данные обнулятся, писать модуль определения логики из того что открыто в рынке абсурд, я сделал сохранение двух первых объектов данных — список учета и объект контроля, все остальное восстановится по мере отработки логики, которая будет подхвачена на основании восстановленных данных по первым двум объектам
        откуда разработчики S# могут знать что мне нужно сохранять ))
        вот поэтому сохранение необходимых данных (как вариант в файл) это стандартная процедура в любом ПО

        PS. это не на S#, но суть та же
          • Константин
            17 января 2018, 09:43
            Борис Литвинов, это про какой огород вы говорите? сохранение данных в файл это огород? вы чего то не понимаете похоже, на файлах основано все хранение информации и этим пользуются все разработчики любого ПО где нужно сохранение какого либо состояния, понимайте именно буквально — любого ПО
              • Константин
                17 января 2018, 17:55
                Борис Литвинов, а почему вы считаете, что все остальное не норма?
                объясню по другому — файлы были созданы изначально для хранения различной информации и этим пользуются до сих пор, т.к. другой альтернативы нет )) все что требует сохранения для использования в последствии, хранится только в файлах
                как пример, открылась позиция по тикеру, выставили согласно какой то там логике доплнительно несколько лимитников, все это мы учитываем в списке либо массиве либо векторе либо еще как то, если мы закроем программу, то этот список удалится и при загрузке программы если у нас все висит так же в рынке, у нас есть два пути:
                1. восстановить логику их открытия оттталкиваясь от тех данных, что мы можем получить с биржи
                2. сбросить в файл состояние списка перед выгрузкой программы либо по флагу если список изменился и при загрузке программы, подгрузить из файла эти данные
                как результат — у нас будет восстановлена какая то логика программы, которая была выполнена до момента выгрузки этой программы
                я вторым вариантом как и подавляющее большинство программистов пользуюсь, т.к. проще сбросить в файл какие то ключевые данные, на основе которых будет восстановлена логика работы программы до ее выгрузки, чем изобретать логику воссоздания отработанной логики по движению ветра, положения солнца и т.д. ))
                вот еще пример — торговый терминал при старте не имеет ни какой истории в окнах чартов, он ее предварительно подгружает из файлов, которые до этого предварительно сформировал при самом первом старте, а в процессе работы лишь дополняет эти файлы данными, как результат пользователь при старте терминала видит окна чартов с данными — исторические данные
                т.е. не нужно зацикливаться на сохранении в файл только конфигурационных данных, там может храниться любая информация
                например кластера я сжимаю т.к. файлы получаются без сжатия слишком большие, по несколько сот метров, а в сжатом виде всего несколько килобайт, но тут использую еще и маппинг т.к. при старте эти данные распаковываю в файл в памяти (memory map) что бы при обращении к таким фалам не сильно падала скорость из-за большого времени доступа к файлам на дисках
  • Константин
    17 января 2018, 18:10
    сейчас глянул, два класса записи в файл бинарных потока данных составляет около 900 строк кода, но там несколько структур и массивов, при чтении просто их проецируешь в бинарном потоке с определенным смещением и читаешь )) а т.к. делается все это на старте торгового робота, то время в несколько миллисекунд не критично, при записи эти данные так же скидываются достаточно быстро за несколько миллисекунд а т.к. это делается только по флагу изменения состояния, то в HFT роботе это не заметно…
      • Константин
        17 января 2018, 19:15
        Борис Литвинов, )) чего то я так и не понял, что вам нужно сохранять тогда? судя по тому, что у вас логика восстанавливается с рынка, зачем тогда что то сохранять вообще? у меня просто в файл сохраняются данные по отработке логики и их много, т.е. с одного рынка восстановить конечно можно, но придется много чего писать из анализаторов ))
          • Константин
            17 января 2018, 19:26
            Борис Литвинов, вот умеете же вы так сказать, что теперь вообще ни чего не понятно стало ))
            вы говорите о каких данных, которые вам надо сохранять? если данные истории, то в чем проблема собирать тиковые данные и сбрасывать их в файл? так делают многие трейдерские терминалы, сброс можно делать раз в сутки, а при загрузке робота, этот файл считывается в память окнами, зато у вас будет своя история, которой вы доверяете
            на основе тиков уже формируются минутные бары, а на основе минутных все остальные, если нужна тиковая история то она есть за последние 6 месяцев, только файлы нужно будет распарсить предварительно
              • Константин
                17 января 2018, 19:47
                Борис Литвинов, а я не стал его использовать вообще )) проще писать весь код робота самому
                  • Константин
                    17 января 2018, 20:07
                    Борис Литвинов, )) а я так и не приучился к C#, плюсы и Python все же роднее ))
                  • Павел
                    21 января 2018, 21:31
                    Борис Литвинов, доброго времени суток
                    также как и вы в последние время интересуюсь очень написанием алгоритмов в designer S
                    оплатил тех поддержку на месяц на stocksharp, но что то они не очень там шевелятся.
                    вы у них обучение покупать не планировали? можно сообща купить обучающее видео, возможно от него будет больше пользы) пишите в лс

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

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