История котировок. Увы, опять ! - страница 2

 
Вероятно, уже пришло время еще повысить планку, например, до 32768 баров. Мы обсудим этот вопрос.

Странно, у меня качаются 32тыс. баров.

Это автоматически расширяемая история, которую накапливает и выдает сервер.
Стандартная глубина 16384 бара, но сервер копит историю до момента рестарта.
После рестарта накопление опять начнется с 16384.
 
Уважаемый Renat,

Убедительно прошу Вас - учитесь корректному диалогу !

Моя персона ни в коем случае не должна Вас так волновать. Где я нахожусь - в центре или с краю, - не имеет к теме никакого отношения. А вопрос, который я поднял, не несет ничего личного. Это действительно узкое место в технологии MetaQuotes и Вы должны рассматривать этот диалог как возможность найти компромисс. Вместо этого Вы берете на себя смелость определять где чье место и пишете длинные объяснения, которые и так всем понятны.

Renat, попытайтесь дать конкретный ответ хотя бы на один из поставленных мною вопросов.

А еще лучше, - ответьте только на одно, последнее, мое предложение. (Не претензию, как это Вы изображаете, а предложение). Может MetaQuotes выложить на этом сайте историю младших т/ф по основным парам и периодически (раз в месяц или квартал) ее обновлять или нет ? Это и будет конкретно и взаимопроемлемо.

Может быть этой истории у Вас просто нет ? Например потому, что сервер хранит только последние 16384 бара. Тогда так об этом и скажите.

Кстати, поднять стандартную глубину истории с 16384 до 32768 баров - технологически не очень рациональное решение. В этом случае ресурсы действительно будут расходоваться впустую. Более того, 16384 баров для Д1 - это 63 года !!! Совершенно безумное число ! А для М1 - это 11 с небольшим торговых дней. Совершенно ничтожное число ! Если уж стандартная глубина одна для всех т/ф, то лучше все оставить как есть.

Интерес пользователей к истории связан только с исследованием рынка и с необходимостью получать статистически достоверные выводы относительно результатов этих исследований. Нагружать этим сервер совершенно ни к чему. Но возможность получать эти данные должна быть !

Что сложного в том, чтобы выложить такой архив для скачивания на сайте и, тем самым, снять этот вопрос с сервера раз и навсегда ? В МТ4 есть все возможности для того чтобы даже процесс обновления этого архива практически полностью автоматизировать ! Обновление его раз в неделю будет занимать всего несколько минут. На этом форуме наверное каждый (и я в том числе) возьмется с удовольствием и забесплатно :-) написать для этого соответствующие скрипты. И брокеры будут с удовольствием использовать эту технологию. Они не делают из истории котировок проблемы, просто МТ4 не предоставляет им для этого возможностей. А чтобы автоматизировать публикацию хоть кто-то у них должен знать MQL :-)
 
Ув. Renat!

Подумайте над тем, что на сервере тысячи пользователей в онлайне, несколько сотен баз данных и тд. Просто любое расчитанное для себя число умножайте на 1000 или 10000.


Попробую поспорить с вами ;)

Для начала почитаем классику - "Network programming for Microsoft Windows", MS Press, 2nd edition.
Там есть таблица тестирования числа Attempted/Connected при коннекте, в зависимости от способа работы с сокетом, причем "...The server was a Pentium 4 1.7 GHz Xeon with 768 MB memory" (что, согласитесь, давно уже не круто)

Самый эффективный вариант - "Overlapped (completion port)":
Число Attempted/Connected - 50,000/49,997 (т.е. при попытке 50 тыщ. подключений, прошли 49997).

Теперь самый хреновый результат - "Blocking":
Число Attempted/Connected - 12,000/ 1008 (т.е. при попытке 12000 подключений, удалось 1008)

Учитывая, что terminal.exe не импортирует не то что CreateIoCompletionPort, а даже не WSAAsyncSelect (я хренею 8-/), смею предположить, что вы используете тот самый пионерский "Blocking mode", за который давно пора стрелять на месте. :)

Трассировать и конкретно разбираться - я щас не могу и не хочу (децл пъян :)))
Но если я не прав - поправьте меня пожалуйста.

По опыту могу сказать, что грамотно написанный сервер - может легко обслужить десяток тысяч пользователей точно.
Если конкретно, то это сервер типа ftp - небольшое число connect'ов, при большом числе send/recv, т.е. то, что и требуется для получения истории котировок.
Это из реальной практики, других данных не имею, но MS Press я доверяю.

Может иммет смысл привести в порядок софт? ;)

з.ы. С уважением, и наилучшими... :)
 
solandr писал:
Тогда скрипт в автомате будет запрашивать данные по требуемым инструментам и ТФ, накапливая их в архиве. И тогда не потребуется специально еженедельно щёлкать экраны с разными ТФ чтобы закачать свежие котировки.

Скрипт здесь https://www.mql5.com/ru/forum
 
Скрипт здесь https://www.mql5.com/ru/forum

Спасибо за приятный скрипт! Только нужно не забыть в него внести ещё и PERIOD_M15, который был упущен по случайности.
Ну вот как говорится имеется готовое компромисное решение по накоплению текущих свежих котировок.
Действительно работа скрипта аналогична щёлканию по ТФ для закачки свежих котировок.

Уважаемые разработчики, объясните в чём будет разница для всей системы МТ4 (клиент+сервер) в следующих ситуациях, кроме увеличения суммарного инеттрафика, который ЛЮБОЙ брокер и конечный пользователь в состоянии оплатить?
Ситуация 1. ВСЕ пользователи МТ4 допустим раз в неделю (пускай даже в субботу-воскресенье, когда вообще нет торговли) запускают этот скрипт для скачки свежих котировок.
Ситуация 2. Раз в неделю то же самое автоматом делает сам МТ4 пусть даже в ту же самую субботу-воскресенье, или же например ночью, когда торговля очень незначительна и котировки по М1 поступают с разрывом в 2-3 минуты? Если в самом МТ4 автоматизировать процесс принятия решения на начало скачки котировок, например, при наличии дыры в PERIOD_M1 длиною более 2-3 минут по формуле Tзакачки=Tдыры+Случайное число минут из интервала (0...180), то никакой пиковой нагрузки для сервера по скачкам не произойдёт! Правда конечно же генератор случайных чисел на каждом компьютере должен работать действительно независимым образом. Но думаю, что разработчики в курсе как это организовать.
 
По опыту могу сказать, что грамотно написанный сервер - может легко обслужить десяток тысяч пользователей точно.

Наш даже больше обслуживает. С этим проблем нет.

Писать серверы мы отлично умеем и пишем их уже 6 лет (серверы FX Charts, MetaQuotes, MetaTrader 3 и MetaTrader 4). Сервер - это не только банальные коннекты, но и сжатие и шифрация в рилтайме. Не говоря уж о том, что сервер на каждый тик пересчитывает профиты у десятков тысяч сделок, проверяет стопы, маржинколы и тд.

Вы сильно заблуждаетесь, представляя торговый сервер в виде FTP. У торгового сервера другая задача: сбалансированно и с большим запасом (именно так, чтобы пережить пиковые нагрузки) прочности обслуживать торговлю. А не умирать от неограниченного трафика исторических данных. Поэтому такие жесткие ограничения на глубину истории.

Сколько занимает сжатие 1 Mb зипом? Полсекунды? А если 100 раз по 1 Mb?
Люди все замечательно считают для единичных случаев, но категорически не желают масштабировать задачи. А мы и считаем и масштабируем и тестируем, а потом _отвечаем_за_результат_. В этом то и отличие нашей позиции от тех, кто говорит "дай и все!".
 
Так как вопрос по истории котировок на самом деле очень важен, то я опишу более подробно текущую ситуацию в MetaTrader 4.

Информационно-торговая платформа MetaTrader 4 содержит в себе информационно-торговый сервер (MetaTrader Server) и дата-центры (множество MetaTrader Data Center'ов).

Так как главному торговому серверу приходится заниматься множеством задач и история котировок не является главным приоритетом, то минимальная глубина истории установлена в 16384 баров. До рестарта сервер накапливает историю и может выдавать более 16384 баров. После рестарта хранимая история подрезается на 16384. Это сделано для экономии ресурсов.

Дата-центры являеются прокси-серверами, которые самым серьезным образом снижают нагрузку на главный сервер, аккумулируя исторические данные, лайвапдейты и тд. Так как дата-центрам не приходится заниматься торговлей и учетом сделок, то на работу с историческими данные выделено гораздо больше ресурсов. Минимальная глубина истории равна 65536 баров. До рестарта дата-центр накапливает историю и может выдавать более 65536 баров. Но после рестарта история подрезается на 65536 баров.

Мы рекомендуем использовать дата-центры, предоставляемые брокерскими компаниями. Как минимум, галочка "Автоконфигурация дата-центра" должна быть всегда включена.
 
..а потом _отвечаем_за_результат_. В этом то и отличие нашей позиции..

Это абсолютно верно и правильно. И нормально. Так и надо и так и должно быть.

Вместе с тем, я бы хотел ещё раз обратить внимание на оборотную сторону медали.
Пользователь тоже имеет свои права, на кот. должен уважительно ориентироваться производитель.

Нравится нам или нет, но пользователь не обязан знать и вникать в тонкости технологии.
Он должен комфортно пользоваться готовым изделем, будь то автомобиль, холодильноик или программа.
Можно спросить хотя бы у продвинутых посетителей форума: что такое Дата-центр, каковы его функции. Ответят очень не многие. И уж просто единицы могут ответить ответственно.

Речь идёт о том, что рядовой пользователь не хочет вникать в технологию, а ему приходится, но хочет получить результат, а этого не получается.
--------------------

При первом подключении к ДЦ можно скачать не более месяца минутной истории, удерживая кнопку Home.
Вопрос: что должен сделать рядовой пользователь, чтобы закачать минутную историю за несколько лет?
Рядовой пользователь не знает что ему делать. Увы.

Вариант решения: на панели настроек должна быть галочка "Скачать историю за период.." и 2 поля для ввода начальной и конечной даты (с вариантами "всю историю", "по настоящий момент" и пр.).

Если ДЦ ограничивает глубину предоставляемой истории, то пользователь должен получить уведомление "Наша компания предоставляет историю по такому-то ТФ не более чем до такой-то даты".
Если в текущий момент север ДЦ сильно загружен, то должно поступить сообщение типа "Извините, сейчас большая загрузка, но мы помним Ваше требование истории и как только сервер малость освободится, то мы сразу возобновим закачку интересующей Вас истории".

В этом случае у юзера будут вопросы не к разработчику, а к ДЦ. И суждения о качестве.
При этом юзер как не знал, так и не будет знать где какие серверы или Дата-центры, но будет любить МТ4, потому что ему будет понятно какие кнопки нажимать, чтоб получить то, что он хочет.
 
Уважаемый Renat,

Большое Вам спасибо за разъяснительную работу ! К сожалению делу она никак не помогает.
Мы рекомендуем использовать дата-центры, предоставляемые брокерскими компаниями. Как минимум, галочка "Автоконфигурация дата-центра" должна быть всегда включена.

Я проверил, эта галочка включена у меня на всех терминалах с реальными счетами. Однако, больше 16384 баров ни по одному из них я получить не могу. Хотелось бы чтобы Ваши рекомендации приносили больше пользы.

К сожалению, Вы не ответили ни на мое предложение, ни на один из вопросов. Что же случилось ? Разве не в этом заключается Ваша работа ? Или вопросы мои слишком глупые для Вас ?
Вариант 1. Вы сильно на меня обиделись и встали в позу. Самый плохой вариант. И если это так, то это не делает чести ни Вам, ни фирме, которую Вы представляете.
Вариант 2. Вам просто нечего сказать. Может быть вариант вести историю и выкладывать ее на сайте на Вашей фирме даже не обсуждался, может быть как раз обсуждается, но решения пока нет, а может быть есть и оно отрицательное. В любом случае лучше назвать вещи своими именами. Иначе это будет элементарное неуважение к присутствующим на этом форуме.
Вариант 3. MetaQuotes вообще не желает как-то участвовать в решении проблемы создания и ведения исторического архива и не собирается включать это решение в свою технологию. Это означает что и брокеры использующие МТ не будут этого делать. Каждый пользователь будет вынужден сам такую историю накапливать (годами !) и хранить. Если это так, то это очень недальновидная позиция. Достаточно взять любой журнал, где обсуждаются проблемы системной торговли, чтобы понять какую важную роль играет в ней грамотное тестирование стратегий на исторических данных. А где их взять ?

До рестарта дата-центр накапливает историю и может выдавать более 65536 баров. Но после рестарта история подрезается на 65536 баров.

Для справки. Для получения достоверной статистики в зависимости от характера рынка может потребоваться от нескольких сот тысяч до нескольких миллионов баров. Понятно, что получить такую статистику на Д1 просто невозможно, а на Н1 - очень проблематично. Поэтому так важны младшие т/ф.

Renat, не могли бы Вы сказать по этому поводу что-нибудь конструктивное ?
 
Скрипт здесь https://www.mql5.com/ru/forum


Потерли ветку. Господа, будьте любезны, вышлите этот скриптик мне на deepspace-(dog)mail.ru
или положите в этой ветке. Спасибо.
Причина обращения: