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

 
Rashid Umarov:

Vérifiez si votre type de compte est un compte de compensation ou de couverture. Pour la compensation, le ticket d'une position déjà existante ne changera pas, et il est inutile de rechercher une position après l'action par numéro d'ordre.

Oui, tout est clair, regardé oui, en cas d'ouverture d'une position sur un ticket de compensation, correspond à l'ouverture de la position. Le point est clair.

 
Almaz:
code d'erreur 1, c'est un succès mt5.RES_S_OK, le prochain build écrira [1, 'Success']. Les codes avec des valeurs négatives sont des erreurs mt5.RES_E_xxx.

Oui, merci - le point est clair quant à la raison pour laquelle la ligne blanche était là.

 
Bonjour, y a-t-il une mise à jour sur le post #517 concernant l'obtention d'une mise à jour du terminal à propos de newbar ?
 
fbrand:
Bonjour, y a-t-il une mise à jour sur le post #517 concernant l'obtention d'une mise à jour du terminal à propos de newbar ?

Jusqu'à présent, j'ai dû faire un cycle avec le contrôle de l'heure :

if mt5.symbol_info_tick(symbol).time % (60 * timefr) == 0:
...

Pas très pratique. Mais comme option temporaire, c'est très bien.

 
Vladimir Perervenko:

Jusqu'à présent, j'ai dû faire un cycle avec le contrôle de l'heure :

Pas très pratique. Mais comme option temporaire, c'est très bien.

Non prévu. Vérifiez les nouvelles barres sur une minuterie ou dans une boucle.

 
Rashid Umarov :

Non prévu. Vérifiez les nouvelles barres sur une minuterie ou dans une boucle.


Si vous utilisez selon Vladimir, nous n'obtiendrons pas alors le volume exact, mais seulement le volume de ce tick au sondage ?


Et si vous utilisez ensuite les nouvelles barres dans EA pour appeler le script Python, et que le script pointe sur plus d'un symbole, toutes les nouvelles barres pour tous les symboles dans le terminal sont-elles exécutées en même temps, ou dois-je créer un script Python et un conseiller pour chaque symbole ?


Merci

ps : désolé, j'ai dû passer à l'anglais car le traducteur s'est trompé dans les mots.
Обработчик события "новый бар"
Обработчик события "новый бар"
  • www.mql5.com
Для создателей индикаторов и экспертов всегда был актуален вопрос написания экономичного кода с точки зрения времени выполнения. Можно подойти к решению этой задачи с разных сторон. Из этой обширной темы в данной статье будет затронут, казалось бы уже решенный вопрос: проверка появления нового бара. Это достаточно популярный способ ограничения...
 

Utilisation dehistory_orders_get().

Dans la documentation, un copier-coller explicite :)(https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5historyordersget_py)

Et il y a une bizarrerie dans l'usage :

    from_date = datetime(2020,1,1)
    to_date = datetime.now()
    if mt5.initialize(acc['path'], login=login, server=acc['server'], password=acc['pass']):
        orders = mt5.history_orders_get(from_date, to_date)    
        if len(orders) > 0:
            orders_frame = pd.DataFrame(orders)
            print(orders_frame.head())

Résultat :

 python.exe .\history-deal-mt-1.py
         0           1              2           3              4  5  6  7  8  9      10       11  12  13    14   15       16      17      18       19   20      21             22 23
0  4308935  1583603265  1583603265527  1583603267  1583603267535  0  0  0  0  4  234000  4308935   0   3  0.01  0.0     0.00     0.0     0.0  9128.00  0.0  BTCUSD  python script
1  4308936  1583603511  1583603511561  1583603511  1583603511561  0  1  0  1  4  234000  4308935   0   5  0.01  0.0  9128.01     0.0     0.0  9128.01  0.0  BTCUSD  [tp 9128.010]
2  4308937  1583603550  1583603550455  1583603552  1583603552460  0  1  0  0  4       0  4308937   0   0  0.01  0.0     0.00     0.0     0.0  9127.50  0.0  BTCUSD
3  4308938  1583603969  1583603969250  1583603971  1583603971253  0  0  0  0  4  234000  4308938   0   3  0.01  0.0     0.00  9135.5  9142.5  9139.00  0.0  BTCUSD  python script
4  4308939  1583603974  1583603974183  1583603974  1583603974188  0  1  0  1  4  234000  4308938   0   4  0.01  0.0  9135.50     0.0     0.0  9135.50  0.0  BTCUSD  [sl 9135.500]

Au total, les données sont affichées, mais où, quoi - on ne peut que le deviner.

Les gens, s'il vous plaît - ajouter quelque chose comme _fields ou as_dict() ou __dict__ à TradeOrder (et similaires).

    Point = collections.namedtuple('Point', ['x', 'y', 'val'])    
    print(Point._fields)
python.exe .\history-deal-mt-1.py
('x', 'y', 'val')

Vraiment, ce n'est pas pratique maintenant.

 
Дмитрий Прокопьев:

Utilisation dehistory_orders_get().

Dans la documentation, un copier-coller explicite :)(https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5historyordersget_py)

Mettez à jour l'aide ou cliquez sur le lien

 
Rashid Umarov:

Il n'y a pas de plan. Vérifiez les nouvelles barres sur une minuterie ou dans une boucle.

Pouvez-vous être plus précis au sujet de la minuterie ?

 
Дмитрий Прокопьев:

Les gens, s'il vous plaît - ajouter quelque chose comme _fields ou as_dict() ou __dict__ à TradeOrder (et similaires).

Vraiment, ce n'est pas pratique maintenant.

Dans la version 5.0.27, c'est déjà le cas, la méthode _asdict() a été ajoutée à toutes les structures séquentielles (analogues aux tuple nommés dans l'API C).

sym = mt5.symbol_info("EURUSD")._asdict()
for i in sym:
   print(i, '=', sym[i])