Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 1557
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
статья на Хабре с громким названием "AI для людей: простыми словами о технологиях" https://habr.com/ru/company/jetinfosystems/blog/471626/
пролистал статью - все свелось к Machine Learning, ....вспомнил старый анекдот:
Студент сдает зоологию. Знает только про блох. На экзамене достается вопрос про собак.
Судент начинает:
- Собаки это млекопитающие, покрыты шерстью. В шерсти водятся блохи...дальше все про блох....
Препод:
- Ладно молодой человек, расскажите про кошек
Студент:
- Кошки это млекопитающие, покрыты шерстью. В шерсти водятся блохи...дальше все про блох....
Препод:
- Давайте-ка про рыб
Студент:
- Рыбы это не млекопитающие. Шерстью не покрыты. Покрыты чешуей, но если бы они были покрыты шерстью, то в ней бы водились блохи....
Финалочка обучения на ретурнах
Не надо использовать ZZ и вообще любые дополнительные индикаторы. Только OHLC с нескольких тф (тф должны отличаться в 4-6 раз. Например, 1-5-30-H3... вплоть до месячного тф. Подобрать самостоятельно.) и, возможно, еще тики для раннего предупреждения.
По ценам максимумов и минимумов отдельно сверточные структуры. По OHLC -рекуррентную структуру. И так по всем используемым тф. Сигналы всего этого далее поступают, например, на полносвязную сеть.
Также тики пропущенные через рекуррентную сеть завести на один из входов полносвязной сети.
Оптимизировать по скорости увеличения депозита. Совокупная сеть сама в результате должна решать, какой объем лота и выбирать точки открытия и закрытия. Примерно так.
Ну что Вы сыпите словами, Вы нарисуйте структуру предлагаемой Вами сети. И появится море вопросов и у Вас.
А так просто сотрясение воздуха. Идея правильная, направление неверное.
Финалочка обучения на ретурнах
А можете приложить тестер самопальный, мне интересно, вы избежали одной очень распространенной ошибки? Или в личку.
Удачи
А можете приложить тестер самопальный, мне интересно, вы избежали одной очень распространенной ошибки? Или в личку.
Удачи
жупитер ноутбук подойдет? скинул целиком, не секретно, т.к. весь код в видео есть
жупитер ноутбук подойдет? скинул целиком, не секретно, т.к. весь код в видео есть
Конечно. Спасибо. Посмотрю и отпишусь
жупитер ноутбук подойдет? скинул целиком, не секретно, т.к. весь код в видео есть
Разбирать чужой код то еще занятие. Смотрим только функцию custom_tester() и только выделенную часть.
В чем же ошибка при вычислении результата? Вы вычисляете результат на каждой итерации добавляя к предыдущему значению result += testpr[i] - lastpr. Это разность Close текущего бара и предыдущего. По идее лучше использовать Close - Open, но это не важно. Важно другое - получив сигнал по закрытию текущего бара премией сигнала Вы считаете diff(Close) этого же бара. Это не верно. Премией сигнала текущего бара является diff(Close) следующего. Для правильного вычисления результата нужно сдвинуть p = model.predict_proba(X) вправо на один бар. Дальнейшие вычисления я приведу на R, мне так проще.
В первой строке - переводим предсказание в номинальные (1,-1), сдвигаем вправо на один бар, убираем NA, получаем вектор сигналов. Во второй строке кумулятивно суммируем произведение вектора сигналов и вектора diff(Close), предварительно выровняв его по длине с вектором сигналов. Получаем правильный результат.
Удачи
Разбирать чужой код то еще занятие. Смотрим только функцию custom_tester() и только выделенную часть.
В чем же ошибка при вычислении результата? Вы вычисляете результат на каждой итерации добавляя к предыдущему значению result += testpr[i] - lastpr. Это разность Close текущего бара и предыдущего. По идее лучше использовать Close - Open, но это не важно. Важно другое - получив сигнал по закрытию текущего бара премией сигнала Вы считаете diff(Close) этого же бара. Это не верно. Премией сигнала текущего бара является diff(Close) следующего. Для правильного вычисления результата нужно сдвинуть p = model.predict_proba(X) вправо на один бар. Дальнейшие вычисления я приведу на R, мне так проще.
В первой строке - переводим предсказание в номинальные (1,-1), сдвигаем вправо на один бар, убираем NA, получаем вектор сигналов. Во второй строке кумулятивно суммируем произведение вектора сигналов и вектора diff(Close), предварительно выровняв его по длине с вектором сигналов. Получаем правильный результат.
Удачи
при открытии сделки сохраняется текущая цена. В цикле, если сигнал не изменился, продолжаем двигаться по цене вперед, сохраняя открытую сделку.
Если сигнал изменился на следующем баре, переворачиваем сделку (lastdeal) и вычитаем из текущей цены цену открытия сделки, разница = профит либо лосс, прибавляем к общей накопленной сумме по балансу
для покупок вычитаем из текущей цены цену открытия, для продажи наоборот, соответственно. Ошибки там вроде нет
Поскольку сигнал берется для текущего бара, то сдвигать не нужно
1 - продажа, 0 - покупка. Условные обозначения. Тестер очень простой
Наверное, код можно сократить, не заморачивался
при открытии сделки сохраняется текущая цена. В цикле, если сигнал не изменился, продолжаем двигаться по цене вперед, сохраняя открытую сделку.
Если сигнал изменился на следующем баре, переворачиваем сделку (lastdeal) и вычитаем из текущей цены цену открытия сделки, разница = профит либо лосс, прибавляем к общей накопленной сумме по балансу
для покупок вычитаем из текущей цены цену открытия, для продажи наоборот, соответственно. Ошибки там вроде нет
Поскольку сигнал берется для текущего бара, то сдвигать не нужно
1 - продажа, 0 - покупка. Условные обозначения. Тестер очень простой
Наверное, код можно сократить, не заморачивался
Это другой подход. При таком варианте вроде действительно все правильно. Беру обратно свое замечание.
Удачи