Как экспортировать и форматировать данные индикатора MQL5 и историю сделок для Python с целью обучения модели машинного обучения?

 

Здравствуйте, сообщество!

Я разрабатываю проект по интеграции моей торговой среды в MetaTrader 5 с Python с целью обучения модели машинного обучения, которая сможет оптимизировать мою торговую стратегию. У меня уже есть история моих сделок и пользовательский индикатор на MQL5. Я хотел бы собрать эти данные и подготовить их для обучения модели.

Буду признателен за рекомендации по следующим вопросам:

1. Экспорт данных индикатора MQL5 в Python

  • Как экспортировать значения, генерируемые моим пользовательским индикатором, для использования в Python?
    • Существует ли конкретная функция или метод в MQL5, облегчающий экспорт этих данных в файл (например, CSV) или в базу данных?

2. Форматирование истории сделок для обучения

  • Как лучше всего форматировать мою историю сделок для обучения модели машинного обучения?
    • Какие поля и структура рекомендуются, чтобы гарантировать, что данные подходят для анализа и моделирования?
    • Примеры структур данных (например, таблицы), облегчающие процесс обучения.

3. Рекомендации по моделям машинного обучения

  • Какие модели вы рекомендуете для анализа и прогнозирования результатов на основе истории сделок?
    • Модели классификации (например, Random Forest, XGBoost) или модели регрессии (например, линейная регрессия, Gradient Boosting)?
    • Рассмотрение моделей временных рядов, таких как LSTM или ARIMA, в контексте финансовых данных.

4. Интеграция между MQL5 и Python

  • Какие библиотеки Python наиболее подходят для чтения и обработки данных, экспортированных из MQL5?
    • Предложения по фреймворкам или API, облегчающим прямую связь между MetaTrader 5 и Python для обновления данных в реальном времени.

5. Лучшие практики при подготовке данных и обучении модели

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

6. Ресурсы и примеры кода

  • Есть ли примеры кода или ресурсы, которые могут помочь в процессе интеграции и обучения?
    • Ссылки на учебные пособия, проекты на GitHub или релевантную документацию, облегчающую разработку.

Дополнительный контекст:

  • Конечная цель: Я хочу, чтобы модель машинного обучения помогала в принятии торговых решений, идентифицируя паттерны, которые могут улучшить эффективность моих сделок.
  • Доступные данные: Подробная история выполненных сделок, включая дату/время, символ, тип ордера, объем, цену входа/выхода, стоп-лосс, тейк-профит, результат и значения пользовательского индикатора.

Заранее благодарю за помощь и любые ресурсы, примеры кода или документацию, которые вы можете предоставить для облегчения процесса интеграции и разработки модели.

С уважением,
Hydra

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 
Ну, скажем так, правой мышью по истории сделок и сохраняем как детализированный отчёт. Если Ваша нейронка понимает html-файлы, то можно скормить. Есть ещё вариант сделать скрипт, который пробежится по истории сделок и создаст csv-файл с нужными Вам полями. Пайтон понимает эти файлы. Это точно.
 
Vitaly Murlenko #:
Ну, скажем так, правой мышью по истории сделок и сохраняем как детализированный отчёт. Если Ваша нейронка понимает html-файлы, то можно скормить. Есть ещё вариант сделать скрипт, который пробежится по истории сделок и создаст csv-файл с нужными Вам полями. Пайтон понимает эти файлы. Это точно.
и как я могу собрать данные из своего пользовательского индикатора?
 
Leonardo A #:
и как я могу собрать данные из своего пользовательского индикатора?
Заголовок своей темы посмотрите. Там есть словосочетание "история сделок"?
 
Что Вам мешает вставить в индикатор код, который создаёт и дополняет по мере надобности текстовый файл?
 

Вот код для mql4. Будет ли работать на MQL5 - не знаю. Но принцип, думаю, извлечь не сложно.

// ======================== WritingLineInFile() ====================================================
//| Дописывание строки в конец файла
//+---------------------------------
void WritingLineInFile(string FlName,string Text,string Razdelitel){
  bool          LNG=TerminalInfoString(TERMINAL_LANGUAGE)=="Russian";
        int file_handle=FileOpen(FlName,FILE_CSV|FILE_READ|FILE_WRITE,Razdelitel);
        if (file_handle>0){
                FileSeek(file_handle,0,SEEK_END);
                FileWrite(file_handle,Text);
                FileClose(file_handle);
        }
        else{
                Print(__FUNCTION__,"(): ",Text(LNG,"Ошибка № ","Error No. "),GetLastError(),Text(LNG," Не удалось открыть файл "," Failed to open file "),FlName);
        }
}
// =================== Text ========================================================================
// Функция возвращает текст на выбранном языке терминала.
// Если терминал русскоязычный, то возвращается строка на русском. В противном случае на английском.
// -------------------------------------------------------------------------------------------------
string Text(bool Lang,string Russ,string Engl){
   if(Lang){
                return(Russ);
        }
  else return(Engl);
}
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

...

Hydra Corporation, 2024.11.13 12:40

Здравствуйте, всем!

Я разрабатываю приложение на Python для анализа финансовых данных и ищу способ собирать данные с индикаторов, созданных в MetaTrader 5 (MQL5), непосредственно в мой Python-скрипт.

У меня есть индикатор MQL5, который я использую в MetaTrader 5, и я хотел бы отправить его данные (такие как значения цен, технические индикаторы и т. д.) в Python для дальнейшего анализа.

Некоторые вопросы, которые у меня есть:

  1. Как я могу получить данные с индикатора MQL5 в Python?
    • Есть ли API или библиотека для этой интеграции?
  2. Какой лучший метод для передачи этих данных из MetaTrader 5 в Python?
    • Можно ли использовать прямую интеграцию через сокеты, или нужно использовать промежуточный файл (например, CSV или JSON)?
  3. Возможно ли осуществлять эту коммуникацию в реальном времени, или это работает только для сбора исторических данных?

Буду признателен за любую помощь или рекомендации!

Спасибо!


 
Hydra Corporation:

Здравствуйте, сообщество!

Я разрабатываю проект по интеграции моей торговой среды в MetaTrader 5 с Python с целью обучения модели машинного обучения, которая сможет оптимизировать мою торговую стратегию. У меня уже есть история моих сделок и пользовательский индикатор на MQL5. Я хотел бы собрать эти данные и подготовить их для обучения модели.

Буду признателен за рекомендации по следующим вопросам:

1. Экспорт данных индикатора MQL5 в Python


  • Как экспортировать значения, генерируемые моим пользовательским индикатором, для использования в Python?
    • Существует ли конкретная функция или метод в MQL5, облегчающий экспорт этих данных в файл (например, CSV) или в базу данных?

2. Форматирование истории сделок для обучения

  • Как лучше всего форматировать мою историю сделок для обучения модели машинного обучения?
    • Какие поля и структура рекомендуются, чтобы гарантировать, что данные подходят для анализа и моделирования?
    • Примеры структур данных (например, таблицы), облегчающие процесс обучения.

3. Рекомендации по моделям машинного обучения

  • Какие модели вы рекомендуете для анализа и прогнозирования результатов на основе истории сделок?
    • Модели классификации (например, Random Forest, XGBoost) или модели регрессии (например, линейная регрессия, Gradient Boosting)?
    • Рассмотрение моделей временных рядов, таких как LSTM или ARIMA, в контексте финансовых данных.

4. Интеграция между MQL5 и Python

  • Какие библиотеки Python наиболее подходят для чтения и обработки данных, экспортированных из MQL5?
    • Предложения по фреймворкам или API, облегчающим прямую связь между MetaTrader 5 и Python для обновления данных в реальном времени.

5. Лучшие практики при подготовке данных и обучении модели

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

6. Ресурсы и примеры кода

  • Есть ли примеры кода или ресурсы, которые могут помочь в процессе интеграции и обучения?
    • Ссылки на учебные пособия, проекты на GitHub или релевантную документацию, облегчающую разработку.

Дополнительный контекст:

  • Конечная цель: Я хочу, чтобы модель машинного обучения помогала в принятии торговых решений, идентифицируя паттерны, которые могут улучшить эффективность моих сделок.
  • Доступные данные: Подробная история выполненных сделок, включая дату/время, символ, тип ордера, объем, цену входа/выхода, стоп-лосс, тейк-профит, результат и значения пользовательского индикатора.

Заранее благодарю за помощь и любые ресурсы, примеры кода или документацию, которые вы можете предоставить для облегчения процесса интеграции и разработки модели.

С уважением,
Hydra

Нормально очень мощное облако для  Python


 

Вот как ты можешь использовать библиотеку mt5 для экспорта данных и истории сделок:

Установка библиотеки MetaTrader5

Перед началом убедись, что у тебя установлен Python и pip. Затем установи библиотеку командой:

pip install MetaTrader5
import MetaTrader5 as mt5

# Подключение к MetaTrader 5
if not mt5.initialize():
    print("Не удалось подключиться к MetaTrader 5")
else:
    print("Подключение к MetaTrader 5 успешно")

Получение данных твоего индикатора

Для получения данных из индикатора ты можешь использовать функцию copy_rates_from_pos() или copy_rates_range() для получения исторических данных:

import pandas as pd

# Получаем данные индикатора
symbol = "EURUSD"
rates = mt5.copy_rates_from_pos(symbol, mt5.TIMEFRAME_M1, 0, 1000)

# Конвертируем в DataFrame
df = pd.DataFrame(rates)
df['time'] = pd.to_datetime(df['time'], unit='s')

print(df.head())

Экспорт истории сделок

Для получения истории сделок и экспорта их в удобном формате:

# Получаем историю сделок
history = mt5.history_deals_get("2020-01-01", "2021-01-01")

# Конвертируем в DataFrame
deals_df = pd.DataFrame(list(history), columns=history[0]._asdict().keys())
deals_df['time'] = pd.to_datetime(deals_df['time'], unit='s')

print(deals_df.head())

Завершение сессии

Не забывай закрывать сессию с MetaTrader 5 после завершения работы если данные больше не нужны:

mt5.shutdown()
 

Использование модели Llama 3.1 405B для анализа валютных данных или для торговли на Форекс может быть не самым прямым или очевидным решением, поскольку эта модель прежде всего предназначена для обработки и генерации естественного языка. Тем не менее, вот несколько способов, как её можно адаптировать для работы с финансовыми данными:

1. Анализ сентимента рынка

Llama 3.1 405B может быть использована для анализа сентимента текстов, таких как новости о финансах или посты в социальных медиа, которые могут влиять на рыночные цены. Это может помочь понять общее настроение рынка и потенциально предсказать его движения

Рекомендуемые системные требования:

  • Процессор (CPU): Мощный многоядерный процессор (например, Intel Xeon Platinum или AMD EPYC 7742).
  • Оперативная память (RAM): 512 ГБ или больше.
  • Видеокарты (GPU): 16-32 GPU с 80 ГБ памяти на каждой (например, NVIDIA A100).
  • Постоянное хранилище (HDD/SSD): 2 ТБ SSD или больше.
  • Операционная система (OS): Linux (например, Ubuntu 20.04 или новее).
 

Можете начать с серии этих статей. Там описаны разные подходы.

Первая статья из серии. И дальше по хронологии.

Градиентный бустинг (CatBoost) в задачах построения торговых систем. Наивный подход
Градиентный бустинг (CatBoost) в задачах построения торговых систем. Наивный подход
  • www.mql5.com
Обучение классификатора CatBoost на языке Python и экспорт модели в mql5 формат, а также разбор параметров модели и кастомный тестер стратегий. Для подготовки данных и обучения модели используется язык программирования Python и библиотека MetaTrader5.