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

 
Renat Fatkhullin:

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

  • MT5 beta download via Aide -> Vérifier la version beta
  • bibliothèque python :

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

Voici le nouvel ensemble de fonctionnalités :

Exemple :

Est-il prévu d'ajouter des fonctions pour exécuter des tests/optimisations et obtenir leurs résultats ?

 

Les programmes Python seront exécutés dans le terminal uniquement en tant que scripts et ne sont pas impliqués de quelque manière que ce soit et ne participeront pas au testeur de stratégie de trading.

Il s'agit d'une solution pour ceux qui font des recherches approfondies en Python et qui veulent.. :

  1. accès aux informations sur le marché à partir de MT5
  2. accès à l'historique des transactions et aux positions ouvertes
  3. commerce

Testeur de stratégie pour les programmes MQL5 uniquement.

Plus tard, nous élargirons la bibliothèque et donnerons la possibilité d'accéder à des indicateurs intégrés et personnalisés depuis le terminal.

 

Bref, la situation actuelle est la suivante : j'ai installé Windows 7 sur 3 machines.

En résumé :333

Je l'ai installé sur un serveur Windows 2012 - il a démarré à mi-chemin. Et même sur python 3.8.1

 
Dmitri Custurov:

Bref, la situation actuelle est la suivante : j'ai installé Windows 7 sur 3 machines.

En résumé :

Je l'ai installé sur un serveur Windows 2012 et j'ai commencé à la moitié du chemin. Et même sur python 3.8.1.

Dix n'est pas à portée de main, mais je pense qu'il y a là et commence.

 
Juste au cas où, j'ai installé Visual Studio et les librairies qui vont avec sur la 7. Elle ne démarre pas. On est passé aux prises de fumée. Un truc très cool. Je l'ai déjà commencé sur Java.
 

Le 10, c'est le retour à la normale.

from MetaTrader5 import *
#import MetaTrader5 as mt5
import time

initialize()
wait()

# mt5.initialize()
# mt5.wait()

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

symbol_select(symbol)

Acc = account_info()
Term = terminal_info()
vr = version()

Acc.server
Acc.login
Term.build

'MetaQuotes-Demo'
18192632
2319

1. le problème précédent demeure. Lors de l'initialisation, le terminal démarre avec un courtier et un compte arbitraires. N'a-t-on pas promis de le réparer ?

2) Les ordres sont exécutés. Je ne l'ai pas vérifié davantage.

Je ne comprends pas pourquoi le module "metatrader5 5.0.18 pypi_0 pypi" est importé uniquement en tant que "MetaTrader5".

Nous allons essayer.

Bonne chance

 
Renat Fatkhullin:

Les programmes Python seront exécutés dans le terminal uniquement en tant que scripts et ne sont pas impliqués de quelque manière que ce soit et ne participeront pas au testeur de stratégie de trading.

Il s'agit d'une solution pour ceux qui font des recherches approfondies en Python et qui veulent.. :

  1. accès aux informations sur le marché à partir de MT5
  2. accès à l'historique des transactions et aux positions ouvertes
  3. commerce

Testeur de stratégie pour les programmes MQL5 uniquement.

Plus tard, nous élargirons la bibliothèque pour permettre l'accès aux indicateurs intégrés et personnalisés depuis le terminal.

Le lancement des scripts Python eux-mêmes pour l'optimisation n'est pas si intéressant.

La possibilité d'automatiser l'optimisation de mql5-advisors par des scripts Python est intéressante. Quelque chose comme ce qui est décrit dans l'article"Gestion de l'optimisation".

Управление оптимизацией (Часть 2): Создание ключевых объектов и логики приложения
Управление оптимизацией (Часть 2): Создание ключевых объектов и логики приложения
  • www.mql5.com
В текущей статье мы продолжаем процесс создания удобного графического интерфейса для управления оптимизациями в нескольких терминалах одновременно. В прошлой статье мы рассмотрели способ, позволяющий нам запустить терминал из консоли, а также структуру конфигурационного файла. В данной статье мы рассмотрим создание обертки для терминала на...
 
Renat Fatkhullin:

Les programmes Python seront exécutés dans le terminal uniquement en tant que scripts et ne sont pas impliqués de quelque manière que ce soit et ne participeront pas au testeur de stratégie de trading.

Il s'agit d'une solution pour ceux qui font des recherches approfondies en Python et qui veulent.. :

  1. accès aux informations sur le marché à partir de MT5
  2. accès à l'historique des transactions et aux positions ouvertes
  3. commerce

Testeur de stratégie pour les programmes MQL5 uniquement.

Plus tard, nous élargirons la bibliothèque et donnerons la possibilité d'accéder aux indicateurs intégrés et personnalisés depuis le terminal.

Je comprends bien que pour transférer des valeurs calculées et des tableaux de Py à mt5, il n'y aura pas de telles fonctions ?
Et il reste à utiliser - des solutions réseau, ou à scier le module sur le transfert par la mémoire ?

Comme je l'ai remarqué, la structure des objets a changé.
c'était le cas

Time  = [x.time for x in ticks]

deviennent maintenant

Time  = [x[0] for x in ticks]

Pouvez-vous décrire les structures pour copy_ticks et copy_rates ?
Quels indices x[], correspondent à quoi.

Ou est-ce la même séquence ? comme dans

struct MqlTick 
{ 
   datetime     time;          // Время последнего обновления цен 
   double       bid;           // Текущая цена Bid 
   double       ask;           // Текущая цена Ask 
   double       last;          // Текущая цена последней сделки (Last) 
   ulong        volume;        // Объем для текущей цены Last 
   long         time_msc;      // Время последнего обновления цен в миллисекундах 
   uint         flags;         // Флаги тиков 
   double       volume_real;   // Объем для текущей цены Last c повышенной точностью 
};
 

Roman:

Comme je l'ai remarqué, la structure des objets a maintenant changé.

utilisé pour être

maintenant ça l'est.

Pourriez-vous décrire les structures pour copy_ticks et copy_rates ?
Quels indices x[], correspondent à quoi.

Ou est-ce la même séquence ? comme dans

Il s'agit maintenant d'un tableau numpy, et non d'un tuple comme auparavant (c'est-à-dire un mappage direct effectif en mémoire des données elles-mêmes), son format peut être vu simplement en l'affichant :

>>> ticks1 = mt5.copy_ticks_from("EURAUD", datetime(2020,2,13,13), 20, mt5.COPY_TICKS_ALL)
>>> ticks1
array([(1581591600, 1.61633, 1.61657, 0., 0, 1581591600170, 134, 0.),
       (1581591600, 1.61633, 1.61658, 0., 0, 1581591600362,   4, 0.),
       (1581591600, 1.61633, 1.61659, 0., 0, 1581591600569,   4, 0.),
       (1581591600, 1.61636, 1.61659, 0., 0, 1581591600759, 130, 0.),
       (1581591601, 1.61633, 1.61659, 0., 0, 1581591601964, 130, 0.),
       (1581591602, 1.61634, 1.61658, 0., 0, 1581591602261, 134, 0.),
       (1581591606, 1.61635, 1.61658, 0., 0, 1581591606276, 130, 0.),
       (1581591607, 1.61637, 1.61661, 0., 0, 1581591607795, 134, 0.),
       (1581591607, 1.61643, 1.61664, 0., 0, 1581591607880, 134, 0.),
       (1581591608, 1.61642, 1.61665, 0., 0, 1581591608184, 134, 0.),
       (1581591608, 1.61643, 1.61667, 0., 0, 1581591608791, 134, 0.),
       (1581591608, 1.61642, 1.61667, 0., 0, 1581591608992, 130, 0.),
       (1581591609, 1.61642, 1.61665, 0., 0, 1581591609192,   4, 0.),
       (1581591609, 1.61642, 1.61667, 0., 0, 1581591609584,   4, 0.),
       (1581591611, 1.61642, 1.61666, 0., 0, 1581591611397,   4, 0.),
       (1581591611, 1.61642, 1.61667, 0., 0, 1581591611694,   4, 0.),
       (1581591612, 1.61643, 1.61667, 0., 0, 1581591612091, 130, 0.),
       (1581591612, 1.61643, 1.61665, 0., 0, 1581591612881,   4, 0.),
       (1581591613, 1.61644, 1.61665, 0., 0, 1581591613300, 130, 0.),
       (1581591613, 1.61648, 1.6167 , 0., 0, 1581591613498, 134, 0.)],
      dtype=[('time', '<i8'), ('bid', '<f8'), ('ask', '<f8'), ('last', '<f8'), ('volume', '<u8'), ('time_msc', '<i8'), ('flags', '<u4'), ('volume_real', '<f8')])

vous pouvez maintenant immédiatement les obtenir comme des vecteurs séparés (multiplier, soustraire) et dessiner des graphiques :

rates2 = mt5.copy_rates_from_pos("EURGBP", mt5.TIMEFRAME_M1, 0, 1000)

import matplotlib.pyplot as plt

plt.plot(rates2['time'], rates2['low'], 'g-')
plt.plot(rates2['time'], rates2['high'], 'r-')

plt.show()
 
Almaz:

Il s'agit maintenant d'un tableau numpy, et non d'un tuple comme auparavant (c'est-à-dire un mappage direct effectif en mémoire des données elles-mêmes), son format peut être vu simplement en l'affichant :

vous pouvez maintenant les obtenir immédiatement de comme des vecteurs séparés (multiplier, soustraire) et dessiner des graphiques :

Merci Almaz, maintenant je comprends.

Une question reste ouverte :
Ai-je bien compris que pour transférer des valeurs calculées et des tableaux de Py à mt5, il n'y aura pas de telles fonctions ?
Et il reste à utiliser - des solutions réseau, ou à scier le module sur le transfert par la mémoire ?