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

 

Bem, pelo menos informe em poucas palavras que o metatrader5(5.0.21)foi publicado e que o seguinte foi alterado... E colocar a documentação em conformidade. Não há tantas mudanças a fazer em poucos dias. Ou tem de verificar tudo por sensação?

Verificado e funciona:

>>> #--lib---------------------
>>> import MetaTrader5 as mt5
>>> import time
>>> #--init----------
>>> server1 = "MetaQuotes-Demo"; login1 = 18192632
>>> server2 = "AlpariEvrasia-MT5-Demo"; login2 = 50468487
>>> logn = login1; server = server1 
>>> if mt5.initialize(timeout = 2000, login = logn, server = server):
...     Acc = mt5.account_info()
... 
>>> if Acc.server != server:
...         print("Connect server wrong")
...         quit()
... 
>>> if Acc.login != logn:
...         print("Connect login wrong")
...         quit()
... 
>>> info = mt5.terminal_info()
>>> if info.trade_allowed == False:
...         print("Auto-trading disabled in Terminal, enable it")
...         quit()
... 
>>> print(info)
TerminalInfo(community_account=True, community_connection=True, connected=True, dlls_allowed=True, trade_allowed=True, tradeapi_disabled=False, email_enabled=False, ftp_enabled=False, notifications_enabled=False, mqid=False, build=2340, maxbars=100000, codepage=1251, ping_last=72203, community_balance=0.1, retransmission=0.8130081300813009, company='MetaQuotes Software Corp.', name='MetaTrader 5', language='Russian', path='C:\\Program Files\\MetaTrader 5', ...)
>>> if info.trade_allowed == False:
...         print("Auto-trading disabled in Terminal, enable it")
...         quit()
... 
>>> #--------------------------
>>> symbol = "EURGBP"
>>> timefr = 4
>>> mt5.symbol_select(symbol)
True
>>> time.sleep(1)
>>> #--price----------------
>>> import numpy as np
>>> import pandas as pd
>>> rates = pd.DataFrame(mt5.copy_rates_from_pos(symbol, timefr, 1, 1000))
>>> print(rates)
           time     open     high  ...  tick_volume  spread  real_volume
0    1582230720  0.83800  0.83802  ...           89       5            0
1    1582230960  0.83798  0.83802  ...           99       5            0
2    1582231200  0.83788  0.83795  ...           91       5            0
3    1582231440  0.83790  0.83791  ...           39       6            0
4    1582231680  0.83788  0.83793  ...           66       5            0
..          ...      ...      ...  ...          ...     ...          ...
995  1582642560  0.83624  0.83659  ...          267       1            0
996  1582642800  0.83650  0.83650  ...          293       3            0
997  1582643040  0.83617  0.83627  ...          290       5            0
998  1582643280  0.83623  0.83636  ...          226       6            0
999  1582643520  0.83624  0.83641  ...          109       5            0

[1000 rows x 8 columns]

Vamos continuar a apalpar :)

 
Vladimir Perervenko:

Bem, informa pelo menos em duas palavras que o metatrader5(5.0.21)é publicado e que o seguinte mudou... E colocar a documentação em conformidade. Não há demasiadas mudanças a fazer em poucos dias. Ou tem de verificar tudo por sensação?

A documentação online MetaTrader for Python já está disponível no sítio web para algumas das funcionalidades actualizadas. São apresentados exemplos para cada

Документация по MQL5: Интеграция / MetaTrader для Python
Документация по MQL5: Интеграция / MetaTrader для Python
  • www.mql5.com
Python является современным высокоуровневым языком программирования для разработки сценариев и приложений. Содержит множество библиотек для машинного обучения, автоматизации процессов, анализа и визуализации данных. Пакет MetaTrader для Python предназначен для...
 

Claro que já o vi. Executá-lo através da documentação

>>> #--lib---------------------
>>> import MetaTrader5 as mt5
>>> import time
>>> mt5.initialize()
True
>>> mt5.login(login = 18192632, server = "MetaQuotes-Demo")
RuntimeError: Invalid arguments
 

E isto funciona e é a inicialização correcta.

>>> mt5.initialize(timeout = 2000, login = 18192632, server = "MetaQuotes-Demo")
True
>>> Acc = mt5.account_info()

Basta corrigir a documentação.

 
Vladimir Perervenko:

Claro que já o vi. A sua execução de acordo com a documentação.

login é um parâmetro obrigatório sem nome, remover login=.

mt5.login(18192632, server = "MetaQuotes-Demo")
 
Vladimir Perervenko:

E isto funciona e é a inicialização correcta.

Basta corrigir a documentação.

Vamos completar a descrição, obrigado pela mensagem.

 
Vladimir Perervenko:

E isto funciona e é a inicialização correcta.

Basta corrigir a documentação.

Se agora tentar restabelecer a ligação

>>> res = mt5.login(server = "AlpariEvrasia-MT5-Demo", login = 50468487)
RuntimeError: Invalid arguments

No fim de contas, está muito cru até agora...

 
Vladimir Perervenko:

Se agora tentarmos restabelecer a ligação

Em suma, é tudo muito rude até agora...

Trazer a linha de acordo com os exemplos que Renat mostrou.

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

MetaTrader 5 Python User Group - Como usar Python no MetaTrader

Renat Fatkhullin, 2020.02.18 22:05

import MetaTrader5 as mt5

mt5.initialize(timeout=10000)
mt5.initialize(login=25035662, password="oxeb7lpb", server="MetaQuotes-Demo")
mt5.login(25035662)
mt5.login(25035662, timeout=10000)
mt5.login(25035662, "oxeb7lpb")
mt5.login(25035662, password="oxeb7lpb")
mt5.login(25035662, password="oxeb7lpb", server="MetaQuotes-Demo")
 
Rapazes, estou correcto ao assumir que a informação sobre posições em aberto no terminal não pode ser obtida agora?
 
Rashid Zeynalov:
Rapazes, será que entendo correctamente que não podem obter informações sobre posições em aberto no terminal agora?

Sim:

initialize(path=None)                              Establish connection with the MetaTrader 5 Terminal
wait()                                             Wait for the MetaTrader 5 Terminal to connect to a broker's server
shutdown()                                         Disconnect from the MetaTrader 5 Terminal

version()                                          Get the MetaTrader 5 Terminal version
terminal_info()                                    Get the parameters of the MetaTrader 5 terminal
account_info()                                     Returns information of current account

copy_ticks_from(symbol, from, count, flags)                Get ticks starting from the specific date
copy_ticks_range(symbol, from, to, flags)                  Get ticks from the specified period
copy_rates_from(symbol, timeframe, from, count)            Get bars starting from the specific date
copy_rates_from_pos(symbol, timeframe, start_pos, count)   Get bars starting from the specified position
copy_rates_range(symbol, timeframe, date_from, date_to)    Get bars from the specified period

positions_total()                                          Returns the number of open positions
positions_get([symbol=\"SYMBOL\"],[ticket=TICKET])         Returns all open positions, can be filtered by symbol or ticket

orders_total()                                             Returns the number of orders
orders_get([symbol=\"SYMBOL\"],[ticket=TICKET])            Returns all orders, can be filtered by symbol or ticket

history_orders_total(from, to)                             Returns the number of orders in selected range from the history
history_orders_get(from, to)                               Returns orders in selected range from the history or filtered by position id, ticket

history_deals_total(from, to)                              Returns the number of deals in selected range from the history
history_deals_get(from, to)                                Returns deals in selected range from the history or filtered by position id, ticket

order_check(request)                                                Checks if there are enough funds to execute the required trade operation
order_send(request)                                                 Sends trade requests to a server
order_calc_margin(action, symbol, volume, price)                    Calculates the margin required for the specified order
order_calc_profit(action, symbol, volume, price_open, price_close)  Calculates the profit for the current account, in the current market conditions, based on the parameters passed

symbol_info(symbol)                                        Returns full information for a specified symbol
symbol_info_tick(symbol)                                   Returns current prices of a specified symbol
symbol_select(symbol,[enable])                             Selects a symbol in the Market Watch window or removes a symbol from the window

A documentação ainda não foi finalizada.

Não se esqueça de actualizar a última versão da biblioteca, que é actualmente 21:

pip install --upgrade metatrader5