Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Представьте себе функцию f(x,y) = x^2 + y^2 + 3.
Вам нужно найти её минимум.
Одним алгоритмом решение - можно найти производные от x и y, и спуститься по градиенту.
Другим алгоритмом решение - поиск по сетке - по очереди менять значения x и y в определённых пределах, добиваясь всё меньшего результата.
Так вот, этот второй алгоритм - то что использовал я. Не имеет значения это работа с текстом, или работа с параметрами функций, смысл от этого не меняется.
Если почему-то считаете этот метод читерским - то посмотрите википедию, где для него даже есть отдельная статья - https://ru.wikipedia.org/wiki/Метод_перебора Метод перебора (метод равномерного поиска, перебор по сетке). Всё это общепризнано.
Я согласен с fxsaber что значение шага = 1 это очень большая подсказка для алгоритма. Но, вы используете такой константый шаг для теста MQ, и для теста своей библиотеки, так что здесь мы на равных условиях.
я дико извиняюсь,что влезаю в ваш высоконаучный диспут, но Андрей еще 100500 страниц назад писал, что такой способ сработает для гладкой функции, где можно найти производную в каждой точке, а тут ,вроде как,задача не "гладкая".
Я просто привёл два примера для решения f(x,y) = x^2 + y^2 + 3 Задача Андрея так не решится, это к сожалению да.
Третий способ - генетика. То что используется в MQ для этой задачи
1) нагенерировать кучу комбинаций x и y,
2) оценить их все,отбросить все неудачные комбинации
3) из оставшихся комбинаций наделать новых, путём перемешивания их x и y. Иногда вносить туда новые рандомные значения.
4) повторять 2-3 пока не надоест
Четвёртый способ - то что использует андрей. Раз он свой код не выкладывает (ex5 не в счёт, там кода нету), то там наверное какое-то читерство.
Проблема в том что данная задача заточена под вот такое условие -
А вот функции имеющие ступени, долгие горизонтальные поверхности (когда ФФ не меняет значение в большом диапазоне параметров), нелинейные и рубленые, со множеством острых пиков, и тем более вообще не имеющие НИКАКОЙ зависимости между параметрами (фактически это просто шум, это поиск иголки на околоземной орбите)
...
и представляют собой результаты работы советников на финансовых рынках
И моё мнение что это полная противоположность того как должна выглядеть фитнесс функция советника.
Вот новый код с небольшим изменением, в нём убран константный шаг = 1, дабы было ещё честнее.
Там-же 3 теста:
1) Для задания от андрея с лимитом в 20000.
2) оптимизация x^2 + y^2 + z^2 этим-же оптимизатором, без изменений в его коде.
3) оптимизация функции rastrigin https://www.sfu.ca/~ssurjano/Code/rastrr.html этим-же оптимизатором, без изменений в его коде. Длина вектора Rastrigin = 100
Результаты.
1)
Тест на 50 букв - Accuracy: 1; fitness calls: 19950; average execution time: 0.04791732 s. Найдены 50 из 50, результат тот-же
Тест на 150 букв - Accuracy: 1; fitness calls: 19800; average execution time: 0.08571966 s. Найдены 150 из 150, результат тот-же
Тест на 1000 букв - Accuracy: 0.215; fitness calls: 20000; average execution time: 0.4046583 s. Найдены 215 из 1000. Результат хуже чем в прошлый раз, это связано с тем что алгоритм теперь вообще без понятия о нужной длине шага, и может перешагивать/недошагивать. Результат всё равно лучше чем у андрея который при этом подсказывал алгоритму что шаг = 1.
2)
Найденный минимум = 0.003895788 (1000 вызовов фитнесс функции), при том что результат может быть от 0 до бесконечности. Это очень хорошее решение.
3)
Найденный минимум = 1.609767 (100000 вызовов фитнесс функции), при том что результат может быть от 0 до десятков тысяч. Это очень хорошее решение.
Как видите, оптимизатор справился очень хорошо, с разными функциями, подстройки под данные от андрея нету.
Это всё тот-же код что я приложил раньше, с убранным шагом=1, и добавленным расчётом шага от допустимого числа вызовов фитнесс функции.
Любое упоминание "читерства" - должно сопровождаться соответсвующей строчкой из приложенного кода, иначе не считается. Ваша личная неприязнь к какому-то алгоритму меня не волнует.
Тестер мт5 мне нравится, очень но хорош...
но блин.... почему по нажатию кнопки f2 меня все время перекидывает в редактор вместо того чтобы начать редактировать выбранное поле параметра?
раньше можно было удобно редактировать поля Значение Старт Шаг Стоп с кейборды кнопками f2 f3 f4 f5 не кликая мышой а теперь нет!
я опечален...
Сначала читаем это:
Представьте себе функцию f(x,y) = x^2 + y^2 + 3.
Вам нужно найти её минимум.
Одним алгоритмом решение - можно найти производные от x и y, и спуститься по градиенту.
Другим алгоритмом решение - поиск по сетке - по очереди менять значения x и y в определённых пределах, добиваясь всё меньшего результата.
Так вот, этот второй алгоритм - то что использовал я. Не имеет значения это работа с текстом, или работа с параметрами функций, смысл от этого не меняется.
Если почему-то считаете этот метод читерским - то посмотрите википедию, где для него даже есть отдельная статья - https://ru.wikipedia.org/wiki/Метод_перебора Метод перебора (метод равномерного поиска, перебор по сетке). Всё это общепризнано.
Я согласен с fxsaber что значение шага = 1 это очень большая подсказка для алгоритма. Но, вы используете такой константый шаг для теста MQ, и для теста своей библиотеки, так что здесь мы на равных условиях.
Далее читаем:
Я просто привёл два примера для решения f(x,y) = x^2 + y^2 + 3 Задача Андрея так не решится, это к сожалению да.
Третий способ - генетика. То что используется в MQ для этой задачи
1) нагенерировать кучу комбинаций x и y,
2) оценить их все,отбросить все неудачные комбинации
3) из оставшихся комбинаций наделать новых, путём перемешивания их x и y. Иногда вносить туда новые рандомные значения.
4) повторять 2-3 пока не надоест
Четвёртый способ - то что использует андрей. Раз он свой код не выкладывает (ex5 не в счёт, там кода нету), то там наверное какое-то читерство.
Так решается или не решается?
А мой алгоритм - это значительно модифицированный ГА того что в моей статье. Я связан лицензионным соглашением и посему не могу предоставить исходники.
Так решается или не решается?
Простите за неточность, я думал будет понятно из контекста, ибо это был ответ на комментарий про первый способ. Первым способом ваша задача не решится. Вторым - решится.
Вы уже проверили тот новый код что я приложил? Добавите меня в табличку результатов?
Простите за неточность, я думал будет понятно из контекста, ибо это был ответ на комментарий про первый способ. Первым способом ваша задача не решится. Вторым - решится.
Вы уже проверили тот новый код что я приложил? Добавите меня в табличку результатов?
Мне нужно установить R и проверить Ваш код. Если всё честно - будете в таблице. Насколько затянется проверка - сказать не могу, изучение R не входит в приоритеты моих текущих дел.
Второй Ваш код - окончательный вариант? - если да, то для Вас назад дороги уже нет.
Да там и изучать-то не надо, просто посмотрите на первую функцию (оптимизатор), ваших знаний mql хватит чтоб убедиться что идёт работа только с локальными и интерфейсными переменными, а сама фитнесс функция - для оптимизатора чёрный ящик. Синтаксис R очень похож на mql, разберётесь за 5 минут.
Багов вроде нету, пускай этот второй код будет окончательный вариант, ок.
Будет очень некрасиво если начнёте опять придумывать новые правила на ходу.. так что объявляю текущие правила и ваш текущий результат тоже окончательными.
В светлый путь!
Для истории -
Таблица с результатами по итогам 20 испытаний для каждого из тестов с текстом из 50, 150 и 1000 символов, с ключом из 52 символов, максимально допустимое количество обращений к ФФ 20000 (для MQ значение несколько больше).