Какими инструментами торговать в "Открытие" - страница 9

 
Anton Zverev:

Мне нужно написать функцию, которая бы возвращала тики с одной даты по другую. В случае успеха был бы true, иначе - false.

И такую ерунду написать у меня не получается. Потому что ХЗ, как с асинхронностью быть. Пример Рената через OnTimer, наверное, вариант. Но точно не так, как он привел. OnTimer может использоваться для кучи всего.

Короче, элементарную функцию с даты по дату можно привести, чтобы работала.

Тиковые объемы баров совершенно не соответствуют тому, что сидит в copyticks, поэтому не понятно, насколько тиков делать запрос. 

Скрипт запрашивает данные с определённой даты.

Вот результат двух запусков скрипта с интервалом несколько минут:

2016.04.22 11:32:38.538 CopyTicks_1_02 (RTS-6.16,H3)    Получено тиков: 409 код ошибки: 0
2016.04.22 11:32:38.538 CopyTicks_1_02 (RTS-6.16,H3)    Тик: 2016.04.22 11:30:00 bid: 92480.0 ask: 92540.0 last: 92520.0 [0]
2016.04.22 11:32:38.538 CopyTicks_1_02 (RTS-6.16,H3)    Тик: 2016.04.22 11:32:38 bid: 92380.0 ask: 92390.0 last: 92380.0 [408]
2016.04.22 11:32:38.538 CopyTicks_1_02 (RTS-6.16,H3)    Size 0 Mb
2016.04.22 11:34:26.502 CopyTicks_1_02 (RTS-6.16,H3)    Получено тиков: 632 код ошибки: 0
2016.04.22 11:34:26.502 CopyTicks_1_02 (RTS-6.16,H3)    Тик: 2016.04.22 11:30:00 bid: 92480.0 ask: 92540.0 last: 92520.0 [0]
2016.04.22 11:34:26.502 CopyTicks_1_02 (RTS-6.16,H3)    Тик: 2016.04.22 11:34:26 bid: 92410.0 ask: 92440.0 last: 92420.0 [631]
2016.04.22 11:34:26.502 CopyTicks_1_02 (RTS-6.16,H3)    Size 0 Mb

То есть тики запрашиваются с определённой даты и до текущего момента.

Файлы:
 
Karputov Vladimir:

Скрипт запрашивает данные с определённой даты.

Вот результат двух запусков скрипта с интервалом несколько минут:

То есть тики запрашиваются с определённой даты и до текущего момента.

Не понимаю, зачем вы приводите код, который по информативности уступает даже документации. Спасибо, конечно. Но это совсем не то, что спрашивал.

Код Рената куда лучше, но тоже не то совсем. 

 
Renat Fatkhullin:

Нет, все ранее скачанные тики для каждого торгового сервера ложатся в локальный кеш и извлекаются автоматически.

На предыдущей странице есть скриншот с файлами тиков.

Спасибо, папку Bases подробно не изучал.

Как в OnTester сделать запрос copyticks, чтобы получить все тики, по которым был проход?

 
Anton Zverev:
Как в OnTester сделать запрос copyticks, чтобы получить все тики, по которым был проход?

В текущей бете (сегодня релиз) вызовите CopyTicks и получите последние десятки тысяч тиков.

В тестере используется кольцевой буфер для хранения тиков без возможности получения миллионов тиков. Хранить все тики затратно, поэтому кольцевой буфер. Хотя, может изменим это поведение.

 
Anton Zverev:

Не понимаю, зачем вы приводите код, который по информативности уступает даже документации. Спасибо, конечно. Но это совсем не то, что спрашивал.

Код Рената куда лучше, но тоже не то совсем. 

Мой код только для демонстрации принципа "чтобы получить очень глубокие тики, надо несколько раз вызвать CopyTicks, чтобы дождаться подкачки". OnTimer для этого хорошо подходит.
 
Renat Fatkhullin:

В текущей бете (сегодня релиз) вызовите CopyTicks и получите последние десятки тысяч тиков.

В тестере используется кольцевой буфер для хранения тиков без возможности получения миллионов тиков. Хранить все тики затратно, поэтому кольцевой буфер. Хотя, может изменим это поведение.

Как определить размер кольцевого буфера без запроса на каждом тике (очень затратно это в тестере делать) copyticks?

Допустим, кольцевой 10000. Тогда буду через каждые 10000 делать вызов copyticks, чтобы не было пропусков. Но и там проблемка вырисовыется в виде тиков с одним временем (с точностью до мс). На бирже такие попадаются. Не хочется их учитывать дважды, делая запрос copyticks  с этого времени в мс.

 
Renat Fatkhullin:
Мой код только для демонстрации принципа "чтобы получить очень глубокие тики, надо несколько раз вызвать CopyTicks, чтобы дождаться подкачки". OnTimer для этого хорошо подходит.

Понял, что для демонстрации. Поэтому OnCopyTicks сразу в голову пришел.

Помогите с этим, у меня траблы то в одном, то в другом.

Anton Zverev:

Мне нужно написать функцию, которая бы возвращала тики с одной даты по другую. В случае успеха был бы true, иначе - false.

 
Anton Zverev:

Не понимаю, зачем вы приводите код, который по информативности уступает даже документации. Спасибо, конечно. Но это совсем не то, что спрашивал.

Код Рената куда лучше, но тоже не то совсем. 

Если нужно получить от (старая дата) по (молодая дата) то нужно так:

Запрос тиков (с запасом) от "старая дата". В полученном массиве идти от индекса "0" и проверять дату. Как только найдёте первое вхождение (молодая дата) - запоминаете (индекс молодая дата). На этом моменте Вы определили, что в массиве тиков от индекса 0 до (индекс молодая дата) находятся тики, которые Вам нужны.

 
Было бы неплохо добавить функцию проверки состояния закачки тиков/наличия закачанных - в локальной базе терминала. Что-то вроде CheckXXX( символ ). Чтобы не дергать копитик постоянно.
 
Karputov Vladimir:

Если нужно получить от (старая дата) по (молодая дата) то нужно так:

Запрос тиков (с запасом) от "старая дата". В полученном массиве идти от индекса "0" и проверять дату. Как только найдёте первое вхождение (молодая дата) - запоминаете (индекс молодая дата). На этом моменте Вы определили, что в массиве тиков от индекса 0 до (индекс молодая дата) находятся тики, которые Вам нужны.

С запасом - расточительность жуткая. Делаю запрос по-умолчанию (2000 тиков, вроде), дальше продолжаю с момента (тут легво нарваться на дублирование тиков), где закончил.

Не понимаю, почему нет такой функции от самих разработчиков. Почему не перегрузить copyticks еще одним рабочим вариантом?

Причина обращения: