Если на терминале еще не закачаны тиковые данные, то при вызове CopyTicks как терминал узнает, какие tkc-файлы тянуть?
Тянет каждый месяц, начиная с текущего.
CopyTicksRange реализован на основе CopyTicks или же самостоятельно?
На основе CopyTicks, т.е. совсем не оптимизирован.
Правильно ли понимаю, что получить тики за сентябрь, например, будет всегда быстрее через CopyTicksRange, чем через CopyTicks, т.к. CopyTicks не знает через входные параметры, за какой месяц нужно тянуть данные?
Нет, CopyTicksRange будет таким же тормозным из-за пункта выше. Вот скрипт, показывающий, некоторую абсурдность текущей реализации CopyTicksRange
Казалось бы четко дана информация, какие tkc-файлы нужно тянуть. Но нет, будет тянуть так же, как CopyTicks - все tkc-файлы. И прекратит работу по таймауту. Хотя на самом деле должен был отработать почти мгновенно.
Нужно в индикаторе получить как можно быстрее историю. Есть возможность сделать запрос через CopyTicksRange и получить отлуп в виде -1, пока все не закачается. А если запрашивать по месяцу: текущий, затем предудыщий и т.д. То получится не медленнее же, но при этом индикатор будет готов работать хоть с какой-то историей. Верно?
При смене счета (другой торговый сервер) нужно записать в файл последние 2000 тиков старого счета. Как это сделать?
Так не получится
voidOnDeinit( constint )
{
MqlTick Ticks[];
CopyTicks(_Symbol, Ticks); // Если была смена торгового сервера, то БД-тиков поменяласьFileSave(__FILE__, Ticks);
}
Прошу перед сменой счета генерировать событие CHARTEVENT_ACCOUNTCLOSING, при обработке которого (в OnChartEvent) все торговое окружение еще не переключилось на новое.
fxsaber: При смене счета (другой торговый сервер) нужно записать в файл последние 2000 тиков старого счета. Как это сделать?
Так не получится
Прошу перед сменой счета генерировать событие CHARTEVENT_ACCOUNTCLOSING, при обработке которого (в OnChartEvent) все торговое окружение еще не переключилось на новое.
По уму, надо бы добавить обратную связь - как в том же виндоузе сделано.
В виде флага в событии графика (или не графика), при установке которого само событие (в данном случае, переключение счета) отменяется.
tkc-файлы разбиты по месяцам. Вопросы из-за этого
Нет, CopyTicksRange будет таким же тормозным из-за пункта выше. Вот скрипт, показывающий, некоторую абсурдность текущей реализации CopyTicksRange
Казалось бы четко дана информация, какие tkc-файлы нужно тянуть. Но нет, будет тянуть так же, как CopyTicks - все tkc-файлы. И прекратит работу по таймауту. Хотя на самом деле должен был отработать почти мгновенно.
Без разницы, как оказалось (см. пункты выше).
CopyTicks не работает в OnDeinit в случаях, если UninitializeReason != REASON_CHARTCHANGE
Результат (после снятия эксперта)
ЗЫ Это происходит в советниках. В индикаторах CopyTicks в OnDeinit отрабатывает нормально.
Так не получится
Прошу перед сменой счета генерировать событие CHARTEVENT_ACCOUNTCLOSING, при обработке которого (в OnChartEvent) все торговое окружение еще не переключилось на новое.
При смене счета (другой торговый сервер) нужно записать в файл последние 2000 тиков старого счета. Как это сделать?
Так не получится
Прошу перед сменой счета генерировать событие CHARTEVENT_ACCOUNTCLOSING, при обработке которого (в OnChartEvent) все торговое окружение еще не переключилось на новое.
По уму, надо бы добавить обратную связь - как в том же виндоузе сделано.
В виде флага в событии графика (или не графика), при установке которого само событие (в данном случае, переключение счета) отменяется.
Пусть резко, но задрала ситуация, что десятки репортов про баги, их правят, а новые все возникают и возникают с этим CopyTicks.
Утомляют такие приколы
Результат
Убираем единицу из исходника
Воспроизводится на разных символах и торговых серверах. Проверял в выходной день - котиры стоят.
Когда баги победим в этой теме?
Действительно, такая интересная возможность в языке и работает через пень колоду...
Такой вопрос. Загрузил тики ручками (685 007 шт.) через меню Символы. Мне нужны на EURUSD с 2016.11.01 00:00 по 2016.11.08 00:00. Вот скриншот.
Запрашиваю программно так:
На выходе 0. Что не так?
На выходе 0. Что не так?
На 1000 from и to умножьте.
На 1000 from и to умножьте.
Блин, позор мне, зарапортовался. Спасибо.
После первого запуска на EURUSD M1 MetaQuotes-Demo имеем верный результат
Все последующие запуски будут показывать баг
После перезагрузки терминала ситуация повторится: первый запуск - отлично, следующие - баг.
ЗЫ Обратите внимание на выделенный комментарий в исходнике!