MetaTrader 5 Python User Group - Comment utiliser Python dans Metatrader - page 69

 
Roman:

@Almaz
Lors de la première exécution des fonctions copy_xxx_xxx, lorsque le terminal n'a pas démarré depuis un certain temps, les fonctions
renvoient immédiatement le résultat disponible avec l'historique manquant, sans attendre la synchronisation du swap d'historique.
Cela signifie que le premier appel de fonction renvoie le résultat avec l'historique manquant.
Seuls les appels ultérieurs renverront le résultat correct, lorsque l'historique est échangé.
Est-il possible de résoudre ce problème ? Et les fonctions copy_xxx_xxx attendent que l'historique soit échangé lors du premier appel.

copy_ticks ou copy_rates ? Quel est le build du terminal ?

 
Roman:

@Almaz
Lors de la première exécution des fonctions copy_xxx_xxx, lorsque le terminal n'a pas démarré depuis un certain temps, les fonctions
renvoient immédiatement le résultat disponible avec l'historique manquant, sans attendre la synchronisation du swap d'historique.
Cela signifie que le premier appel de fonction renvoie le résultat avec l'historique manquant.
Seuls les appels ultérieurs renverront le résultat correct, lorsque l'historique est échangé.
Est-il possible de résoudre ce problème ? Et les fonctions copy_xxx_xxx attendront que l'historique soit échangé lors du premier appel.

Lire Organiser l'accès aux données, la bibliothèque Python n'a rien à voir avec cela. C'est un comportement standard, vous devez gérer de telles situations et redemander l'historique après que le terminal l'ait échangé.

Il s'agit d'une opération ponctuelle, qui n'est donc pas critique. Vous pouvez toujours maintenir à jour l'historique existant si vous travaillez en permanence avec le terminal à partir d'un script.

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Прежде чем ценовые данные будут доступны в терминале MetaTrader 5, их необходимо получить и обработать. Для получения данных требуется подключение к торговому серверу MetaTrader 5. Данные поступают с сервера по запросу терминала в виде экономно упакованных блоков минутных баров. Механизм обращения к серверу за данными не зависит от того, каким...
 
Almaz:

copy_ticks ou copy_rates ? Quelle version du terminal ?

J'ai utilisé copy_rates, mais je pense que copy_ticks sera le même, mais je n'ai pas vérifié.
Construire 2470

 
Rashid Umarov:

Lisez Organiser l'accès aux données, cela n'a rien à voir avec la bibliothèque Python. Il s'agit d'un comportement standard, vous devez gérer de telles situations et redemander l'historique après le rebond du terminal.

Il s'agit d'une opération ponctuelle, qui n'est donc pas critique. Vous pouvez toujours maintenir à jour l'historique existant si vous travaillez en permanence avec le terminal à partir du script.

J'ai lu cette section, elle est liée à Mql5.
Ou alors vous sous-entendez que vous devez organiserCheckLoadHistory de la même manière ?
Pourquoi ne pas introduire cette fonction en standard ? Pour la bibliothèque Mql et Py.

Et en général, il est étrange que vous autorisiez la fonction Copy à recevoir des données incorrectes, sans attendre que l'historique soit échangé et en donnant le résultat.
 
Roman:

J'ai lu cette section, elle se réfère à Mql5.
Ou bien sous-entendez-vous que vous devez organiserCheckLoadHistory de la même manière ?
Pourquoi ne pas introduire cette fonction en standard ? Pour la bibliothèque Mql et Py.

Et en général, il est étrange que vous autorisiez des données incorrectes dans la fonction Copie, sans attendre l'échange d'historique et donner le résultat.

Si vous travaillez dans MQL5, les questions de la sectionOrganiser l'accès aux données ne sont pas si spéciales. Nous avons étudié cette section de près et de loin. Et nous l'utilisons.

Pourquoi pensez-vous que cela devrait être différent pour Python ?

Après tout, le noyau principal est MQL5 et vous devez le connaître. Et seulement après cela, vous devez appliquer le Python.

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Прежде чем ценовые данные будут доступны в терминале MetaTrader 5, их необходимо получить и обработать. Для получения данных требуется подключение к торговому серверу MetaTrader 5. Данные поступают с сервера по запросу терминала в виде экономно упакованных блоков минутных баров. Механизм обращения к серверу за данными не зависит от того, каким...
 
Roman:

J'ai lu cette section, elle se réfère à Mql5.
Ou bien sous-entendez-vous que vous devez organiserCheckLoadHistory de la même manière ?
Pourquoi ne pas introduire cette fonction en standard ? Pour la bibliothèque Mql et Py.

Et en général, il est étrange que vous autorisiez des données incorrectes dans la fonction Copy et que vous n'attendiez pas que l'historique soit chargé pour renvoyer le résultat.

La bibliothèque Python permet de demander des données au terminal MetaTrader 5 sur une base générale, quelle que soit la manière dont elles ont été demandées - manuellement, via MQL5 ou en utilisant le script de Python.

Le développeur de programmes MQL5 et de scripts Python est responsable de la logique et de l'organisation du travail avec les données.

 

Après-midi

Existe-t-il une option permettant de se connecter au terminal via PowerShell ? Si quelqu'un sait comment, je lui en serais reconnaissant.

Je n'ai pas d'expérience avec python, donc j'aimerais utiliser ce que je connais le mieux ;))

 

Bonne journée !

J'ai connecté les bibliothèques, python communique avec Mt5, j'obtiens les informations sur le compte mais les cotations ne se chargent en aucune façon. Pouvez-vous m'aider ?

Python version 3.7.6


from datetime import datetime
import MetaTrader5 as mt5

# выведем информацию о версии MetaTrader 5
print(mt5.version())

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

# подключимся к торговому счету без указания пароля и сервера
account=17245465
authorized=mt5.login(account)  # пароль будет взят из базы терминала, если указано помнить данные для подключения
if authorized:
    # выведем данные о торговом счете как есть
    print(mt5.account_info())
    # выведем данные о торговом счете в виде списка
    print("Show account_info()._asdict():")
    account_info_dict = mt5.account_info()._asdict()
    for prop in account_info_dict:
        print("  {}={}".format(prop, account_info_dict[prop]))
else:
    print("failed to connect at account #{}, error code: {}".format(account, mt5.last_error()))

# запросим статус и параметры подключения
print(mt5.terminal_info())

# получим информацию о версии MetaTrader 5
print(mt5.version())

x= mt5.symbols_total()
print('количество всех финансовых инструментов в терминале MetaTrader 5=', x)

# получим все символы
symbols=mt5.symbols_get()
print('symbols=', symbols)

# получим бары с разных инструментов разными способами
eurusd_rates = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M30, datetime(2020, 1, 28, 13), 1000)

# DATA
print('eurusd_rates', eurusd_rates )

# завершим подключение к MetaTrader 5
mt5.shutdown()


Résultat :

(0, 0, '')
AccountInfo(login=17245465, trade_mode=2, leverage=500, limit_orders=500, margin_so_mode=0, trade_allowed=False, trade_expert=True, margin_mode=2, currency_digits=2, fifo_close=False, balance=0.0, credit=0.0, profit=0.0, equity=0.0, margin=0.0, margin_free=0.0, margin_level=0.0, margin_so_call=50.0, margin_so_so=20.0, margin_initial=0.0, margin_maintenance=0.0, assets=0.0, liabilities=0.0, commission_blocked=0.0, name='xxxxxxxxxxxxx', server='Alpari-MT5', currency='USD', ...)
Show account_info()._asdict():
  login=17045461
  trade_mode=2
  leverage=500
  limit_orders=500
  margin_so_mode=0
  trade_allowed=False
  trade_expert=True
  margin_mode=2
  currency_digits=2
  fifo_close=False
  balance=0.0
  credit=0.0
  profit=0.0
  equity=0.0
  margin=0.0
  margin_free=0.0
  margin_level=0.0
  margin_so_call=50.0
  margin_so_so=20.0
  margin_initial=0.0
  margin_maintenance=0.0
  assets=0.0
  liabilities=0.0
  commission_blocked=0.0
  name=ххххххх
  server=Alpari-MT5
  currency=USD
  company=Alpari International
TerminalInfo(community_account=True, community_connection=True, connected=True, dlls_allowed=False, trade_allowed=False, tradeapi_disabled=False, email_enabled=False, ftp_enabled=False, notifications_enabled=False, mqid=False, build=2489, maxbars=100000000, codepage=1251, ping_last=95766, community_balance=0.0, retransmission=5.305821665438467, company='Alpari International', name='Alpari MT5', language='Russian', path='C:\\Program Files\\Alpari MT5', ...)
(500, 2489, '12 Jun 2020')

количество всех финансовых инструментов в терминале MetaTrader 5= 43
symbols= (SymbolInfo(custom=False, chart_mode=0, select=True, ....
eurusd_rates None

Process finished with exit code 0
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Признак отрисовки ценового графика. Если установлено значение false, то отключается отрисовка любых атрибутов ценового графика и устраняются все отступы по краям графика: шкалы времени и цены, строка быстрой навигации, метки событий Календаря, значки сделок, тултипы индикаторов и баров, подокна индикаторов, гистограммы объёмов и т.д. Значение...
 
rale70:

Bonne journée !

J'ai connecté les bibliothèques, python communique avec Mt5, j'obtiens les informations sur le compte mais les cotations ne se chargent en aucune façon. Pouvez-vous m'aider ?

Python version 3.7.6



Résultat :

Veuillez insérer le code correctement (utilisez le bouton Code).

 
Vladimir Karputov:

Veuillez insérer le code correctement (utilisez le bouton).

Merci pour la conception, je vais en tenir compte.

Raison: