Блог им. SHLAK

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

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

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


★2
22 комментария
Решение вижу два! Какое на ТС Лаб?
avatar
в S# предусмотрена возможность создания собственных модулей на языке C#, напишите собственный модуль сохранения данных в файл, необходимых при перезагрузке системы, это делается в любом торговом роботе и любой платформе и зависит только от пользователя
avatar
Константин, так и есть, догадывался что это так реализовали! 
Это полный привет, минусы такой реализации  даже обсуждать не хочу! Начинаю понимать по чему: 
В июле моё терпение лопнуло. Кстати, на сайте «Аист-Инвест» публично отображаются результаты их торговли. Имейте в виду, что к реальности они не имеют никакого отношения.
Чего только стоит идея «сформировавшейся свечи». Это же надо было такое придумать!

Думаю теперь знаю по чему у Sergey Pavlov, проходят онлайн сделки, которых потом нет на истории! И это на длинных тайм фреймах такое! С такой реализацией, синхронизация с рынком лишь сидя у монитора
avatar
Борис Литвинов, это нормальная практика, а вот почему у вас такие мысли:
Это полный привет, минусы такой реализации  даже обсуждать не хочу!
это не понятно, ведь разработчики S# не в курсе кто и какие переменные использует и будет использовать, поэтому на совести программиста-пользователя, это реализовывать самостоятельно, для это разработчик предоставил разработанный механизм, тем кому он не нравится, пусть пишут на C# библиотеке и такой подход так же имеет место быть ))
а вообще общепринятая практика в программах, при старте читать из файлов состояние переменных которые были до выгрузки программы, т.е. во время исполнения кода программы, состояние важных переменных при их изменении (если это может нарушить общую логику при перезагрузке) сбрасывается в файл ))
avatar
Константин, думаю это имеет место быть в положении окон, ну и подобном. Но здесь это не допустимо! Сначала придумали грабли которые никогда не будут синхронны. А после к этим граблям ещё наградили такого что лишь усугубляет. Над этой проблемой бился, решил когда писал свой тестер на начальном языке, понимаю тех кто пытается добиться стабильности  этим методом. По сути она не возможна. В подарок асинхрон.
avatar
Борис Литвинов, я вас не понимаю если честно, ваш вопрос решается стандартными методами, теми что описаны мной выше, а вы хотите что бы разработчики не зная что сохранять писали сохранение за вас )) ну т.е. абсурд
например у меня в роботе есть данные учета торговых сущностей — ордера и позиции, есть объект контроля торговых транзакций, кроме того используются объекты и переменные необходимые в логике
при перезагрузке робота, эти данные обнулятся, писать модуль определения логики из того что открыто в рынке абсурд, я сделал сохранение двух первых объектов данных — список учета и объект контроля, все остальное восстановится по мере отработки логики, которая будет подхвачена на основании восстановленных данных по первым двум объектам
откуда разработчики S# могут знать что мне нужно сохранять ))
вот поэтому сохранение необходимых данных (как вариант в файл) это стандартная процедура в любом ПО

PS. это не на S#, но суть та же
avatar
Константин, не думаю что у всех разработчиков так реализована эта задача! Как нибудь сделаю обзор. Сделаю акцент на этом моменте, как  решается по другому! Причем если решать другим способом, городить города нет необходимости. При этом очень сложные системы с любой частотой исполнения синхронны. По тому что опираются только на рыночную составляющую. А не файл истории! Позже постараюсь предложить иной угол обзора к этой теме. Спасибо за участие.
avatar
Борис Литвинов, это про какой огород вы говорите? сохранение данных в файл это огород? вы чего то не понимаете похоже, на файлах основано все хранение информации и этим пользуются все разработчики любого ПО где нужно сохранение какого либо состояния, понимайте именно буквально — любого ПО
avatar
Константин, повторю, когда это касается позиции окон, настроек программы, это норма.
avatar
Борис Литвинов, а почему вы считаете, что все остальное не норма?
объясню по другому — файлы были созданы изначально для хранения различной информации и этим пользуются до сих пор, т.к. другой альтернативы нет )) все что требует сохранения для использования в последствии, хранится только в файлах
как пример, открылась позиция по тикеру, выставили согласно какой то там логике доплнительно несколько лимитников, все это мы учитываем в списке либо массиве либо векторе либо еще как то, если мы закроем программу, то этот список удалится и при загрузке программы если у нас все висит так же в рынке, у нас есть два пути:
1. восстановить логику их открытия оттталкиваясь от тех данных, что мы можем получить с биржи
2. сбросить в файл состояние списка перед выгрузкой программы либо по флагу если список изменился и при загрузке программы, подгрузить из файла эти данные
как результат — у нас будет восстановлена какая то логика программы, которая была выполнена до момента выгрузки этой программы
я вторым вариантом как и подавляющее большинство программистов пользуюсь, т.к. проще сбросить в файл какие то ключевые данные, на основе которых будет восстановлена логика работы программы до ее выгрузки, чем изобретать логику воссоздания отработанной логики по движению ветра, положения солнца и т.д. ))
вот еще пример — торговый терминал при старте не имеет ни какой истории в окнах чартов, он ее предварительно подгружает из файлов, которые до этого предварительно сформировал при самом первом старте, а в процессе работы лишь дополняет эти файлы данными, как результат пользователь при старте терминала видит окна чартов с данными — исторические данные
т.е. не нужно зацикливаться на сохранении в файл только конфигурационных данных, там может храниться любая информация
например кластера я сжимаю т.к. файлы получаются без сжатия слишком большие, по несколько сот метров, а в сжатом виде всего несколько килобайт, но тут использую еще и маппинг т.к. при старте эти данные распаковываю в файл в памяти (memory map) что бы при обращении к таким фалам не сильно падала скорость из-за большого времени доступа к файлам на дисках
avatar
сейчас глянул, два класса записи в файл бинарных потока данных составляет около 900 строк кода, но там несколько структур и массивов, при чтении просто их проецируешь в бинарном потоке с определенным смещением и читаешь )) а т.к. делается все это на старте торгового робота, то время в несколько миллисекунд не критично, при записи эти данные так же скидываются достаточно быстро за несколько миллисекунд а т.к. это делается только по флагу изменения состояния, то в HFT роботе это не заметно…
avatar
Константин, вы ответили как сделано у меня в первом методе! Боту нужен лишь график цены. У бота есть начальная дата и всё! На любом компе запускай всегда сделки будут там где были. Начальная дата у бота может меняться в тот момент когда заканчивается круг. То есть когда бот выходит в кеш, эта дата считается нулевой! Вот и всё. Никакого рассинхрона с рынком, каких то сверок проверок не нужно! При перезапуске с начальной даты пробегает историю формируя все прошлые сделки и уходит в боевой режим. Бот запускается на любой машине, и переносится без всяких проблем. Повторюсь речь не о истории котировок речь о движке бота. У меня бот это и есть тестер. Только можно запустить его на 10 лет, а можно с последней нулевой даты. На любой машине все сделки будут всегда в одном месте зеркальны. + свое дело делает система подачи заявок. Когда по рынку, там вообще всё просто, у меня уравнивается поза бота с позой рынка. В общем каждому своё! Об  этой теме много думал, выработал и проблем, когда +100 лотов в памяти,  -100 лотов рынке не знаю! А вот сливаторов которые думали что у них куплено, а на самом деле продано начитался на СЛ. 
avatar
Борис Литвинов, )) чего то я так и не понял, что вам нужно сохранять тогда? судя по тому, что у вас логика восстанавливается с рынка, зачем тогда что то сохранять вообще? у меня просто в файл сохраняются данные по отработке логики и их много, т.е. с одного рынка восстановить конечно можно, но придется много чего писать из анализаторов ))
avatar
Константин, да, вы применяете по моему мнению к рынку то что как считаю сам не применимо! Но работает, если всё устраивает, то почему бы и нет! Лично меня такие сложности обременяют, когда думал о решении всё это перепробовал.  Жить у монитора нет желания. А если упало? и нет файла истории, а вы по уши в позе которую набирали несколько месяцев что тогда? не это не жизнь!
avatar
Борис Литвинов, вот умеете же вы так сказать, что теперь вообще ни чего не понятно стало ))
вы говорите о каких данных, которые вам надо сохранять? если данные истории, то в чем проблема собирать тиковые данные и сбрасывать их в файл? так делают многие трейдерские терминалы, сброс можно делать раз в сутки, а при загрузке робота, этот файл считывается в память окнами, зато у вас будет своя история, которой вы доверяете
на основе тиков уже формируются минутные бары, а на основе минутных все остальные, если нужна тиковая история то она есть за последние 6 месяцев, только файлы нужно будет распарсить предварительно
avatar
Константин, речь не об этом! Ладно, спасибо за ответы, главное понял что предлагают нам STOCK SHARP. Возьмем только нужное
avatar
Борис Литвинов, а я не стал его использовать вообще )) проще писать весь код робота самому
avatar
Константин, в курсе, вы же давно на СЛ. Как раз тоже привык свое писать. Изучал C# всё это время, и продолжаю учить. 
avatar
Борис Литвинов, )) а я так и не приучился к C#, плюсы и Python все же роднее ))
avatar
Борис Литвинов, доброго времени суток
также как и вы в последние время интересуюсь очень написанием алгоритмов в designer S
оплатил тех поддержку на месяц на stocksharp, но что то они не очень там шевелятся.
вы у них обучение покупать не планировали? можно сообща купить обучающее видео, возможно от него будет больше пользы) пишите в лс
avatar
Павел, уже разобрался, читайте все части моего погружения в S#.Designe. Есть и видео и разбор полетов в моих постах. Найдете и боевой режим работы. 
В тех поддержке надобности не вижу!
avatar

теги блога Boris Litvinov

....все тэги



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