Блог им. moscow

Новый робот.

    • 09 августа 2012, 15:02
    • |
    • moscow
  • Еще
Пришли два новых робота.
Жуткое дело!
В тестах 46 миллиардов вариантов перебора оптимизатором.
Это только по одному роботу и по одному инструменту.
Скажите, есть ли идеи для МТ4 чтобы оптимизатор-тестер работал шустрее, или чтобы он отдельный был?
Если под это дело комп покупать, то на какой параметр обратить внимание (ядра, оперативка и т.п.), и выше скольки уже не имеет смысла там оперативка, например? 
★2
22 комментария
перебор с количеством параметров системы в мт4 — большая попоболь.
иногда решается выгрузкой котировок в sql и обработка данных под Delphi, к примеру. на хорошем мощном кластере просчитывается быстрее чем в мт
avatar
46 миллиардов — тут только Ломоносов в помощь:
ru.wikipedia.org/wiki/Суперкомпьютер_Ломоносов

Сокращайте шаг параметров, прогоняйте параметры по очереди.
avatar
Антон Кротов, «Стоимость

Первоначально стоимость создания суперкомпьютера составила 1,9 млрд рублей. Ещё 770 млн руб было потрачено в 2010—2011 годах на расширение суперкомпьютера с наращиванием пиковой производительности до 1,3 Петафлопс»

… дрочился бы я с этим роботом при таких бабках…
avatar
moscow, пиши отдельную прогу. И раздели расчеты но не через физические ядра а черед видео карточку, тогда будет результат быстрый (получится примерно как 128 ядер). Правда это сработает только если использовать мат вычисления без работы с диском. Иначе все упирается в скорость диска (HDD)
avatar
moscow, ну дык… :)

В самом деле, перебор 46 млрд вариантов не по силам домашним компам. К примеру, WealthLab прогоняет 1 вариант на 13.6 тыс свечей (1 год, 15-минутки) примерно за 1 сек на 2.4ГГц ядре. Т.о. 1 млрд вариантов потребует 32 года. 46 млрд — 1.5 тыс. лет, так что как ни увеличивай число/частоту ядер, нифига не выйдет.

Снижайте число вариантов. По компу могу посоветовать:
— больше ядер + выше частота (это само собой), только нужно проверить, будет ли MT4 распараллеливать расчет по ядрам (Wealth Этого не делает)
— максимальный объем кеша на ядро (желательно рассчитать так, чтобы история фьюча вмещалась в кеш одного ядра, но тут нужно большой таймфрейм брать)
avatar
Антон Кротов, а если сделать, например, под каждый инструмент отдельный терминал и гнать их все одновременно.
Они ведь не будут у компа ресурс друг у друга отжирать? Там ведь немного мощностей задействуется?.. проблема именно в терминале, а не в данных машины, на которых он стоит?
avatar
moscow, не совсем понял, о чем Вы. Понятное дело, что увеличение компов сократит время расчета, но Вам понадобятся тысячи компьютеров, чтобы уложиться хотя бы в год.

Что значит «не много мощностей задействуется»? Когда программа считает постоянно, т.е. не имеет циклов ожидания ссобытий, она задействует ядро почти полностью. Проблема терминала — вторична.
avatar
Антон Кротов, нет. я не про увеличение количества компов.
Я подумал, что в данном случае медлительность обусловлена именно терминалом, а уж сам комп при оптимизации не нагружается и на 10% от того, что в нем есть.
Поэтому, предположил, что можно сэкономить время (ясно что не 46 ярдов вопрос уже) путем установки десятка терминалов и одновременным тестированием десятка инструментов.
Вопрос был в том, правильно ли я понял проблему и не захлебнется ли комп от 10 терминалов и выхлоп будет всё равно 1/10.
avatar
moscow, я с MT не работал, поэтому не знаю, позволит ли комп запустить два или более экземпляров программы (Wealth этого не позволяет). Если позволит, то на каждый экземпляр при расчетах будет выделено свое ядро (разумеется, если ядер больше, чем запущенных терминалов). Тогда Вы сможете использовать мощь процессора на 99%. Если Вы запустите больше терминалов, чем ядер в вашем процессоре, то они будут постоянно друг у друга отнимать ресурсы, и ко времени расчетов добавится еще время переключения контекста (т.е. перегрузки кеша, передаче управления ОС и пр., т.е. будет уже задейтсована внешняя шина данных, а то, чего доброго, еще и винт) ВелсЛаб так делать не позволяет, поэтому из 4х ядер в моем проце задействовать можно только одно, т.е. 25% всей мощи.

Сейчас пишу прогу, чтобы тест разделялся на несколько ядер, тогда уже и куплю 6-ядерник с большим кешем. А в 2004м, когда занимался разработкой измерительного оборудования и возникла необходимость в вычислительных мощностях, я собрал 16 4х ядерных компов (самых мощных на тот момент) и вылизывал программу на ассемблере, благодаря чему сократил предполагаемое время расчетов с 40 лет до 2х недель.
avatar
Антон Кротов, Круто! Особенно круто потому, что я в этом вообще не разбираюсь и отношусь с трепетом.
МТ4 дает запускать сколько угодно терминалов из разных папок.
Прям назвать их все по имени инструмента и гонять круглые сутки.
Иногда глючит и разрешает запустить из одного места две копии, которые работают отдельно (разные счета отображают и т.п.).

Если я таки подтяну инвестора под эти бизнесы, то специалиста по какому вопросу мне надо искать среди компьютерщиков, чтобы он наладил вот эти дела?
(есть же внутреннее разделение в профессии?).
avatar
moscow, да вроде компьютерщик не особо нужен. Разве что для консультаций в плане бесперебойников и перегревов. Я, когда использовал 16 компов, ставил их в двух квартирах, чтобы пробки не выбило, снимал с них кожухи и открывал окна (дело было зимой), чтобы не было перегрева. Когда все ядра используются на полную в течение длительного времени, нужна более продвинутая система охлаждения, чем имеют большинство материнских плат.

Вам самому еще надо бы продумать алгоритм тестирования.
1. Бесперебойник — бесперебойником, но если в середине расчетов глюканет виндоуз, то все расчеты накроются медным тазом, если не производилось сохранение промежуточных результатов. Т.е. надо запускать тесты частями и вручную созранять.
2. Насчет сохранения: 46 млрд вариантов потребуют нехило места на диске. У Вас 5 параметров + результат тестирования будет содержать порядка 15-20 параметров (нетпорофит, %win, pf, rf и пр.), т.е. 25*4 = 100 байт на вариант, т.о. нужен HDD с 100*46*10^9, т.е. 4.6 Тбайт (это на каждый инструмент).
3. Ну, и т.д.

Можно, конечно, попробовать предварительно запустить генетическую оптимизацию, но на 5 параметров она ничего толкового не даст.
avatar
Откинуть неадекватные значения параметров, запустить генетическую оптимизацию
увеличить шаг, прогонять частями. фрейм наконец сменить на более приличный чем 1минута
avatar
silentbob, минута — это для юношей.
у меня часы ((
avatar
а сколько параметров у ТС????
avatar
Margin_Nicolas, 5 примерно.
avatar
moscow, много…
avatar
Margin_Nicolas, да вроде нормально. Для обычной пробойной стратегии: уровень входа, тейк, стоп на лонг и на шорт — это уже 6.
avatar
moscow,
используйте генетическую оптимизацию. А еще лучше об оптимизации вообще забыть, это путь в никуда.
avatar
Переоптимизация или «Curve Fitting» это негативный результат подгонки (оптимизации) параметров стратегии под конкретный временной интервал рынка на конкретном инструменте.
avatar
Забудьте про генетический алгоритм. Это рулетка. Многопараметрическую оптимизацию неплохо исполняет алгоритм Нелдера-Мида (Nelder-Mead). От перегрева процессоров спасает водяное охлаждение. Есть такое в мощных игровых компьютерах (стоят они 100-200 тыс. руб).
avatar

теги блога moscow

....все тэги



UPDONW
Новый дизайн