Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо, что поделились этой очень полезной статьей.
Я пытался внедрить в код дополнительные индикаторы, но я не опытный программист и не имею хорошего опыта использования функций членства, и поэтому я не мог понять, как добавить дополнительные индикаторы для использования вместе с правилами внутри функции OnInit(). Код содержит только индикатор RSI и создает из него правила BUY и SELL. Не могли бы вы предоставить еще несколько примеров кодов индикаторов, таких как скользящая средняя или MACD, стохастик или SAR, которые можно использовать в коде?
Особенно я хочу знать, как создавать правила и добавлять условия входа, сравнивая их с текущей ценой. Основная проблема текущего кода в том, что иногда он долго держит убыточные сделки, а прибыльные закрывает быстро, поэтому любой совет по этому поводу будет оценен по достоинству. Я думаю, что необходимо сделать больше фильтров в логике выхода.
Также у меня есть один вопрос, если вы можете ответить, пожалуйста:
Обновляется ли файл OPT постоянно, чтобы улучшить входы и выходы со временем после длительной работы путем тонкой настройки самой политики?
Или советник просто использует тестер стратегий для оптимизации значений советника и использует те же значения входа и выхода, которые были прибыльными в последнее время, как обычный оптимизированный советник?
Я имею в виду, как и другие нейросетевые советники, настраивает ли он общую политику входа и выхода из сделки в процессе торговли?
Здравствуйте. Пожалуйста, дождитесь следующей статьи. В ней я рассмотрю работу с другими индикаторами, а также с различными агентами. И без нечеткой логики.
Здравствуйте. Пожалуйста, дождитесь следующей статьи. В ней я рассмотрю работу других индикаторов, а также с различными агентами. И без размытой логики.
Спасибо за быстрый ответ... Буду ждать.
Если вас не затруднит, не могли бы вы сообщить, когда вы планируете опубликовать следующую статью с кодом реализации индикатора...
Спасибо за быстрый ответ... Я буду ждать...
Если вас не затруднит, не могли бы вы сообщить, когда вы планируете опубликовать следующую статью с кодом реализации индикатора...
Я думаю, 1-2 недели на русском, а потом они переведут ее.
Но даже если статья будет на русском, все равно ее можно будет скачать и использовать в обычном MT5. так?
Кстати, у меня есть несколько предложений по улучшению логики работы функции вознаграждения. Так как я не уверен на 100% в кодировании на данный момент, и поэтому я не буду возиться с кодом сейчас. Но если вы найдете мои предложения полезными, пожалуйста, рассмотрите возможность их реализации в следующем релизе.
Я хочу, чтобы функция вознаграждения вознаграждала агента на основе суммирования вознаграждений от 2 факторов:
1.Чистая прибыль (Orderprofit()+OrderCommission()+OrderSwap()): NetProfit(NP) для конкретного закрытия ордера Reward(RW1) будет определяться Reward Factor(RF1), значение которого будет больше 1, так что при большей торговой прибыли вознаграждение будет больше, а при большем убытке - отрицательное вознаграждение.
RW1=NP*MathPow(RF1,2); Например, значение RF1 может быть 1.1 или 1.2 или больше.
То есть RW1 для конкретного закрытия ордера должен быть умножен на чистую прибыль (положительную или отрицательную) и квадрат фактора вознаграждения (RF1).
2.Количество последовательных прибылей или убытков(NCount): Еще одно вознаграждение(RW2) должно быть выдано на основе последовательных прибылей или убытков по коэффициенту вознаграждения(RF2) и количеству последовательных убытков или прибылей(NCount).
Перед выдачей вознаграждения советник должен проверить прибыль или убыток последнего ордера по данному инструменту, и если это чистый убыток с учетом OrderCommission и OrderSwap, то будет выдано более отрицательное вознаграждение, а если ордер закрыт в прибыли, то будет выдано более положительное вознаграждение.
RW2=MathPow(NCount,RF2); значение RF2 может быть 1,1 или 1,2 или больше.
Например, если текущий закрытый ордер положительный, а предыдущий - отрицательный, то NCount=1-1=0 и RW2 будет равен нулю. Или если текущий закрытый заказ положительный и предыдущий заказ положительный, то NCount=1+1=2 и, следовательно, RW2=(2)^(1.2) при значении RF2=1.2
Теперь чистое вознаграждение (RW) за закрытие конкретного ордера должно быть RW=RW1+RW2
Если вы сможете реализовать этот код в следующей версии советника, то это будет замечательно, или если вы можете просто сказать мне, где я должен добавить этот код, то я постараюсь сделать это сам.
Лучше всего, на мой взгляд, будет, если мы сможем объявить RF1 и RF2 глобальными переменными для оптимизации советника, чтобы он сам находил наилучшую комбинацию RF1 и RF2 во время тестирования советника.
Здравствуйте Максим Дмитриевский,
Извините, что задаю так много вопросов...потому что статья оказалась очень полезной при изучении и внедрении машинного обучения в mql5.... Конечно, жду следующей статьи...
Мой вопрос заключается в том, как обучить агента вырабатывать политику, направленную на максимизацию прибыли, а не количества прибыльных сделок?
Я изучил код updateReward() и updatePolicy(), и он, как мне кажется, оптимизирует только количество прибыльных сделок, игнорируя прибыль каждой сделки и не обращая внимания на то, растет ли баланс счета или нет.
Поэтому не могли бы вы пролить свет на то, как интегрировать сумму прибыли в функцию вознаграждения и есть ли способ сделать это?
Я пытался реализовать свой собственный код, предложенный выше, но, возможно, он не работает (хотя ошибок в кодировании не было) или я не знаю, как реализовать. Или, возможно, я не до конца понял, что именно делают функции updateReward() и updatePolicy(). Я буду очень признателен за ваш ценный вклад, если вы сможете объяснить немного больше о коде внутри этих двух функций и о том, как и что именно хранит RDFPolicyMatrix и как эти значения используются во время следующих торговых входов.
Заранее спасибо.
Я вижу лучшие результаты советника сразу после оптимизации, но по мере самообучения агента результаты становятся хуже день ото дня. Поэтому я хотел бы узнать, можно ли запустить оптимизатор из кода после каждого убытка. То есть вместо того, чтобы обновлять вознаграждение за каждый проигрыш, советник должен оптимизировать себя по данным за последние пару дней до сегодняшнего дня.
Если автор или кто-то другой знает, как это реализовать, то прошу поделиться.
Тут скорее не деревья а обучать несколько лесов на тех же данных да, имеет. Потому что процесс построения рандомизирован и результаты могут отличаться. Удивило, что ансамбль из лесов даёт заметное улучшение, т.е. обучить несколько лесов на одинаковых данных а результат осреднить. (5-15 штук) Можно делать разные настройки тоже. Ещё лучше результаты должны быть в случае бустинга, но пока не добрался.
Спасибо за статью, познавательно и в прикладном плане есть что взять (по крайней мере мне).
Как я понимаю, нечеткая логика была взята как пример для статьи. Нет запретов напрямую получать значение ts (реализовал, особых расхождений по эффективности не заметил - лес полностью подменяет нечеткую логику.). Это можно считать другим способом вознаграждения объекта. Как мне кажется (не могу подтвердить программой), увеличение числа оптимизируемых функций принадлежности не даст прироста, уже сейчас лес забивает нечеткую логику. Попробовал усреднять результаты лесов (включая и fuzzy как в статье), результат улучшился, после нейронных сетей из AlgLIB удивила скорость обучения на значениях за несколько лет. Для задания явных отличий использовал вторую форму создания леса с явным указанием использования разного числа индикаторов (ну уж поиграться с составом индикаторов это даже не обсуждаю):
Подскажите, какие еще формы вознаграждения можно попробовать? Интересует создание ансамбля из лесов с разными формами вознаграждения, кстати, ансамблем названо усреднение? или специальная формула объединения результата? вроде в AlgLIB нет ансамблей лесов?
Может кому пригодится, при нескольких лесах хранить данные в куче файлов неудобно, решил так:
Структура описывается любая, т. к. её длина фиксирована, получается в файле хранить и её и лес (структура обязательно вначале). Один лес - один файл.
Еще раз спасибо за статью, благодаря ей всерьез занялся AlgLIB.Спасибо за статью, познавательно и в прикладном плане есть что взять (по крайней мере мне).
Как я понимаю, нечеткая логика была взята как пример для статьи. Нет запретов напрямую получать значение ts (реализовал, особых расхождений по эффективности не заметил - лес полностью подменяет нечеткую логику.). Это можно считать другим способом вознаграждения объекта. Как мне кажется (не могу подтвердить программой), увеличение числа оптимизируемых функций принадлежности не даст прироста, уже сейчас лес забивает нечеткую логику. Попробовал усреднять результаты лесов (включая и fuzzy как в статье), результат улучшился, после нейронных сетей из AlgLIB удивила скорость обучения на значениях за несколько лет. Для задания явных отличий использовал вторую форму создания леса с явным указанием использования разного числа индикаторов (ну уж поиграться с составом индикаторов это даже не обсуждаю):
Подскажите, какие еще формы вознаграждения можно попробовать? Интересует создание ансамбля из лесов с разными формами вознаграждения, кстати, ансамблем названо усреднение? или специальная формула объединения результата? вроде в AlgLIB нет ансамблей лесов?
Может кому пригодится, при нескольких лесах хранить данные в куче файлов неудобно, решил так:
Структура описывается любая, т. к. её длина фиксирована, получается в файле хранить и её и лес (структура обязательно вначале). Один лес - один файл.
Еще раз спасибо за статью, благодаря ей всерьез занялся AlgLIB.Да, нечеткая логика как пример. Я сам от нее отказался уже - т.к. после разных экспериментов оказалось, что в таком виде использовать нет большого смысла.
Можно попробовать вознаграждение в виде текущего Sharpe Ratio или R^2 по сделкам. Или же оценивать вообще не результаты сделок а, например, состояния рынка - если купили и тренд рос какое-то время то сигнал подходит. Вроде такого.
Под ансамблем я подразумевал простое усреднение результатов, да. Но для каждого леса можно задать свои предикторы и\или целевые.
Планирую дописать дополнительную статью как раз с ансамблем Агентов + еще некоторые плюшки, в виде класса. Наверное скоро допишу.
Еще один важный не затронутый момент в этой статье - оценка ошибок классификации леса на тренировочной и тестовой выборках (oob), тоже будет описан этот момент.
За примеры кода спасибо, есть еще вариант сохранения через сериализацию
Прошу, при возможности, рассмотреть в качестве примера функцию обучения по истории например при запуске эксперта (эмуляция торговли), без применения тестера стратегий. Пробовал сделать сам, но видно ручки кривые, работает но сильно уступает в эффективности обучения обучению в тестере стратегий.
Прошу, при возможности, рассмотреть в качестве примера функцию обучения по истории например при запуске эксперта (эмуляция торговли), без применения тестера стратегий. Пробовал сделать сам, но видно ручки кривые, работает но сильно уступает в эффективности обучения обучению в тестере стратегий.
Да, виртуальный тестер тоже в планах, но пока надо отточить другие моменты, например автоматический отбор и редукция предикторов наиболее важны сейчас, что бы модель не так сильно переобучалась на истории