MetaTrader 5 Python User Group - como usar o Python no Metatrader - página 67

 

MetaTrader 5 para Python 5.0.33 lançado:

pip install --upgrade metatrader5
 
Christian:

copy_rates_from não fornece dados suficientes sobre o período de tempo M1.


Será esta a linha de acção correcta?

Tem um limite no número de barras nos gráficos, precisa de remover este limite no Terminal (Ferramentas->Opções->Barras máximas no gráfico).
Em futuras construções de Terminal devolveremos o erro (Nenhum) ao tentar tal pedido.

 
Metaquotes :

MetaTrader 5 para Python 5.0.33 lançado:

Fantástico! Todos os testes unitários foram aprovados. O pymt5adapter foi actualizado para usar o MetaTrader 5.0.33.

Ambos os pacotes podem ser actualizados com o seguinte comando.




pip install -U pymt5adapter 

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


Nota: O módulo de calendário foi removido permanentemente do 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) 
A inicialização do stoplimit = 0,0 simplesmente falhou, ou melhor, falhou, mas o stoplimit tornou-se inaceitável.
 
Pithon irá explorar amanhã com a minha neta.
 

Python 5.0.33

@Almaz
Não produz figura de pacote matplotlib.
A partir de consola ou python IDE, a figura corre.

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ão exibe a figura do pacote matplotlib.
A partir da consola ou da IDE python, a figura começa.

Experimente isto

pip install -U pymt5adapter pandas mplfinance

código

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:

Experimente isto

código

Obrigado. biblioteca mplfinance interessante.
Mas preciso de uma subparcela.

Pode esta biblioteca exibir tal figura?

 
Roman:

Python 5.0.33

@Almaz
Não produz a figura do pacote matplotlib.
A partir de consola ou python IDE, a figura corre.

Presumo que isto esteja a correr o guião desde debaixo do Terminal? Verificado, funciona.

1. Veja que erros estão escritos no separador Especialistas (na parte inferior da Caixa de Ferramentas)

2. Verifique nas definições do MetaEditor que o caminho correcto para o Python correcto com matplotlib está nas definições, depois de alterar as definições no MetaEditor deve reiniciar o terminal, porque o terminal só apanha estas definições no arranque.

Opções do Compilador MetaEditor

3. é melhor não especificar o caminho exacto para o terminal em mt5.initialize() se executar scripts python a partir do próprio Terminal, eles irão encontrar um correcto por si próprios, ou seja, aquele que os iniciou.

 
Almaz:

Presumo que esteja a executar o guião do Terminal? Testado, funciona.

1. Veja que erros estão escritos no separador Especialistas (na parte inferior da Caixa de Ferramentas)

2. Verifique nas definições do MetaEditor que o caminho correcto para o Python correcto com matplotlib está nas definições, depois de alterar as definições no MetaEditor deve reiniciar o terminal, porque o terminal só apanha estas definições no arranque.

3. é melhor não especificar o caminho exacto para o terminal em mt5.initialize() se executar scripts python a partir do próprio terminal, eles encontrarão um correcto por si próprios, ou seja, iniciá-lo.

Obrigado Diamond.
Não há erros. No separador Especialistas foi emitido:

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

Os caminhos estão correctos.
Removido o caminho exacto em mt5.initialize(), reiniciado o terminal e a figura começou a ser emitida.

Razão: