Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
ИНДИКАТОР НЕ РАБОТАЕТ
Прошлая версия индикатора, благодаря разработчикам 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:
Пробую писать/читать блоки, но выдает "Ошибка при вычислении блока 'AskVolumeRead1'. Индекс за пределам диапазона." Вроде все правильно делаю: -ДефалтВол 0 -путь как и в Хистори -Левел от 0 до 19
Если удалить блок чтения, то все нормально пишется, скрипт не ругается.
Может с таймфреймом и режимом пересчета какой секрет?Хотя и там все варианты перебрал - не могу заставить читаться.
Флаг стоял и блоки в одном скрипте. Единственное что изменил - увеличил кол-во баров до 3000 (тики) - заработало. Но все-таки косяк где-то - минут через 10 нормального воспроизведения опять стал возвращать "Индекс AskVolumeRead1 за пределами диапазона"
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Там на картинке я написал, а в тексте забыл. Можно только от 1 секунды и выше. Много баров то же нельзя, иначе пойдет запись через пень колоду. Короче пока сыро очень. (( Но начинать записывать стакан можно и нужно. )
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
Кажется понял. Проблема в том что после истечения времени указанного в параметре SaveInterval новый файл не создается (запись не идет) и следовательно выдается "Индекс Ридера за пределами диапазона". Т.е если указать в SaveInterval 300, то только 5 минут скрипт будет нормально писать/читать. Завтра попробую поставить большой интервал.
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
( Должен создаваться. Т.е. в самой папке даже намека нет на файл? Странно очень. ( У меня файлы создаются новые. Скажите, плиз, конфигурацию своего компа. Может падение интернета частые или сервер брокера не барахлил?
Отредактировано 777 (Thu Jan 10 201301:30 AM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
Интернет и сервер брокера я бы исключил сразу же. Происходит следующее: Ставим интервал допустим 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
Сегодня в течении нескольких часов записывал и читал данные, не сбрасывая в файл (установив большой интервал) но чем дальше в лес, тем корявее запись. Все же для нормальной работы с блоками нужно периодически скидывать кэш в файл...а у меня после этого перестает нормально читаться. Кому-нибудь (кроме автора :)) удалось нормально воспроизводить записанные данные?
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
В первом сообщении добавлен StHist_фикс2.zip Для корректной работы необходимо загрузить последнюю сборку 1.2 Поправлены ошибки и решена проблема с работой в нескольких скриптах.
Отредактировано 777 (Thu Feb 07 201304:14 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
Хороший индикатор, но в реальной торговле, чем дольше индикатор записывается, тем дольше начинает пересчитываться скрипт. Чем больше сохранееного кэша, тем дольше скрипт будет пересчитываться. Очень быстро растёт это время, через час торговли скрипт может уже нескольк секунд пересчитываться. Без разницы какой параметр ставить в Save Interval. Без блоков чтения в агенте всё пересчитывается нормально.
Не помогает, всё уже перепробовал. МаксБаров менял, и папку удалял куда кэш сохраняется через некоторое время. Сначала скрипт пересчитыывется нормально 2мс, через 10 мин - 30мс, через час 400мс и тд. Без блоков чтения в торгующем скрипте всё пересчитывается стабильно 1 мс.
Для записи истории стакана очень хороший индикатор. Не подскажите, нет кубиков Аск_стакан,Бид_стакан,Аск_стакан_объем,Бид_стакан_объем, которые без сохранения истории работают, как у 777 раньше были. Только для 1.2 работающие?
Нет. У меня вот что пишет: 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)
Перекомпилировать я не знаю как. Там лежат исходники на Аск_стакан, Бид_стакан. Их перекомпилировал. А на Аск_стакан_объем,Бид_стакан_объем исходников нету.
Торговый скрипт использует данные из индикатора стакана (в первом посте темы). Интервал задавал самый различный: тики, секунды, минуты. Интервал пересчета указывал и Интервал, и Сделка, и Пок/Прод. В режиме лаборатории скрипт всё показывает нормально и обсчёт происходит по заданному интервалу. Если включить скрипт в режиме агента, то обсчёт идёт только в период - 1 минута. Причём в настройках скрипта задал макс. баров - 60, а лог агента сообщает, что пересчитано 31740 баров.
Там нужно поставить в скрипте использовать дату от...Сегодняшний день или лучше несколько часов назад. Это должно помочь. Там ридеры по моему пытаются прочитать всю историю загруженных котировок, независимо от того сколько стоит макс бар.
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'. Индекс за пределам диапазона.