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

 
Renat Fatkhullin:

Depuis la version 5.0.15, la bibliothèque python fonctionne dans un nouveau format qui n'est pas compatible avec l'ancien format et nécessite la dernière version bêta du terminal.

Nous publierons bientôt une documentation et des exemples mis à jour

Est-il possible de télécharger temporairement l'ancienne version de la bibliothèque ?

 
Dmitri Custurov:

Est-il possible de télécharger temporairement une ancienne version de la bibliothèque ?

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...
 

Je ne peux pas résister à l'envie d'exprimer une opinion sur les intégrations. J'y suis favorable des deux mains. Python, réseaux neuronaux, IA, extensions de compilateurs et ainsi de suite...

Mais il y a un MAIS.

Aussi cool que soit l'environnement de développement, il doit être massif, non ? Et comment peut-il être massif si sa boîte à outils est constituée de primitives habituelles ? NON - pas des primitives habituelles mais des PRIMITIVES GÉNIQUES. DES PRIMITIVES SUPERCOMPLEXES.

Prenons la classe CCanvas - c'est un assemblage de primitives graphiques. Peut-on en assembler beaucoup ? Beaucoup. Mais combien de cerveaux et de travail sont nécessaires pour cela ? - BEAUCOUP. Une mer de cerveaux et de travail pour créer la CHOSE. Combien en sont capables ? - Juste quelques-uns.

Une fois encore, la question principale est la suivante : comment les outils de l'environnement de développement peuvent-ils devenir populaires, s'ils supposent la présence de capacités de conception peu communes chez un homme ? La disponibilité de masse, dans un tel cas, est hors de question.

Je vais paraphraser brièvement :

Si une personne est familière avec Python, C++, MQL5, Algotrading et possède des capacités de conception extraordinaires, quelle différence cela fait-il pour elle de savoir dans quel environnement professionnel créer son CHOSE ? Il utilisera le MINIMUM de fonctionnalités et produira le MAXIMUM de résultats. D'autres essaieront de tout utiliser et ne créeront rien, en raison du seuil de complexité de la boîte à outils.

Sur qui et sur quoi devez-vous vous concentrer ?

 

Version inférieure jusqu'à la plus basse disponible 5.0.10

444

Apparemment, nous devrons attendre des mises à jour.

 

Salutations à tous !

Pourquoi est-ce que j'obtiens cette erreur alors que j'ai suivi les exemples correctement ?

Salutations à tous !

Pourquoi est-ce que j'obtiens cette erreur alors que j'ai suivi les exemples correctement ?


 
Renat Fatkhullin:
Python est-il activé dans Visual Studio ?

En raison du zoo de pythons déployés indirectement ou automatiquement par différents systèmes, il est facile d'obtenir des bibliothèques installées dans une autre copie de python et d'essayer ensuite d'exécuter d'autres copies.

Sortez les pythons, s'il vous plaît. Ceux qui passent à Python doivent être prêts à passer le reste de leur vie à se battre avec des bibliothèques, des dépendances et des incompatibilités.

C'est le destin d'un pythoniste - construire un environnement de bibliothèques et prier pour que la mise à jour d'une bibliothèque ne perturbe pas un autre nombre inconnu de bibliothèques.

Il n'y a pas de zoo Python. Il existe un environnement. Il peut y avoir plus d'un environnement. L'utilisateur choisit l'environnement à utiliser.

L'environnement Python doit être initialisé avant de lancer un script.

Je l'ai envisagé dans ma bibliothèque . Voici le code de la fonction d'initialisation de l'environnement.

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

Il est peut-être temps d'abandonner MetaEditor ? Pourquoi intégrer différentes technologies dans votre IDE alors que vous pouvez en obtenir un prêt à l'emploi complet ?

De nos jours, tout le monde crée un module pour l'IDE :

code de microsoft visual studio

idée jetbrains intellij

 
Roffild:

Il n'y a pas de zoo Python. Il y a le concept d'environnement. Il peut y avoir plusieurs environnements sur un ordinateur. C'est à l'utilisateur de choisir l'environnement à utiliser.

L'environnement Python doit être initialisé avant de lancer un script.

Je l'ai envisagé dans ma bibliothèque . Voici le code de la fonction d'initialisation de l'environnement.

Nous pouvons facilement soutenir les environnements. Regardez les paramètres du compilateur dans l'éditeur, s'il vous plaît.

Je voulais parler de zoo dans le sens où le terminal peut sélectionner un environnement (par exemple le chemin par défaut), et les bibliothèques seront placées manuellement par l'utilisateur dans un autre environnement.


Demain, nous publierons une nouvelle version bêta du terminal et une nouvelle bibliothèque python. Toutes les anciennes méthodes et tous les anciens exemples ne fonctionnent plus car nous avons réécrit l'API et la bibliothèque à partir de zéro.

Le nouvel ensemble d'api est vaste et vous permet de gérer entièrement le trading et d'avoir accès aux positions ouvertes et à l'historique.

Vous pouvez désormais écrire des robots Metatrader à part entière directement en Python.

 

Nouvelle version de MetaTrader 5 pour Python 5.0.18 et MetaTrader 5 build 2319 beta :

  • Téléchargement de la version bêta de MT5 via Aide -> Vérifier la version bêta
  • bibliothèque python :
    pip install --upgrade metatrader5
    

Comme tous les api ont changé, les anciens exemples ne fonctionnent plus.

Voici le nouvel ensemble de fonctionnalités :

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

Exemple :

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:

Nouvelle version de MetaTrader 5 pour Python 5.0.18 et MetaTrader 5 build 2319 beta :

  • Téléchargement de la version bêta de MT5 via Aide -> Vérifier la version bêta
  • bibliothèque python :

Comme toutes les API ont changé, les anciens exemples ne fonctionnent plus.

Tout change de manière dynamique.

Je n'ai pas vraiment envie de me retrouver dans ce pétrin.

Cela vaut probablement la peine d'attendre la mise en œuvre deWinML avec ONNX. Et avant cela, pour appréhender la théorie du ML. Heureusement, il existe aujourd'hui une abondante littérature et divers cours.