import MetaTrader5 as mt5
# выведем данные о пакете MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
# установим подключение к терминалу MetaTrader 5if not mt5.initialize():
print("initialize() failed")
mt5.shutdown()
# подключимся к торговому счету с указанием пароля и сервера
authorized=mt5.login(25115284, password="ваш_пароль",server="MetaQuotes-Demo")
if(authorized):
# выведем данные о торговом счете
#print(mt5.account_info())
account_info=mt5.account_info()._asdict()
print(account_info)
print("Вывод каждого свойства отдельно:")
for property in account_info:
print(" ",property,"=",account_info[property])else:
print("failed to connect to trade account 25115284 with password=gqz0lbdm")
mt5.shutdown()
history_deals_get походу не попадает в structure sequence ... хех.
deal = mt5.history_deals_get(position=order.position_id)._asdict()
AttributeError: 'tuple' object has no attribute '_asdict'
просто сильно не хватает конструкции, которая отдаст имена атрибутов, в правильно очередности. Если для history_deals_get _asdict() не реализуем или противоречит концепции - то хоты бы аналог _fields из collections.namedtuple (python), тогда можно выдернуть правильную очередность атрибутов, но не руками в цикле, а по-человечески. Пока получается, что-то типа:
mt5.symbol_info()._asdict() -big thnx, то что надо.
history_deals_get походу не попадает в structure sequence ... хех.
просто сильно не хватает конструкции, которая отдаст имена атрибутов, в правильно очередности. Если для history_deals_get _asdict() не реализуем или противоречит концепции - то хоты бы аналог _fields из collections.namedtuple (python), тогда можно выдернуть правильную очередность атрибутов, но не руками в цикле, а по-человечески. Пока получается, что-то типа:
а на выходе:
ну или лапшакод с циклами.
history_deals_get всегда возвращает обычный Python tuple, внутри которого коллекция именованых TradeDeal. Для того чтобы работало надо обратится по какому-то индексу:
r = mt5.history_deals_get(position=544536443)
print(r[0]._asdict())
mt5.symbol_info()._asdict() -big thnx, то что надо.
history_deals_get походу не попадает в structure sequence ... хех.
Попробуйте так:
import MetaTrader5 as mt5
# выведем данные о пакете MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
# установим подключение к терминалу MetaTrader 5if not mt5.initialize():
print("initialize() failed")
quit()
# проверим наличие открытых позиций
positions=mt5.positions_total()
if(positions>0):
print("Total positions=",positions)
# выведем все открытые позиции
positions=mt5.positions_get()
count=0for position in positions:
count+=1
print(count,":",position)
position_info=position._asdict()
for property in position_info:
print(" ",property,"=",position_info[property])if count>=5:
breakelse:
print("Positions not found")
# завершим подключение к терминалу MetaTrader 5
mt5.shutdown()
history_deals_get всегда возвращает обычный Python tuple, внутри которого коллекция именованых TradeDeal. Для того чтобы работало надо обратится по какому-то индексу:
Ага, спасибо большое, это уже по аналогии нашел. Сенкс.
А вдруг, в будущих релизах появится возможность не только выбирать с history_deals_get (и аналогов) именованные tuple, но и скажем list[_asdict()] будет просто
Рашид, а по либе MetaTrader5 есть где-то на сайте, что-то типа Product Update Announcement?
Чтобы можно было отслеживать, когда и какие изменения вышли.
А то планировать рефакторинг чуть сложно.
Я смотрю Pypi. Разработчики ждут от нас замечаний для продолжения/улучшения. Но пока не видно активности пользователей в этой области.
В отдельной ветке думаю нужно обсудить общие вопросы инфраструктуры для комплексов торговых систем(терминал(МТ4/МТ5)<-> ТС(на разных ЯП) <_> базы данных разные. Различные конфигурации , проблемы, сложности, преимущества. как подготовлюсь выложу.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Обновитесь до 5.0.27
Заупстите скрипт
Результаты
MetaTrader5 package author: MetaQuotes Software Corp. MetaTrader5 package version: 5.0.27 {'login': 25115284, 'trade_mode': 0, 'leverage': 100, 'limit_orders': 200, 'margin_so_mode': 0, 'trade_allowed': True, 'trade_expert': True, 'margin_mode': 2, 'currency_digits': 2, 'fifo_close': False, 'balance': 97639.46, 'credit': 0.0, 'profit': -178.77, 'equity': 97460.69, 'margin': 704.8, 'margin_free': 96755.89, 'margin_level': 13828.134222474464, 'margin_so_call': 50.0, 'margin_so_so': 30.0, 'margin_initial': 0.0, 'margin_maintenance': 0.0, 'assets': 0.0, 'liabilities': 0.0, 'commission_blocked': 0.0, 'name': 'MetaQuotes Dev Demo', 'server': 'MetaQuotes-Demo', 'currency': 'USD', 'company': 'MetaQuotes Software Corp.'} Вывод каждого свойства отдельно: login = 25115284 trade_mode = 0 leverage = 100 limit_orders = 200 margin_so_mode = 0 trade_allowed = True trade_expert = True margin_mode = 2 currency_digits = 2 fifo_close = False balance = 97639.46 credit = 0.0 profit = -178.77 equity = 97460.69 margin = 704.8 margin_free = 96755.89 margin_level = 13828.134222474464 margin_so_call = 50.0 margin_so_so = 30.0 margin_initial = 0.0 margin_maintenance = 0.0 assets = 0.0 liabilities = 0.0 commission_blocked = 0.0 name = MetaQuotes Dev Demo server = MetaQuotes-Demo currency = USD company = MetaQuotes Software Corp.По поводу таймера можно поподробней?
Сам не изучал, только поиск
В 5.0.27 уже есть, у всех structure sequence (аналог named tuple для C API) добавлен метод _asdict()
mt5.symbol_info()._asdict() -big thnx, то что надо.
history_deals_get походу не попадает в structure sequence ... хех.
просто сильно не хватает конструкции, которая отдаст имена атрибутов, в правильно очередности. Если для history_deals_get _asdict() не реализуем или противоречит концепции - то хоты бы аналог _fields из collections.namedtuple (python), тогда можно выдернуть правильную очередность атрибутов, но не руками в цикле, а по-человечески. Пока получается, что-то типа:
а на выходе:
ну или лапшакод с циклами.
Обновитесь до 5.0.27
Заупстите скрипт
Результаты
Сенкс!
Действительно удобнее в этой части стало.
mt5.symbol_info()._asdict() -big thnx, то что надо.
history_deals_get походу не попадает в structure sequence ... хех.
просто сильно не хватает конструкции, которая отдаст имена атрибутов, в правильно очередности. Если для history_deals_get _asdict() не реализуем или противоречит концепции - то хоты бы аналог _fields из collections.namedtuple (python), тогда можно выдернуть правильную очередность атрибутов, но не руками в цикле, а по-человечески. Пока получается, что-то типа:
а на выходе:
ну или лапшакод с циклами.
history_deals_get всегда возвращает обычный Python tuple, внутри которого коллекция именованых TradeDeal. Для того чтобы работало надо обратится по какому-то индексу:
mt5.symbol_info()._asdict() -big thnx, то что надо.
history_deals_get походу не попадает в structure sequence ... хех.
Попробуйте так:
Результат
history_deals_get всегда возвращает обычный Python tuple, внутри которого коллекция именованых TradeDeal. Для того чтобы работало надо обратится по какому-то индексу:
Ага, спасибо большое, это уже по аналогии нашел. Сенкс.
А вдруг, в будущих релизах появится возможность не только выбирать с history_deals_get (и аналогов) именованные tuple, но и скажем list[_asdict()] будет просто
фантастично. ;) Спасибо.
Попробуйте так:
Результат
Спасибо! Все получается.
Да и спасибо, что реагируете на :) пожелания в доработке либы.
Обновитесь до 5.0.27
Заупстите скрипт
Результаты
День добрый.
Рашид, а по либе MetaTrader5 есть где-то на сайте, что-то типа Product Update Announcement?
Чтобы можно было отслеживать, когда и какие изменения вышли.
А то планировать рефакторинг чуть сложно.
День добрый.
Рашид, а по либе MetaTrader5 есть где-то на сайте, что-то типа Product Update Announcement?
Чтобы можно было отслеживать, когда и какие изменения вышли.
А то планировать рефакторинг чуть сложно.
Я смотрю Pypi. Разработчики ждут от нас замечаний для продолжения/улучшения. Но пока не видно активности пользователей в этой области.
В отдельной ветке думаю нужно обсудить общие вопросы инфраструктуры для комплексов торговых систем(терминал(МТ4/МТ5)<-> ТС(на разных ЯП) <_> базы данных разные. Различные конфигурации , проблемы, сложности, преимущества. как подготовлюсь выложу.
Удачи