Группа пользователей MetaTrader 5 Python - краткое содержание - страница 32

 

Самооптимизирующийся эксперт с MQL5 и Python (часть V): Глубокие марковские модели

Самооптимизирующийся эксперт с MQL5 и Python (часть V): Глубокие марковские модели

В нашем предыдущем обсуждении цепей Маркова, ссылка на которое находится здесь, мы показали, как использовать матрицу переходов для понимания вероятностного поведения рынка. Наша матрица переходов обобщила много информации для нас. Она не только подсказывала нам, когда покупать и продавать, но и информировала нас о том, есть ли на нашем рынке сильные тренды или он в основном среднереверсивный. В сегодняшнем обсуждении мы сменим определение состояния системы со скользящих средних, которые мы использовали в первом обсуждении, на индикатор Relative Strength Indicator (RSI).
Self Optimizing Expert Advisor With MQL5 And Python (Part V): Deep Markov Models
Self Optimizing Expert Advisor With MQL5 And Python (Part V): Deep Markov Models
  • www.mql5.com
In this discussion, we will apply a simple Markov Chain on an RSI Indicator, to observe how price behaves after the indicator passes through key levels. We concluded that the strongest buy and sell signals on the NZDJPY pair are generated when the RSI is in the 11-20 range and 71-80 range, respectively. We will demonstrate how you can manipulate your data, to create optimal trading strategies that are learned directly from the data you have. Furthermore, we will demonstrate how to train a deep neural network to learn to use the transition matrix optimally.
 
Sergey Golubev #:

Разработка робота на Python и MQL5 (часть 1): Предварительная обработка данных

Мы рассмотрим цикл разработки торгового робота: сбор, обработка данных, расширение выборки, построение признаков, выбор и обучение модели, создание торговой системы на Python и мониторинг сделок.

Работа на Python имеет свои преимущества: скорость в области машинного обучения, а также возможность подбора и генерации признаков. Экспорт моделей в ONNX требует точно такой же логики генерации признаков, как и в Python, что не так просто. Именно поэтому я выбрал онлайн-трейдинг на Python.

Разработка робота на Python и MQL5 (часть 2): Выбор, создание и обучение модели, пользовательский тестер на Python

Разработка робота на Python и MQL5 (часть 2): Выбор, создание и обучение модели, пользовательский тестер на Python

В предыдущей статье мы немного поговорили о машинном обучении, выполнили наращивание данных, разработали функции для будущей модели и выбрали лучшие из них. Теперь пришло время двигаться дальше и создать рабочую модель машинного обучения, которая будет учиться на наших функциях и торговать (надеемся, успешно). Для оценки модели мы напишем пользовательский Python-тестер, который поможет нам оценить производительность модели и красоту тестовых графиков. Для более красивых тестовых графиков и большей стабильности модели мы также разработаем ряд классических функций машинного обучения.

Наша конечная цель - создать работающую и максимально прибыльную модель для прогнозирования цен и торговли. Весь код будет написан на Python с включением библиотеки MQL5.

Developing a robot in Python and MQL5 (Part 2): Model selection, creation and training, Python custom tester
Developing a robot in Python and MQL5 (Part 2): Model selection, creation and training, Python custom tester
  • www.mql5.com
We continue the series of articles on developing a trading robot in Python and MQL5. Today we will solve the problem of selecting and training a model, testing it, implementing cross-validation, grid search, as well as the problem of model ensemble.
 

Наука о данных и ML (часть 31): Использование моделей искусственного интеллекта CatBoost для торговли

Наука о данных и ML (часть 31): Использование моделей искусственного интеллекта CatBoost для торговли

CatBoost - это программная библиотека с открытым исходным кодом с алгоритмами градиентного бустинга на деревьях решений, которая была разработана специально для решения проблем, связанных с обработкой категориальных признаков и данных в машинном обучении.

Она была разработана компанией "Яндекс" и получила открытый исходный код в 2017 году, читайте далее.

Несмотря на то, что CatBoost был представлен недавно по сравнению с такими методами машинного обучения, как линейная регрессия или SVM, он завоевал огромную популярность среди сообществ ИИ и поднялся в топ самых используемых моделей машинного обучения на таких платформах, как Kaggle.

Причиной такого внимания к CatBoost стала его способность автоматически обрабатывать категориальные признаки в наборе данных, которые могут быть сложными для многих алгоритмов машинного обучения.

Data Science and ML (Part 31): Using CatBoost AI Models for Trading
Data Science and ML (Part 31): Using CatBoost AI Models for Trading
  • www.mql5.com
CatBoost AI models have gained massive popularity recently among machine learning communities due to their predictive accuracy, efficiency, and robustness to scattered and difficult datasets. In this article, we are going to discuss in detail how to implement these types of models in an attempt to beat the forex market.
 
Sergey Golubev #:

Наука о данных и ML (часть 31): Использование моделей искусственного интеллекта CatBoost для торговли

CatBoost - это программная библиотека с открытым исходным кодом с алгоритмами градиентного бустинга на деревьях решений, которая была разработана специально для решения проблем, связанных с обработкой категориальных признаков и данных в машинном обучении.

Она была разработана компанией "Яндекс" и получила открытый исходный код в 2017 году, читайте далее.

Несмотря на то, что CatBoost был представлен недавно по сравнению с такими методами машинного обучения, как линейная регрессия или SVM, он завоевал огромную популярность среди сообществ ИИ и поднялся в топ самых используемых моделей машинного обучения на таких платформах, как Kaggle.

Причиной такого внимания к CatBoost стала его способность автоматически обрабатывать категориальные признаки в наборе данных, которые могут быть сложными для многих алгоритмов машинного обучения.

Ну да, яндекс просто супермодель для бизнеса. Общался с разработчиками, никто там больше пол-года не мог вытерпеть. Одни неопытные юниоры.

 

Feature Engineering With Python And MQL5 (часть I): Прогнозирование скользящих средних для долгосрочных моделей ИИ

Feature Engineering With Python And MQL5 (часть I): Прогнозирование скользящих средних для долгосрочных моделей ИИ

Применяя искусственный интеллект для решения любой задачи, мы должны постараться сделать все возможное, чтобы предоставить модели как можно больше полезной информации о реальном мире. Чтобы описать различные свойства рынка для наших моделей ИИ, мы должны манипулировать и преобразовывать входные данные, этот процесс называется инженерией признаков. В этой серии статей вы узнаете, как преобразовать рыночные данные, чтобы снизить уровень ошибок ваших моделей. Сегодня я расскажу о том, как использовать скользящие средние для увеличения диапазона прогнозирования ваших моделей искусственного интеллекта таким образом, чтобы обеспечить полный контроль и разумное понимание глобальной эффективности стратегии.
Feature Engineering With Python And MQL5 (Part I): Forecasting Moving Averages For Long-Range AI Models
Feature Engineering With Python And MQL5 (Part I): Forecasting Moving Averages For Long-Range AI Models
  • www.mql5.com
The moving averages are by far the best indicators for our AI models to predict. However, we can improve our accuracy even further by carefully transforming our data. This article will demonstrate, how you can build AI Models capable of forecasting further into the future than you may currently be practicing without significant drops to your accuracy levels. It is truly remarkable, how useful the moving averages are.
 

Самооптимизирующийся эксперт на MQL5 и Python (часть VI): Использование преимуществ глубокого двойного спуска

Самооптимизирующийся эксперт на MQL5 и Python (часть VI): Использование преимуществ глубокого двойного спуска

Оверфиттинг в машинном обучении может принимать различные формы. Чаще всего это происходит, когда модель искусственного интеллекта узнает слишком много шума в данных и не может сделать никаких полезных обобщений. Это приводит к неудовлетворительным результатам, когда мы оцениваем модель на данных, с которыми она раньше не сталкивалась. Существует множество методов, разработанных для борьбы с чрезмерной подгонкой, однако их применение часто оказывается сложным, особенно если вы только начинаете свой путь. Однако недавняя работа, опубликованная группой прилежных выпускников Гарварда, говорит о том, что в некоторых задачах чрезмерная подгонка может стать проблемой прошлого. В этой статье мы расскажем вам об этой научной работе и покажем, как можно создавать модели ИИ мирового класса в соответствии с ведущими мировыми исследованиями.

Self Optimizing Expert Advisor With MQL5 And Python (Part VI): Taking Advantage of Deep Double Descent
Self Optimizing Expert Advisor With MQL5 And Python (Part VI): Taking Advantage of Deep Double Descent
  • www.mql5.com
Traditional machine learning teaches practitioners to be vigilant not to overfit their models. However, this ideology is being challenged by new insights published by diligent researches from Harvard, who have discovered that what appears to be overfitting may in some circumstances be the results of terminating your training procedures prematurely. We will demonstrate how we can use the ideas published in the research paper, to improve our use of AI in forecasting market returns.
 

Анализ множественных символов с помощью Python и MQL5 (часть II): Анализ главных компонент для оптимизации портфеля

Анализ множественных символов с помощью Python и MQL5 (часть II): Анализ главных компонент для оптимизации портфеля

Для участников нашего сообщества, желающих продавать советники, эта статья продемонстрирует, как можно создать беспроблемный опыт для конечных пользователей. Наше торговое приложение будет гибким и надежным одновременно. Я покажу вам, как создавать торговые приложения, которые позволят вашим клиентам легко переключаться между режимами торговли с высоким, средним и низким риском. В то время как алгоритм PCA будет выполнять всю тяжелую работу для ваших конечных пользователей в фоновом режиме.

Multiple Symbol Analysis With Python And MQL5 (Part II): Principal Components Analysis For Portfolio Optimization
Multiple Symbol Analysis With Python And MQL5 (Part II): Principal Components Analysis For Portfolio Optimization
  • www.mql5.com
Managing trading account risk is a challenge for all traders. How can we develop trading applications that dynamically learn high, medium, and low-risk modes for various symbols in MetaTrader 5? By using PCA, we gain better control over portfolio variance. I’ll demonstrate how to create applications that learn these three risk modes from market data fetched from MetaTrader 5.
 

Feature Engineering With Python And MQL5 (часть II): Угол цены

Feature Engineering With Python And MQL5 (часть II): Угол цены

Модели машинного обучения - очень чувствительные инструменты. В этой серии статей мы уделим значительно больше внимания тому, как преобразования, которые мы применяем к нашим данным, влияют на работу нашей модели. Кроме того, наши модели чувствительны к тому, как передается связь между входными и целевыми данными. Это означает, что для эффективного обучения модели может потребоваться создание новых признаков на основе имеющихся у нас данных.

Feature Engineering With Python And MQL5 (Part II): Angle Of Price
Feature Engineering With Python And MQL5 (Part II): Angle Of Price
  • www.mql5.com
There are many posts in the MQL5 Forum asking for help calculating the slope of price changes. This article will demonstrate one possible way of calculating the angle formed by the changes in price in any market you wish to trade. Additionally, we will answer if engineering this new feature is worth the extra effort and time invested. We will explore if the slope of the price can improve any of our AI model's accuracy when forecasting the USDZAR pair on the M1.
 

От Python до MQL5: Путешествие в квантово-вдохновленные торговые системы

От Python до MQL5: Путешествие в квантово-инспирированные торговые системы

В этой статье рассматривается применение квантово-вдохновленных концепций в торговых системах, соединяющих теоретические квантовые вычисления с практической реализацией на MQL5. Мы познакомим вас с основными квантовыми принципами и проведем вас от создания прототипа на Python до интеграции с MQL5, используя реальные данные о производительности.

From Python to MQL5: A Journey into Quantum-Inspired Trading Systems
From Python to MQL5: A Journey into Quantum-Inspired Trading Systems
  • www.mql5.com
The article explores the development of a quantum-inspired trading system, transitioning from a Python prototype to an MQL5 implementation for real-world trading. The system uses quantum computing principles like superposition and entanglement to analyze market states, though it runs on classical computers using quantum simulators. Key features include a three-qubit system for analyzing eight market states simultaneously, 24-hour lookback periods, and seven technical indicators for market analysis. While the accuracy rates might seem modest, they provide a significant edge when combined with proper risk management strategies.
 

Здравствуйте. Обнаружил баг: copy_rates_range возвращает не те данные - должен возвращать данные бара OHLC, а возвращает данные тика. Не знал куда сообщить.

Использовал пример кода из справочника с другими датами и инструментом:

from datetime import datetime
import MetaTrader5 as mt5
# выведем данные о пакете MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
  
# импортируем модуль pandas для вывода полученных данных в табличной форме
import pandas as pd
pd.set_option('display.max_columns', 500) # сколько столбцов показываем
pd.set_option('display.width', 1500)      # макс. ширина таблицы для показа
# импортируем модуль pytz для работы с таймзоной
import pytz

# установим подключение к терминалу MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()

# установим таймзону в UTC
timezone = pytz.timezone("Etc/UTC")
# создадим объекты datetime в таймзоне UTC, чтобы не применялось смещение локальной таймзоны
utc_from = datetime(2024, 1, 10, tzinfo=timezone)
utc_to = datetime(2024, 1, 11, hour = 13, tzinfo=timezone)
# получим бары с USDJPY M5 в интервале 2020.01.10 00:00 - 2020.01.11 13:00 в таймзоне UTC
rates = mt5.copy_rates_range("EURUSDb", mt5.TIMEFRAME_M5, utc_from, utc_to)

# завершим подключение к терминалу MetaTrader 5
mt5.shutdown()
# выведем каждый элемент полученных данных на новой строке
print("Выведем полученные данные как есть")
counter=0
for rate in rates:
    counter+=1
    if counter<=10:
        print(rate)

# создадим из полученных данных DataFrame
rates_frame = pd.DataFrame(rates)
# сконвертируем время в виде секунд в формат datetime
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')

# выведем данные
print("\nВыведем датафрейм с данными")
print(rates_frame.head(10))

и на выходе получаю:

MetaTrader5 package author:  MetaQuotes Ltd.

MetaTrader5 package version:  5.0.4682

Выведем полученные данные как есть

(1704844800, 1.09291, 1.09291, 1.09262, 4607600487953426211, 6, 18, 0.)

(1704845100, 1.09284, 1.09285, 1.09237, 4607599271981526821, 19, 7, 0.)

(1704845400, 1.09263, 1.09284, 1.09263, 4607599587233500737, 15, 16, 0.)

(1704845700, 1.09257, 1.09288, 1.09257, 4607600487953426211, 8, 13, 0.)

(1704846000, 1.09283, 1.09287, 1.09283, 4607600532989422485, 64, 15, 0.)

(1704846300, 1.09285, 1.09286, 1.09265, 4607599992557467200, 17, 15, 0.)

(1704846600, 1.09273, 1.09286, 1.09273, 4607600623061415032, 23, 19, 0.)

(1704846900, 1.09286, 1.09288, 1.09283, 4607600713133407580, 11, 17, 0.)

(1704847200, 1.09288, 1.09288, 1.09282, 4607600713133407580, 9, 13, 0.)

(1704847500, 1.09288, 1.09289, 1.09286, 4607600758169403853, 12, 11, 0.)


Выведем датафрейм с данными

                 time      bid      ask     last               volume  time_msc  flags  volume_real

0 2024-01-10 00:00:00  1.09291  1.09291  1.09262  4607600487953426211         6     18          0.0

1 2024-01-10 00:05:00  1.09284  1.09285  1.09237  4607599271981526821        19      7          0.0

2 2024-01-10 00:10:00  1.09263  1.09284  1.09263  4607599587233500737        15     16          0.0

3 2024-01-10 00:15:00  1.09257  1.09288  1.09257  4607600487953426211         8     13          0.0

4 2024-01-10 00:20:00  1.09283  1.09287  1.09283  4607600532989422485        64     15          0.0

5 2024-01-10 00:25:00  1.09285  1.09286  1.09265  4607599992557467200        17     15          0.0

6 2024-01-10 00:30:00  1.09273  1.09286  1.09273  4607600623061415032        23     19          0.0

7 2024-01-10 00:35:00  1.09286  1.09288  1.09283  4607600713133407580        11     17          0.0

8 2024-01-10 00:40:00  1.09288  1.09288  1.09282  4607600713133407580         9     13          0.0

9 2024-01-10 00:45:00  1.09288  1.09289  1.09286  4607600758169403853        12     11          0.0

А должен был получить типа таких данных:

MetaTrader5 package author:  MetaQuotes Software Corp. 

MetaTrader5 package version:  5.0.29 

Выведем полученные данные как есть 

(1578614400, 109.513, 109.527, 109.505, 109.521, 43, 2, 0) 

(1578614700, 109.521, 109.549, 109.518, 109.543, 215, 8, 0) 

(1578615000, 109.543, 109.543, 109.466, 109.505, 98, 10, 0) 

(1578615300, 109.504, 109.534, 109.502, 109.517, 155, 8, 0) 

(1578615600, 109.517, 109.539, 109.513, 109.527, 71, 4, 0) 

(1578615900, 109.526, 109.537, 109.484, 109.52, 106, 9, 0) 

(1578616200, 109.52, 109.524, 109.508, 109.51, 205, 7, 0) 

(1578616500, 109.51, 109.51, 109.491, 109.496, 44, 8, 0) 

(1578616800, 109.496, 109.509, 109.487, 109.5, 85, 5, 0) 

(1578617100, 109.5, 109.504, 109.487, 109.489, 82, 7, 0) 

  

Выведем датафрейм с данными 

                 time     open     high      low    close  tick_volume  spread  real_volume 

0 2020-01-10 00:00:00  109.513  109.527  109.505  109.521           43       2            0 

1 2020-01-10 00:05:00  109.521  109.549  109.518  109.543          215       8            0 

2 2020-01-10 00:10:00  109.543  109.543  109.466  109.505           98      10            0 

3 2020-01-10 00:15:00  109.504  109.534  109.502  109.517          155       8            0 

4 2020-01-10 00:20:00  109.517  109.539  109.513  109.527           71       4            0 

5 2020-01-10 00:25:00  109.526  109.537  109.484  109.520          106       9            0 

6 2020-01-10 00:30:00  109.520  109.524  109.508  109.510          205       7            0 

7 2020-01-10 00:35:00  109.510  109.510  109.491  109.496           44       8            0 

8 2020-01-10 00:40:00  109.496  109.509  109.487  109.500           85       5            0 

9 2020-01-10 00:45:00  109.500  109.504  109.487  109.489           82       7            0

Сделал downgrade библиотеки MetaTrader5 до версии 5.0.4200 и заработало нормально:

MetaTrader5 package author:  MetaQuotes Ltd.

MetaTrader5 package version:  5.0.4200

Выведем полученные данные как есть

(1704844800, 1.09291, 1.09291, 1.09262, 1.09283, 6, 18, 0)

(1704845100, 1.09284, 1.09285, 1.09237, 1.09256, 19, 7, 0)

(1704845400, 1.09263, 1.09284, 1.09263, 1.09263, 15, 16, 0)

(1704845700, 1.09257, 1.09288, 1.09257, 1.09283, 8, 13, 0)

(1704846000, 1.09283, 1.09287, 1.09283, 1.09284, 64, 15, 0)

(1704846300, 1.09285, 1.09286, 1.09265, 1.09272, 17, 15, 0)

(1704846600, 1.09273, 1.09286, 1.09273, 1.09286, 23, 19, 0)

(1704846900, 1.09286, 1.09288, 1.09283, 1.09288, 11, 17, 0)

(1704847200, 1.09288, 1.09288, 1.09282, 1.09288, 9, 13, 0)

(1704847500, 1.09288, 1.09289, 1.09286, 1.09289, 12, 11, 0)


Выведем датафрейм с данными

                 time     open     high      low    close  tick_volume  spread  real_volume

0 2024-01-10 00:00:00  1.09291  1.09291  1.09262  1.09283            6      18            0

1 2024-01-10 00:05:00  1.09284  1.09285  1.09237  1.09256           19       7            0

2 2024-01-10 00:10:00  1.09263  1.09284  1.09263  1.09263           15      16            0

3 2024-01-10 00:15:00  1.09257  1.09288  1.09257  1.09283            8      13            0

4 2024-01-10 00:20:00  1.09283  1.09287  1.09283  1.09284           64      15            0

5 2024-01-10 00:25:00  1.09285  1.09286  1.09265  1.09272           17      15            0

6 2024-01-10 00:30:00  1.09273  1.09286  1.09273  1.09286           23      19            0

7 2024-01-10 00:35:00  1.09286  1.09288  1.09283  1.09288           11      17            0

8 2024-01-10 00:40:00  1.09288  1.09288  1.09282  1.09288            9      13            0

9 2024-01-10 00:45:00  1.09288  1.09289  1.09286  1.09289           12      11            0

Документация по MQL5: Python интеграция / copy_rates_range
Документация по MQL5: Python интеграция / copy_rates_range
  • www.mql5.com
Получает бары в указанном диапазоне дат из терминала MetaTrader 5. Параметры symbol [in]  Имя финансового инструмента, например, ...