никак
где-то на форуме Альпари видел инфу о том как работает терминал с сервером, вроде бы на своем ТФ терминал строит бары по пришедшим тикам, НО через некоторое время терминал автоматически синхронизирует историю на открытых графиках, чтобы синхронизировать принудительно - правой мышью - обновить,вроде так изначально спроектировано
ЗЫ: пишу по памяти - первоисточник чет ненагуглю никак
никак
где-то на форуме Альпари видел инфу о том как работает терминал с сервером, вроде бы на своем ТФ терминал строит бары по пришедшим тикам, НО через некоторое время терминал автоматически синхронизирует историю на открытых графиках, чтобы синхронизировать принудительно - правой мышью - обновить,вроде так изначально спроектировано
ЗЫ: пишу по памяти - первоисточник чет ненагуглю никак
Ну я так и думаю.... Весь вопрос в алгоритме - через какое время и сколько баров синхронизируется....
Ну я так и думаю.... Весь вопрос в алгоритме - через какое время и сколько баров синхронизируется....
сколько? сколько было новых баров с последнего момента синхронизации столько и будет вновь синхронизированно, сейчас поищу, в формате файла истории в заголовке файла есть время последней синхронизации, наверно от этого времени и будет все загружено
вот часть кода стандартного period_converter:
//---- write history file header c_copyright="(C)opyright 2003, MetaQuotes Software Corp."; FileWriteInteger(ExtHandle, version, LONG_VALUE); FileWriteString(ExtHandle, c_copyright, 64); FileWriteString(ExtHandle, c_symbol, 12); FileWriteInteger(ExtHandle, i_period, LONG_VALUE); FileWriteInteger(ExtHandle, i_digits, LONG_VALUE); FileWriteInteger(ExtHandle, 0, LONG_VALUE); //timesign FileWriteInteger(ExtHandle, 0, LONG_VALUE); //last_sync FileWriteArray(ExtHandle, i_unused, 0, 13); //---- write history file
по сабжу - или самому попытаться файл истории править время синхронизации, чтобы графики не перерисовывались или параллельно в коде индикатора вести некий лог OHLC для не посчитанных баров
ЗЫ: вот неплохой пример для подкачки истории на всю возможную глубину, с помощью правки времени синхронизации истории: https://www.mql5.com/ru/code/9888
вот часть кода стандартного period_converter:
по сабжу - или самому попытаться файл истории править время синхронизации, чтобы графики не перерисовывались или параллельно в коде индикатора вести некий лог OHLC для не посчитанных баровБлагодарю! Будем думать
и если не ошибаюсь, то момент автоподкачки/синхронизации ТФ происходит при выполнении такого нелогичного кода:
int counted; .... int start(){ .... int bar = Bars; if (bar != counted ) { counted= bar; }
и если не ошибаюсь, то момент автоподкачки/синхронизации ТФ происходит при выполнении такого нелогичного кода:
Это просто обработка нового бара как мне кажется....
или докачка истории... но не синхронизации....
значит по закрытию нового бара сверять ранее запомненные OHLC с текущими на ТФ, и в случае несовпадения принимать решение, ф-ция ArrayCopySeries() для индикатора может скопировать в индексные массивы данные, которые потом сверять
ЗЫ: я наблюдал такое "чудо" онлайн - прям на глазах история на экране перерисовывалась, для ордеров в рынке это уже не страшно, а вот для принятия нового решения на основе текущей истории - увы
значит по закрытию нового бара сверять ранее запомненные OHLC с текущими на ТФ, и в случае несовпадения принимать решение, ф-ция ArrayCopySeries() для индикатора может скопировать в индексные массивы данные, которые потом сверять
2) Копирования при вызове ArrayCopyRates() не происходит- происходит перенаправление обращений
на внутренний массив МТ (который суть есть копия данных, предназначенная для текущего индикатора)-
соответственно, что с чем будет сравниваться?
Если не прав- поправьте.
1) ArrayCopyRates- это функция для отсылки данных в Dll
2) Копирования при вызове ArrayCopyRates() не происходит- происходит перенаправление обращений
1. в учебнике в качестве пояснения написанно: "Замечания: обычно массив используется, чтобы передать данные в DLL функцию.", а выше описание ф-ции:"Копирует в двухмерный массив, вида RateInfo[][6], данные баров текущего графика и возвращает количество скопированных баров"
2.учебник:"Реального распределения памяти под массив данных и копирования не происходит. При обращении к такому массиву производится перенаправление доступа."
ЗЫ: я рекомендовал другую ф-цию - ArrayCopySeries(), она по разному работает для индикаторных буферов и просто массивов
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Источник головной боли: индикатор, который перерассчитывается только на последнем экстремуме. Мы с автором этого индикатора пытались понять, почему иногда он начинает сбоить:
Скорее всего это вызвано исправлением котировок задним числом, а логика индикатора естественно к этому не готова. Вот тот же участок, но через пару минут.
Не вооружённым глазом видно, что котировки уже совсем другие:
Кто встречал подобное и как обходил? Встроенных средств я как понимаю для этого нет?