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

 
Roman:

Merci Diamond.
Il n'y a pas d'erreurs.
Les chemins sont épelés correctement.
J'ai supprimé le chemin exact dans mt5.initialize (), redémarré le terminal et la figure a commencé à s'afficher.

Vous devez utiliser une chaîne de caractères brute ou échapper à tous les antislashs.

option1 = r'C:\Program Files\MetaTrader 5\terminal64.exe'
option2 = 'C:\\Program Files\\MetaTrader 5\\terminal64.exe'
 
nicholi shen:

Vous devez utiliser une chaîne de caractères brute ou échapper à tous les antislashs.

J'ai aussi pensé au blindage quand Almaz a écrit pour le chemin exact. Oui, ça a marché aussi. Merci

 
Almaz :

Vous avez une limite sur le nombre de barres dans les graphiques, vous devez supprimer cette limite dans le Terminal (Outils->Options->Max barres dans le graphique).
Dans les futures versions du terminal, nous renverrons une erreur (None) lorsque nous essaierons de répondre à une telle demande.

Merci pour le conseil.

MT5 fournit maintenant toutes les données correctement.

 

Python 3.8

Construire 2470

Paquet 5.0.33


Échec de la fonction Orders_get

Les retours ne sont pas "NON" s'il n'y a pas de commandes.

import MetaTrader5 as mt5

if not mt5.initialize():
    print( "initialize() failed, error code =" , mt5.last_error())
    quit()

orders = mt5.orders_get(symbol= "GBPUSD" )
if orders is None:
    print( "No orders on GBPUSD, error code={}" .format(mt5.last_error()))
elif len(orders) > 0 :
    print( "Total orders on GBPUSD:" , len(orders))
     for order in orders:
        print(order)

mt5.shutdown()


 
Christian:

Python 3.8

Construire 2470

Paquet 5.0.33


Échec de la fonction Orders_get

Les retours ne sont pas "NON" s'il n'y a pas de commandes.


Tout est correct, un ensemble vide est retourné - signe d'absence d'ordres, ce n'est pas une erreur, la demande a fonctionné avec succès, None est retourné en cas d'erreur explicite. Mais le fait qu'il renvoie également un ensemble vide sur les symboles qui ne sont pas sur le serveur du courtier, c'est une erreur, corrigée, elle sera disponible avec la prochaine mise à jour du terminal.
 
Almaz :
C'est correct, l'ensemble vide est retourné - signe d'absence de commandes, ce n'est pas une erreur, la demande a été traitée avec succès, None est retourné en cas d'erreur explicite. Mais il renvoie également un ensemble vide sur les symboles qui ne sont pas sur le serveur du courtier, c'est une erreur, corrigée, elle sera disponible avec la prochaine mise à jour du terminal.

OK, est-ce que j'ai bien compris ?


Il n'y a que deux types de réponses :

1. NON

2. Un tuple dont la longueur est supérieure à 0


Dans l'assemblée suivante> 2470

 
Christian:

OK, est-ce que j'ai bien compris ?


Il n'y a que deux types de réponses :

1. NON

2. Un tuple dont la longueur est supérieure à 0


Dans la prochaine version> 2470

Non.

1. aucun si une erreur est soulevée

2. tuple avec une longueur >=0

 
Rashid Umarov:

Non.

1. aucun si une erreur est soulevée

2. tuple avec une longueur >=0

Ok, maintenant je comprends.

Thx

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

Notez que mt5.terminal_info() montre :

path='C:\Works\\\\\MT5 - terminals\\\\\N- Trader 5', data_path='C:\Works\\\\MT5 - terminals\N- Trader 5',commondata_path='C:\NUsers\\Nrip\N-AppData\N\N- Roaming\NQuotes\N- Terminal\N-Common'.

sont identiques. C'est censé être comme ça ?

Le code est ci-dessous :

 
Almaz:

@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 la fonction copy_xxx_xxx attend que l'historique soit échangé lors du premier appel.