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

 

Publication de MetaTrader 5 pour Python 5.0.33 :

pip install --upgrade metatrader5
 
Christian:

copy_rates_from ne fournit pas suffisamment de données sur la période M1.


Est-ce la bonne marche à suivre ?

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.

 
Metaquotes :

Publication de MetaTrader 5 pour Python 5.0.33 :

Génial ! Tous les tests unitaires sont passés. pymt5adapter a été mis à jour pour utiliser MetaTrader 5.0.33.

Les deux paquets peuvent être mis à jour avec la commande suivante.




pip install -U pymt5adapter 

https://pypi.org/project/pymt5adapter/


Note : Le module calendrier a été définitivement supprimé de pymt5adapter

pymt5adapter
pymt5adapter
  • 2020.05.26
  • pypi.org
A drop in replacement wrapper for the MetaTrader5 package
 
1.BUY order send (): by EURUSD 0.01 lots at 1.0949 

2. order_send failed, retcode = 10016 
   retcode = 10016 
   deal = 0 
   order = 0 
   volume = 0.0 
   price = 0.0 
   bid = 0.0 
   ask = 0.0 
   comment = Invalid stops 
   request_id = 0 
   retcode_external = 0 

   request = TradeRequest (action = 1, magic = 234000, order = 0, symbol = 'EURUSD', volume = 0.01, price = 1.0949, stoplimit = 0.0, sl = 1.0939, tp = 1.0979, 
   deviation = 0, type = 0, type_filling = 0, type_time = 0, expiration = 0, commen 

t = 'EURUSD Buy.', Position = 0, position_by = 0) 
L'initialisation de stoplimit = 0.0 a tout simplement échoué, ou plutôt elle a réussi, mais le stoplimit est devenu inacceptable.
 
Pithon sera exploré demain avec ma petite-fille.
 

Python 5.0.33

@Almaz
N'affiche pas la figure du paquet matplotlib.
Depuis la console ou l'IDE python, la figure s'exécute.

2020.05.28 22:47:51.654 mplib (EURUSD,M5)       Figure(640 x480)
# -*- coding: utf-8 -*-

import MetaTrader5 as mt5
import matplotlib.pyplot as plt

Win = 11

if not mt5.initialize("C:\Program Files\MetaTrader 5\\terminal64.exe"):
    print("mt5.initialize() failed, error code = ", mt5.last_error())
    quit()   
    
rates = mt5.copy_rates_from_pos("EURUSD", mt5.TIMEFRAME_M5, 1, Win)   
close = rates['close']       
    
mt5.shutdown()    


fig = plt.figure()

ax1 = fig.add_subplot(3, 1, 1)
ax2 = fig.add_subplot(3, 1, 2)
ax3 = fig.add_subplot(3, 1, 3)

ax1.plot(close, color=(0.60, 0.60, 0.60), linestyle='dashed', linewidth = 1)
ax2.plot(close, color=(0.60, 0.60, 0.60), linestyle='dashed', linewidth = 1)
ax3.plot(close, color=(0.60, 0.60, 0.60), linestyle='dashed', linewidth = 1)

plt.show()
 
Roman:

Python 5.0.33.

N'affiche pas la figure du paquet matplotlib.
Depuis la console ou l'IDE python, la figure démarre.

Essayez ceci

pip install -U pymt5adapter pandas mplfinance

code

import mplfinance as mpf
import pandas as pd
import pymt5adapter as mta


def main():
    rates = mta.copy_rates_from_pos("EURUSD", mta.TIMEFRAME.H1, start_pos=0, count=50)
    df = pd.DataFrame(rates).rename(columns={'tick_volume': 'volume'})
    df.columns = (s.title() for s in df.columns)
    df['Time'] = pd.to_datetime(df['Time'], unit='s')
    df = df.set_index('Time')
    print(df)
    mpf.plot(df, type='candle', mav=(7, 15), volume=True)


if __name__ == '__main__':
    with mta.connected():
        main()


 
nicholi shen:

Essayez ceci

code

Merci. mplfinance : une bibliothèque intéressante.
Mais j'ai besoin d'une intrigue secondaire.

Cette bibliothèque peut-elle afficher un tel chiffre ?

 
Roman:

Python 5.0.33

@Almaz
N'affiche pas la figure du paquet matplotlib.
Depuis la console ou l'IDE python, la figure s'exécute.

Je suppose qu'il s'agit d'exécuter le script depuis le Terminal ? Vérifié, ça marche.

1. Voir quelles erreurs sont écrites dans l'onglet Experts (en bas de la boîte à outils)

2. Vérifiez dans les paramètres de MetaEditor que le chemin d'accès au bon Python avec matplotlib est correct. Après avoir modifié les paramètres dans MetaEditor, vous devez redémarrer le terminal, car le terminal ne prend en compte ces paramètres qu'au démarrage.

Options du compilateur MetaEditor

3. il est préférable de ne pas spécifier le chemin exact vers le terminal dans mt5.initialize() si vous exécutez des scripts python à partir du terminal lui-même, ils trouveront le bon par eux-mêmes, c'est-à-dire celui qui les a lancés.

 
Almaz:

Je suppose que le script est exécuté depuis le terminal ? Je l'ai testé, ça marche.

1. Voir quelles erreurs sont écrites dans l'onglet Experts (en bas de la boîte à outils)

2. Vérifiez dans les paramètres de MetaEditor que le chemin d'accès au bon Python avec matplotlib est correct. Après avoir modifié les paramètres dans MetaEditor, vous devez redémarrer le terminal, car le terminal ne prend en compte ces paramètres qu'au démarrage.

3. il est préférable de ne pas spécifier le chemin exact du terminal dans mt5.initialize() si vous exécutez les scripts python à partir du terminal lui-même, ils trouveront le bon chemin d'eux-mêmes, c'est-à-dire qu'ils le lanceront.

Merci Diamond.
Il n'y a pas d'erreurs. Dans l'onglet Experts, il a été édité :

2020.05.28 22:47:51.654 mplib (EURUSD,M5)       Figure(640 x480)

Les chemins sont corrects.
J'ai supprimé le chemin exact dans mt5.initialize(), j'ai redémarré le terminal et la figure a commencé à être émise.