Группа пользователей MetaTrader 5 Python - краткое содержание - страница 13
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я обнаружил проблему с обработкой **kwargs в некоторых функциях, которые могут вызываться как с аргументами, так и без них. Пожалуйста, обратитесь к этим модульным тестам pytest.
Ожидаемое поведение:
Все функции должны быть способны исключать **kwargs и возвращать эквивалент вызова без аргументов:
Это нежелательное обходное решение
pytest
это должно быть написано в главном потоке... я скопировал
Да, 1 клемма - 1 соединение.
В моей задаче нужно было использовать более 1 подключения терминалов, и в коде я использую threading.RLock() в качестве семафора :)
Ничего лучше я не придумал...
Неправильно. К одному терминалу (скорее к брокеру/счету) может быть много подключений. Или я неправильно понял?
Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий
MetaTrader 5 Python User Group - как использовать Python в Metatrader
Рашид Умаров, 2020.03.28 09:11
...
Однако примеры для следующих функций на сайте еще не обновлены, это произойдет чуть позже:
Обновлены примеры для следующих функций:
pip install MetaTrader5 не работает даже после обновления до python 3.8
Работает. Я использую 3.82, и python и дополнительные пакеты работают нормально.
Я не уверен, что вы занимаетесь разработкой, если да, то, пожалуйста, не обращайте внимания на мою неосведомленность о вас. Если нет, то посмотрите на https://www.mql5.com/en/docs/integration/python_metatrader5 и https://datatofish.com/upgrade-pip/.
Обратите внимание, что вы должны использовать CMD от имени администратора. Вы должны найти приложение CMD и щелкнуть правой кнопкой мыши >Запустить от имени администратора.
Pip является обязательным условием перед продолжением всех шагов. Вы же не хотите собирать whl с устаревшим Pip.
Все эти шаги необходимо выполнять каждый раз, когда вы обновляете Python.
Я бы рекомендовал использовать PyCharm в качестве IDE для Python вне MT5.
Ничего не установится, если вы не запустите CMD от имени администратора.
1. Установите последние пакеты разработчика в MT5 MetaEditor в разделе опций.
2. Убедитесь, что каталог Python - это фактический путь к 3.8, а не путь к MT5 python. (возможно, вам придется скопировать и вставить путь).
3. Убедитесь, что при установке 3.8 были установлены все флажки?
4. Вам потребуется несколько гигабайт памяти на жестком диске для всех инструментов разработчика.
Приведенный ниже тестовый скрипт модифицирован из ссылки python_metatrader5. Он будет запущен, если вы выполните все шаги по установке разработчика
# Copyright 2019, MetaQuotes Software Corp.
# https://www.mql5.com
from datetime import datetime
import matplotlib.pyplot as plt
import pandas as pd
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
import MetaTrader5 as mt5
# ваш код здесь
# подключаемся к MetaTrader 5
if not mt5.initialize():
print("initialize() failed")
mt5.shutdown()
# запросить статус и параметры соединения
print(mt5.terminal_info())
# получить данные о версии MetaTrader 5
print(mt5.version())
# выключить соединение с MetaTrader 5
mt5.shutdown()
Можно ли отправить запрос на установку стоп-лосса по существующему ордеру?
У меня есть код, который работает в моей python ea, которая может устанавливать и открывать сделки. однако мне нужно знать синтаксис для mt5.Buy(), mt5.Sell(), и какие значения они принимают. например, как я могу установить стоп-лосс и значение тейк-профита при отправке покупки? или продажи?
Buy(), Sell(), Close() - это просто обертки для oreder_send() в модуле __init__.py:
Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий
MetaTrader 5 Python User Group - как использовать Python в Metatrader
MetaQuotes, 2020.03.31 19:38
Выпущена версия 5.0.30Неверно. К одному терминалу (скорее к брокеру/счету) может быть много подключений. Или я неправильно понял?
MT5 можно использовать в портативном режиме
https://www.metatrader5.com/en/terminal/help/start_advanced/start
2 экземпляра MT5 - 2 брокера/счета, но 1 библиотека MetaTrader5, 1 подключение за раз ...
Сообщение об ошибке - версия пакета 5.0.30
1. Функции[history_deals_get, history_deals_total, history_orders_get, history_orders_total, ... все copy_funcs] имеют фундаментальный недостаток, и это параметр "from". From является зарезервированным ключевым словом в python и не может быть использован в качестве имени параметра. Это препятствует созданию питоновских функций-адаптеров из-за конфликта имен. Следующие функции даже не будут компилироваться:
Имена параметров должны быть изменены на те, которые не конфликтуют с python и являются более описательными. Пример:
2. Константы mt5.RES_* заданы как кортежи вместо <int>. Кто-то забыл убрать запятые после выражений в модуле MetaTrader5.__init__.py. Вот как исправить ошибку:
Тест
3. last_error() должна возвращать кортеж, а не список, чтобы оставаться совместимой с API.
Тест
4. В документации к version() нужно изменить тип для "build-number" с "string" на "int".
5. history_deals_get (и, возможно, другие функции) не согласуются со своим типом возврата. Некоторые функции возвращают None, когда нет данных для возврата, а другие возвращают пустой кортеж. Все эти функции должны быть последовательными. Все они должны возвращать один и тот же объект в случае отсутствия данных - вместо того, чтобы одни возвращали None , а другие - пустой кортеж.
Тест
Пожалуйста, посмотрите все приложенные pytest unittests.
Выпущена версия 5.0.31
Спасибо за быстрый ответ! Все тесты пройдены, за исключением того, который проверяет различные типы возврата. Есть идеи по поводу изменения ключевого слова "from" в C-функциях?