MetaTrader 5 Python User Group - как использовать Python в Метатрейдере - страница 37

 
Renat Fatkhullin:

С версии 5.0.15 питоновская библиотека работает в новом, не совместимом со старым форматом и требует последней беты терминала.

Скоро опубликуем обновленную документацию и примеры

Можно ли временно скачать старую версию библиотеки?

 
Dmitri Custurov:

Можно ли временно скачать старую версию библиотеки?

https://pypi.org/project/MetaTrader5/5.0.11/#files

MetaTrader5
MetaTrader5
  • 2020.01.24
  • pypi.org
Download the file for your platform. If you're not sure which to choose, learn more about installing packages. Files for MetaTrader5, version 5.0.11 Filename, size File type Python version Upload date Hashes MetaTrader5-5.0.11-cp36-cp36m-win32.whl (31.7 kB) MetaTrader5-5.0.11-cp36-cp36m-win_amd64.whl (43.3 kB...
 

Не могу удержатся и не высказать мнение по поводу интеграций. Я за двумя руками. Питон, нейросети, ИИ, расширения компилятора и прочее и прочее...

Но есть одно НО.

Какая бы ни была крутая среда разработки, она ведь должна быть массовой? А как она может быть массовой, если ее инструментарий - это обычные примитивы? НЕТ - не обычные примитивы, А ГЕНИАЛЬНЫЕ ПРИМИТИВЫ. СВЕРХСЛОЖНЫЕ ПРИМИТИВЫ.

Возьмем класс CCanvas - это сборка графических примитивов. Много ли можно из них собрать? Много. А сколько нужно мозгов и труда для этого? - МОРЕ. Море мозгов и труда, чтобы создать ВЕЩЬ. Многие ли на это способны? - Единицы.

Опять главный вопрос: как инструментарий среды разработки может стать массово востребован, если ее он АПРИОРИ предполагает наличие неординарных конструкторских способностей у человека? О массовости, в таком случае, не может быть речи.

Перефразирую кратко:

Если человек знаком с Питоном, С++, MQL5, Алготрейдингом и обладает неординарными конструкторскими способностями, то какая для него разница, в какой профессиональной среде создавать свою ВЕЩЬ? Он использует МИНИМУМ возможностей и произведет МАКСИМУМ результата. Остальные будут пытаться использовать все подряд и не создадут ничего, из за порога сложности инструментария.

Так на кого и на что нужно ориентироваться?

 

Версия ниже, вплоть до минимально доступной 5.0.10

444

Видимо, прийдется ждать обновлений.

 

Greetings to all!

Why do I get this error even though I have followed examples correct?

Привет всем!

Почему я получаю эту ошибку, несмотря на то, что правильно следовал примерам?


 
Renat Fatkhullin:
В визуал студии питон включен?

Из-за зоопарка питонов, наставленных косвенно или автоматически разными системами запросто можно получить установку библиотек в другую копию питона, а потом попытки запуска других копий.

Разберитесь с питонами, пожалуйста. Тот, кто перешел на питон, тот должен быть готов всю оставшуюся жизнь сражаться с библиотеками, зависимостями и несовместимостями.

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

Нет зоопарка Питона. Есть понятие Окружение (environment). На компе может находиться несколько Окружений. Пользователь сам выбирает какое Окружение использовать.

Окружение Питона необходимо инициализировать перед выполнением скрипта.

Я в своей библиотеке это учел. Здесь код функции инициализации Окружения.

MetaTrader 5 (MQL5) + Python 3 DLL для Forex, CFD и Futures
  • roffild.com
Использование MetaTrader с Python 3 на финансовых фондовых биржах, Forex, CFD и Futures. Из MetaTrader можно получать котировки в Python, но нет полноценной связи между ними. Пост одного из разработчиков. Главная идея и отличие этой обертки от остальных: обмен данными между MQL и Python через заранее созданные функции. Это самый быстрый и...
 

Может пора отказаться от MetaEditor? Зачем пихать разные технологии в свою IDE, если можно взять полноценную готовую?

Сейчас все создают модуль для IDE:

microsoft visual studio code

jetbrains intellij idea

 
Roffild:

Нет зоопарка Питона. Есть понятие Окружение (environment). На компе может находиться несколько Окружений. Пользователь сам выбирает какое Окружение использовать.

Окружение Питона необходимо инициализировать перед выполнением скрипта.

Я в своей библиотеке это учел. Здесь код функции инициализации Окружения.

У нас легко поддерживаются окружения. Посмотрите настройки компиляторов в редакторе, пожалуйста.

Про зоопарк я говорил в смысле, что терминал может выбрать одно окружение(например дефолтный путь), а библиотеки пользователем вручную будут ставиться в другое окружение.


Завтра мы выпустим связанно новую бету терминала и новую штатную питон библиотеку. Все старые методы и примеры неработоспособны, так как мы с нуля переписали апи и библиотеку.

Новый набор апи широкий и позволяет полностью управлять торговлей и имеет доступ к открытым позициям и истории сделок.

Теперь можно писать полноценных роботов для Метатрейдера прямо на Питоне.

 

Новая версия MetaTrader 5 for Python 5.0.18 и бета версия MetaTrader 5 build 2319:

  • бета МТ5 скачивается через Справка -> Проверить бета версию
  • питон библиотека:
    pip install --upgrade metatrader5
    

Так как все апи изменилось, то старые примеры больше не работают.

Вот новый набор функций:

initialize(path=None)                              Establish connection with the MetaTrader 5 Terminal
wait()                                             Wait for the MetaTrader 5 Terminal to connect to a broker's server
shutdown()                                         Disconnect from the MetaTrader 5 Terminal

version()                                          Get the MetaTrader 5 Terminal version
terminal_info()                                    Get the parameters of the MetaTrader 5 terminal
account_info()                                     Returns information of current account

copy_ticks_from(symbol, from, count, flags)                Get ticks starting from the specific date
copy_ticks_range(symbol, from, to, flags)                  Get ticks from the specified period
copy_rates_from(symbol, timeframe, from, count)            Get bars starting from the specific date
copy_rates_from_pos(symbol, timeframe, start_pos, count)   Get bars starting from the specified position
copy_rates_range(symbol, timeframe, date_from, date_to)    Get bars from the specified period

positions_total()                                          Returns the number of open positions
positions_get([symbol=\"SYMBOL\"],[ticket=TICKET])         Returns all open positions, can be filtered by symbol or ticket

orders_total()                                             Returns the number of orders
orders_get([symbol=\"SYMBOL\"],[ticket=TICKET])            Returns all orders, can be filtered by symbol or ticket

history_orders_total(from, to)                             Returns the number of orders in selected range from the history
history_orders_get(from, to)                               Returns orders in selected range from the history or filtered by position id, ticket

history_deals_total(from, to)                              Returns the number of deals in selected range from the history
history_deals_get(from, to)                                Returns deals in selected range from the history or filtered by position id, ticket

order_check(request)                                                Checks if there are enough funds to execute the required trade operation
order_send(request)                                                 Sends trade requests to a server
order_calc_margin(action, symbol, volume, price)                    Calculates the margin required for the specified order
order_calc_profit(action, symbol, volume, price_open, price_close)  Calculates the profit for the current account, in the current market conditions, based on the parameters passed

symbol_info(symbol)                                        Returns full information for a specified symbol
symbol_info_tick(symbol)                                   Returns current prices of a specified symbol
symbol_select(symbol,[enable])                             Selects a symbol in the Market Watch window or removes a symbol from the window

Пример:

import MetaTrader5 as mt5
import time

mt5.initialize()
mt5.wait()

dev = 0.00010;
symbol = "EURUSD"
buy_price = 0

mt5.symbol_select(symbol)

time.sleep(1)
p = mt5.symbol_info_tick(symbol)
prev_price = p.ask

while True:
    p = mt5.symbol_info_tick(symbol)
    print(p.bid,'/',p.ask)
    
    if p.ask > prev_price and buy_price == 0:
            print("Buy ", p.ask)
            r = mt5.Buy(symbol, 0.01)
            if r.retcode == mt5.TRADE_RETCODE_DONE:
                buy_price = p.ask;
    elif buy_price > 0 and p.ask + dev < buy_price:
        print("Buy(close) ", p.bid)
        mt5.Close(symbol)
        buy_price = 0

    prev_price = p.ask
    time.sleep(1)

mt5.shutdown()
 
Renat Fatkhullin:

Новая версия MetaTrader 5 for Python 5.0.18 и бета версия MetaTrader 5 build 2319:

  • бета МТ5 скачивается через Справка -> Проверить бета версию
  • питон библиотека:

Так как все апи изменилось, то старые примеры больше не работают.

Все динамически меняется. 

Не очень хочется попадать в этот замес.

Наверное, стОит дождаться реализации WinML с ONNX. А до этого вникать в теорию ML. Благо, сейчас много доступной литературы и различных курсов.

Причина обращения: