moscow
moscow личный блог
09 августа 2012, 15:02

Новый робот.

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

    Сокращайте шаг параметров, прогоняйте параметры по очереди.
      • Константин Б
        09 августа 2012, 15:24
        moscow, пиши отдельную прогу. И раздели расчеты но не через физические ядра а черед видео карточку, тогда будет результат быстрый (получится примерно как 128 ядер). Правда это сработает только если использовать мат вычисления без работы с диском. Иначе все упирается в скорость диска (HDD)
      • Антон Кротов
        09 августа 2012, 15:25
        moscow, ну дык… :)

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

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

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

                Сейчас пишу прогу, чтобы тест разделялся на несколько ядер, тогда уже и куплю 6-ядерник с большим кешем. А в 2004м, когда занимался разработкой измерительного оборудования и возникла необходимость в вычислительных мощностях, я собрал 16 4х ядерных компов (самых мощных на тот момент) и вылизывал программу на ассемблере, благодаря чему сократил предполагаемое время расчетов с 40 лет до 2х недель.
                  • Антон Кротов
                    09 августа 2012, 16:19
                    moscow, да вроде компьютерщик не особо нужен. Разве что для консультаций в плане бесперебойников и перегревов. Я, когда использовал 16 компов, ставил их в двух квартирах, чтобы пробки не выбило, снимал с них кожухи и открывал окна (дело было зимой), чтобы не было перегрева. Когда все ядра используются на полную в течение длительного времени, нужна более продвинутая система охлаждения, чем имеют большинство материнских плат.

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

                    Можно, конечно, попробовать предварительно запустить генетическую оптимизацию, но на 5 параметров она ничего толкового не даст.
  • silentbob
    09 августа 2012, 15:18
    Откинуть неадекватные значения параметров, запустить генетическую оптимизацию
    увеличить шаг, прогонять частями. фрейм наконец сменить на более приличный чем 1минута
  • Margin_Nicolas
    09 августа 2012, 15:20
    а сколько параметров у ТС????
      • Margin_Nicolas
        09 августа 2012, 15:33
        moscow, много…
        • Антон Кротов
          09 августа 2012, 16:07
          Margin_Nicolas, да вроде нормально. Для обычной пробойной стратегии: уровень входа, тейк, стоп на лонг и на шорт — это уже 6.
      • barabas
        14 августа 2012, 13:18
        moscow,
        используйте генетическую оптимизацию. А еще лучше об оптимизации вообще забыть, это путь в никуда.
  • dsky
    09 августа 2012, 15:46
    Переоптимизация или «Curve Fitting» это негативный результат подгонки (оптимизации) параметров стратегии под конкретный временной интервал рынка на конкретном инструменте.
  • Russian_Insider
    14 августа 2012, 13:36
    Забудьте про генетический алгоритм. Это рулетка. Многопараметрическую оптимизацию неплохо исполняет алгоритм Нелдера-Мида (Nelder-Mead). От перегрева процессоров спасает водяное охлаждение. Есть такое в мощных игровых компьютерах (стоят они 100-200 тыс. руб).

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн