#60 Стакан_Цена_построчно_С сохранением истории

Автор: 777

#60 Стакан_Цена_построчно_С сохранением истории - Tue Dec 25 2012 09:43 PM

ИНДИКАТОР НЕ РАБОТАЕТ

Прошлая версия индикатора, благодаря разработчикам TSLab получила продолжение.
Индикатор сделан для версии 1.2 в версии программы 1.1 он работать не будет!
В новой версии индикатора есть сохранение истории стакана в файл. В сборке 6 блоков(обработчиков):




Работа с блоками сохранения:
Скрипт не нужно ставить в реал на торговлю. Пишут индикаторы и просто установленные в обычный график. Главное, что бы график обновлялся. Блоков сохранения два. "BidHistory" и "AskHistory". Блоки цепляются к источнику.
В блоках два параметра:
Параметр "Folder" - создает в указанной директории папки либо Ask либо Bid (слеш вот такой / ) .
Пример: если в параметре Folder блока "BidHistory" написать c:/Data/fRTS/H3 , то в указанной директории будет автоматически создана папка Bid, в которой и будут сохранятся файлы.
Параметр "SaveInterval" - это не то, что Вы подумали сразу. )) Этот параметр задает - через какой интервал в секундах старый кеш сохранится в файл и блок начнет записывать новый файл. Например, если в блоке "AskHistory" указать 300, то каждые 5 минут будет образовываться новый файл в папке Ask. Сделано это для того, что бы можно было балансировать между скоростью работы и возможностями компьютера. Настраивать опытным путем.
Работа с блоками чтения
Блоки цепляются к источнику. Блоков четыре.
"AskReader", "BidReader", "AskVolumeRead", "BidVolumeRead" Здесь Три параметра:
"Folder" - нужно указать тот же путь, что указан в блоках History
"Level" - номер строки стакана
"DefaultVal" - параметр должен быть равен 0. В следующей сборке он пропадет.


Теперь о багах:
Известные нерешенные баги индикатора:
1. Нельзя обращаться из других скриптов, вернее можно, но к добру не приводит. Т.е. в каком скрипте или графике блоки писатели(History) находятся, в этом же редакторе и должны находится блоки читатели(Reader) данного указанного пути директории.
2. Пока индюк не подключен к источнику и/или источник не подключен к серверу брокера индюк дает ошибку "null pointer эксепшн" И пропадет ошибка, как только программа подключается к серверу. (ИСПРАВЛЕНО)
3. Если параметр "SaveInterval" настроен не правильно, Вы увидите как с графика пропадают последние данные индикатора за несколько баров. Так же это произойдет, если в скрипт подгружено слишком много баров.


Про баги сообщайте плиз.


Как правильно подгружать индикаторы в программу версии 1.2 можно посмотреть на видео канале разработчиков TSLab:


Автор: Nigel22

Re: #60 Стакан_Цена_построчно_С сохранением истории - Tue Jan 08 2013 11:39 PM

Спасибо за труды)

Пробую писать/читать блоки, но выдает
"Ошибка при вычислении блока 'AskVolumeRead1'. Индекс за пределам диапазона."
Вроде все правильно делаю:
-ДефалтВол 0
-путь как и в Хистори
-Левел от 0 до 19

Если удалить блок чтения, то все нормально пишется, скрипт не ругается.

Может с таймфреймом и режимом пересчета какой секрет?Хотя и там все варианты перебрал - не могу заставить читаться.

Автор: 777

Re: #60 Стакан_Цена_построчно_С сохранением истории - Wed Jan 09 2013 01:51 PM

Кол-во баров чуть побольше и флаг обновлять в режиме реал тайм должен быть включен.
И все блоки в одном редакторе.
Помогло?
Автор: Nigel22

Re: #60 Стакан_Цена_построчно_С сохранением истории - Wed Jan 09 2013 07:03 PM

Флаг стоял и блоки в одном скрипте.
Единственное что изменил - увеличил кол-во баров до 3000 (тики) - заработало.
Но все-таки косяк где-то - минут через 10 нормального воспроизведения опять стал возвращать "Индекс AskVolumeRead1 за пределами диапазона"

п.с. поэкспериментирую с секундами,отпишусь
Автор: 777

Re: #60 Стакан_Цена_построчно_С сохранением истории - Wed Jan 09 2013 07:41 PM

Там на картинке я написал, а в тексте забыл. Можно только от 1 секунды и выше. Много баров то же нельзя, иначе пойдет запись через пень колоду. Короче пока сыро очень. (( Но начинать записывать стакан можно и нужно. )
Автор: Nigel22

Re: #60 Стакан_Цена_построчно_С сохранением истории - Wed Jan 09 2013 11:34 PM

Кажется понял. Проблема в том что после истечения времени указанного в параметре SaveInterval новый файл не создается (запись не идет) и следовательно выдается "Индекс Ридера за пределами диапазона". Т.е если указать в SaveInterval 300, то только 5 минут скрипт будет нормально писать/читать.
Завтра попробую поставить большой интервал.
Автор: 777

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Jan 10 2013 01:30 AM

( Должен создаваться. Т.е. в самой папке даже намека нет на файл? Странно очень. ( У меня файлы создаются новые.
Скажите, плиз, конфигурацию своего компа.
Может падение интернета частые или сервер брокера не барахлил?
Автор: Nigel22

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Jan 10 2013 06:25 PM

Интернет и сервер брокера я бы исключил сразу же.
Происходит следующее: Ставим интервал допустим 600, пошла запись, чтение, все нормально, по истечении 10 минут скрипт выдает "Индекс за пределами диапазона" и ТОЛЬКО ТОГДА в папке (будь то bid или ask) появляется первый bin файл. Т.е время прекращения нормальной работы скрипта совпадает со временем создания файла. На сколько я могу судить блоки History пишут, но не в файл, а в кэш программы, затем по истечении указанного интервала данные сбрасываются в файл. После этого скрипт каждый свой пересчет продолжает выдавать ошибку об индексе, но история пишется и новые файлы создаются каждые 10 минут. Как мне кажется Ридер хочет прочитать то, чего еще нету, отсюда и "Индекс за пределами диапазона"

Мой конфиг на всякий случай:
Коре 2 Дуо Е6550 2,3Ггц
ОЗУ 8 Гб
NVIDIA 8800 GTS
ASUS P5K
Win home premium x64
TSlab 1.2.5.0 x64

п.с. Может в 32 битной версии стоит попробовать?
Автор: Nigel22

Re: #60 Стакан_Цена_построчно_С сохранением истории - Fri Jan 11 2013 04:07 PM

Сегодня в течении нескольких часов записывал и читал данные, не сбрасывая в файл (установив большой интервал) но чем дальше в лес, тем корявее запись. Все же для нормальной работы с блоками нужно периодически скидывать кэш в файл...а у меня после этого перестает нормально читаться.
Кому-нибудь (кроме автора :)) удалось нормально воспроизводить записанные данные?
Автор: 777

Re: #60 Стакан_Цена_построчно_С сохранением истории - Fri Jan 11 2013 05:22 PM

Похоже что нет. Поправим, отпишусь. Пока использование индюка не реально.
Автор: 777

Re: #60 Стакан_Цена_построчно_С сохранением истории - Mon Jan 21 2013 08:57 PM

Исправлен баг с индексом за пределами диапазона. Удален параметр DefaultValue из читалок.
Обновлен топик.
Автор: Nigel22

Re: #60 Стакан_Цена_построчно_С сохранением истории - Tue Jan 22 2013 03:38 PM

Originally Posted By: 777
Исправлен баг с индексом за пределами диапазона. Удален параметр DefaultValue из читалок.
Обновлен топик.

А по-моему не исправлен...все так же(
Автор: 777

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Feb 07 2013 04:13 PM

В первом сообщении добавлен StHist_фикс2.zip
Для корректной работы необходимо загрузить последнюю сборку 1.2
Поправлены ошибки и решена проблема с работой в нескольких скриптах.
Автор: Nigel22

Re: #60 Стакан_Цена_построчно_С сохранением истории - Fri Feb 15 2013 01:11 PM

Поставил StHist_фикс2.zip, обновил лабу до 1.2.5.44 - все так же frown
Автор: 777

Re: #60 Стакан_Цена_построчно_С сохранением истории - Fri Feb 15 2013 05:03 PM

Странно, у меня работает. А как именно не работает? Что программа пишет?
Автор: Nigel22

Re: #60 Стакан_Цена_построчно_С сохранением истории - Fri Feb 15 2013 06:41 PM

То же самое что и в предыдущей сборке - Ридер за пределами диапазона(
Автор: SvV

Re: #60 Стакан_Цена_построчно_С сохранением истории - Fri Feb 15 2013 09:43 PM

Попробуйте не использовать сохраненный скрипт, а пересоздать оба скрипта заново "с нуля". В отдельном скрипте пишущую часть, в другом читалку.
Автор: Nigel22

Re: #60 Стакан_Цена_построчно_С сохранением истории - Sat Feb 16 2013 12:00 AM

Ок, попробую, но уже в понедельник, отпишусь.
Автор: 777

Re: #60 Стакан_Цена_построчно_С сохранением истории - Sat Feb 16 2013 09:52 PM

И перед запуском почистите папки со старым кэшем на всякий случай.
Автор: Nigel22

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Feb 21 2013 11:30 PM

Хоть застрелись...никак не получается, даже на последней сборке (1.2.5.53), как впрочем и на нескольких предыдущих.
Автор: BlackMagic

Re: #60 Стакан_Цена_построчно_С сохранением истории - Wed Mar 13 2013 08:03 PM

Сделал в визуальном редакторе скрипт индикатор для фронтраннинга но есть ошибки кто хочет повозится и доработать прошу написать в лику.
Автор: Snowman

Re: #60 Стакан_Цена_построчно_С сохранением истории - Wed Jul 10 2013 10:43 PM

Хороший индикатор, но в реальной торговле, чем дольше индикатор записывается, тем дольше начинает пересчитываться скрипт. Чем больше сохранееного кэша, тем дольше скрипт будет пересчитываться. Очень быстро растёт это время, через час торговли скрипт может уже нескольк секунд пересчитываться. Без разницы какой параметр ставить в Save Interval. Без блоков чтения в агенте всё пересчитывается нормально.
Автор: ViL

Re: #60 Стакан_Цена_построчно_С сохранением истории - Wed Jul 10 2013 11:36 PM

В свойствах скрипта ограничьте МаксБаров
Автор: Snowman

Re: #60 Стакан_Цена_построчно_С сохранением истории - Wed Jul 10 2013 11:55 PM

Не помогает, всё уже перепробовал. МаксБаров менял, и папку удалял куда кэш сохраняется через некоторое время. Сначала скрипт пересчитыывется нормально 2мс, через 10 мин - 30мс, через час 400мс и тд. Без блоков чтения в торгующем скрипте всё пересчитывается стабильно 1 мс.
Автор: Snowman

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Jul 11 2013 12:02 AM

Для записи истории стакана очень хороший индикатор. Не подскажите, нет кубиков Аск_стакан,Бид_стакан,Аск_стакан_объем,Бид_стакан_объем, которые без сохранения истории работают, как у 777 раньше были. Только для 1.2 работающие?
Автор: ViL

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Jul 11 2013 12:08 PM

http://forum.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=20084#Post20084
не работают в 1.2 ?
Автор: Snowman

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Jul 11 2013 12:14 PM

Нет. У меня вот что пишет:
12:13:15.95 138 System.MissingMethodException: Method not found: 'System.Collections.Generic.IList`1<TSLab.Script.IQueueData> TSLab.Script.ISecurity.GetSellQueue(Int32)'.
at TSLab.Script.Handlers.Аск_стакан.Execute(ISecurity source)
at TSLab.User.Script.<>c__DisplayClass2.<Execute>b__0()
at TSLab.DataCommon.Cache.ObjectsCacheBase`3.Get(TKey name, CacheObjectMaker`1 maker)
at TSLab.ScriptEngine.BaseTemplateContext.GetData(String handlerName, String[] parameters, CacheObjectMaker`1 maker)
at TSLab.User.Script.Execute(IContext context, ISecurity Источник1)
Автор: Snowman

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Jul 11 2013 12:25 PM

Перекомпилировать я не знаю как. Там лежат исходники на Аск_стакан, Бид_стакан. Их перекомпилировал. А на Аск_стакан_объем,Бид_стакан_объем исходников нету.
Автор: Rolekc

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Jul 25 2013 07:45 PM

Скрипт в режиме лаборатории ведёт обсчёт по установленному интервалу, а в режиме агента только 1М. в чём причина?
Автор: SupportTSLab

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Jul 25 2013 08:14 PM

Originally Posted By: Rolekc
Скрипт в режиме лаборатории ведёт обсчёт по установленному интервалу, а в режиме агента только 1М. в чём причина?


Подробнее можете описать, по какому интервалу, какой скрипт и т.д
Автор: Rolekc

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Jul 25 2013 08:41 PM

Торговый скрипт использует данные из индикатора стакана (в первом посте темы). Интервал задавал самый различный: тики, секунды, минуты. Интервал пересчета указывал и Интервал, и Сделка, и Пок/Прод. В режиме лаборатории скрипт всё показывает нормально и обсчёт происходит по заданному интервалу. Если включить скрипт в режиме агента, то обсчёт идёт только в период - 1 минута. Причём в настройках скрипта задал макс. баров - 60, а лог агента сообщает, что пересчитано 31740 баров.
Автор: 777

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Jul 25 2013 09:17 PM

А в какой версии индикатора и какая версия TSLab, это наблюдается?
Автор: Rolekc

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Jul 25 2013 09:35 PM

Версия программы 1.2.8.0. Индикатор тот, который в первом посте выложен. Кстати, в другом скрипте всё норм. ХЗ. Буду искать.
Автор: Snowman

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Jul 25 2013 09:36 PM

Там нужно поставить в скрипте использовать дату от...Сегодняшний день или лучше несколько часов назад. Это должно помочь. Там ридеры по моему пытаются прочитать всю историю загруженных котировок, независимо от того сколько стоит макс бар.
Автор: Rolekc

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Jul 25 2013 11:00 PM

Не помогло. Использую два источника..., хотя опять таки в лабе всё так как надо.
Автор: 777

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Jul 25 2013 11:54 PM

Originally Posted By: Rolekc
Версия программы 1.2.8.0. Индикатор тот, который в первом посте выложен. Кстати, в другом скрипте всё норм. ХЗ. Буду искать.

В первом посте два индикатора. Какой из них?
Скрипт киньте, что бы у себя воспроизвести. (измените там что-нибудь, что б систему не палить мне)
Автор: Rolekc

Re: #60 Стакан_Цена_построчно_С сохранением истории - Fri Jul 26 2013 09:05 AM

Ok.
Автор: Rolekc

Re: #60 Стакан_Цена_построчно_С сохранением истории - Fri Jul 26 2013 10:15 AM

Появилась вот такая байда

10:01:27.64 138 System.InvalidOperationException: Коллекция была изменена; невозможно выполнить операцию перечисления.
в System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
в System.Collections.Generic.List`1.Enumerator.MoveNextRare()
в System.Collections.Generic.List`1.Enumerator.MoveNext()
в System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate)
в StHist.TGlassHistory.HasTimeStamp(DateTime stamp)
в StHist.BidHistory.Execute(ISecurity source)
в TSLab.User.Script.<>c__DisplayClass8.<Execute>b__4()
в TSLab.DataCommon.Cache.ObjectsCacheBase`3.Get(TKey name, CacheObjectMaker`1 maker)
в TSLab.ScriptEngine.BaseTemplateContext.GetData(String handlerName, String[] parameters, CacheObjectMaker`1 maker)
в TSLab.User.Script.Execute(IContext context, ISecurity Источник1, ISecurity Источник2)


И ещё

10:31:53.49 138 Ошибка при вычислении блока 'BidHistory1'. Индекс за пределам диапазона.
Автор: Rolekc

Re: #60 Стакан_Цена_построчно_С сохранением истории - Mon Jul 29 2013 09:58 PM

У меня кстати не работает на опционах.
Автор: Nigel22

Re: #60 Стакан_Цена_построчно_С сохранением истории - Mon Jul 29 2013 11:17 PM

Индикаторы не работают, и не только на опционах. Один из основных индикаторов рынка, а его разработчики не хотят делать, все остальное - мусор и хлам.
Автор: ra81

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Dec 05 2013 03:12 PM

http://forum.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=59547#Post59547

Тут рабочий вариант. Данный экземпляр оказался бесперспективным чтобы доводить до ума.
Автор: 777

Re: #60 Стакан_Цена_построчно_С сохранением истории - Thu Dec 05 2013 05:44 PM

Очень рад, что получилось сделать.