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

 
Renat Fatkhullin:

Desde a versão 5.0.15 a biblioteca python funciona num novo formato que não é compatível com o formato antigo e requer a última versão beta do terminal.

Em breve publicaremos documentação e exemplos actualizados

É possível descarregar temporariamente a versão antiga da biblioteca?

 
Dmitri Custurov:

É possível descarregar temporariamente uma versão antiga da biblioteca?

https://pypi.org/project/MetaTrader5/5.0.11/#files

MetaTrader5
MetaTrader5
  • 2020.01.24
  • pypi.org
Download the file for your platform. If you're not sure which to choose, learn more about installing packages. Files for MetaTrader5, version 5.0.11 Filename, size File type Python version Upload date Hashes MetaTrader5-5.0.11-cp36-cp36m-win32.whl (31.7 kB) MetaTrader5-5.0.11-cp36-cp36m-win_amd64.whl (43.3 kB...
 

Não resisto a expressar uma opinião sobre as integrações. Sou a favor com ambas as mãos. Python, redes neurais, IA, extensões do compilador e assim por diante...

Mas há um MAS.

Não importa quão fresco seja o ambiente de desenvolvimento, deve ser massa, certo? E como pode ser massa se o seu conjunto de ferramentas é primitivo habitual? NÃO - não primitivos habituais mas PRIMITIVOS GÉNICOS. PRIMITIVOS SUPERCOMPLEXOS.

Tomemos a classe CCanvas - é um conjunto de primitivos gráficos. Podemos reunir muitos deles? Muito. Mas quantos cérebros e mão-de-obra são necessários para isso? - UM LOT. Um mar de cérebros e de trabalho para criar a COISA. Quantos são capazes de o fazer? - Apenas alguns.

Mais uma vez a questão principal: como poderiam as ferramentas do ambiente de desenvolvimento tornar-se populares, se APRIORI assumem a presença de capacidades de design incomuns num homem? A disponibilidade em massa, em tal caso, está fora de questão.

Passo a parafrasear brevemente:

Se uma pessoa está familiarizada com Python, C++, MQL5, Algotrading e tem capacidades de design extraordinárias, que diferença faz para ela que ambiente profissional criar a sua COISA? Utilizará MÍNIMO de características e produzirá MÁXIMO de resultados. Outros tentarão utilizar tudo e não criar nada, devido ao limiar de complexidade do conjunto de ferramentas.

Então, em quem e no que se deve concentrar?

 

Versão mais baixa até à mais baixa disponível 5.0.10

444

Aparentemente, teremos de esperar por actualizações.

 

Saudações a todos!

Porque é que recebo este erro, apesar de ter seguido os exemplos correctos?

Saudações a todos!

Porque é que recebo este erro, apesar de ter seguido os exemplos correctos?


 
Renat Fatkhullin:
O python é activado no estúdio visual?

Devido ao jardim zoológico de pitões implantado indirectamente ou automaticamente por diferentes sistemas, é fácil obter bibliotecas instaladas noutra cópia de pitões e depois tentar executar outras cópias.

Ordenar os pitões, por favor. Aqueles que se mudam para python devem estar preparados para passar o resto das suas vidas a lutar com bibliotecas, dependências, e incompatibilidades.

Este é o destino de um pitonista - construir um ambiente de bibliotecas e rezar para que algumas actualizações de bibliotecas não estraguem outro número desconhecido de bibliotecas.

Não existe um jardim zoológico Python. Existe um ambiente. Pode haver mais do que um ambiente. O utilizador escolhe qual o ambiente a utilizar.

O ambiente Python deve ser inicializado antes da execução de um guião.

Considerei isto na minha biblioteca . Aqui está o código da função de inicialização do ambiente.

MetaTrader 5 (MQL5) + Python 3 DLL для Forex, CFD и Futures
  • roffild.com
Использование MetaTrader с Python 3 на финансовых фондовых биржах, Forex, CFD и Futures. Из MetaTrader можно получать котировки в Python, но нет полноценной связи между ними. Пост одного из разработчиков. Главная идея и отличие этой обертки от остальных: обмен данными между MQL и Python через заранее созданные функции. Это самый быстрый и...
 

Talvez seja altura de desistir do MetaEditor? Porquê introduzir tecnologias diferentes na sua IDE quando pode obter uma já pronta e completa?

Hoje em dia, todos estão a criar um módulo para a IDE:

código de estúdio visual da microsoft

ideia do jetbrains intellij

 
Roffild:

Não existe um jardim zoológico Python. Existe o conceito de Ambiente. Pode haver vários ambientes num computador. Cabe ao utilizador escolher qual o ambiente a utilizar.

O ambiente Python deve ser inicializado antes da execução de um guião.

Considerei isto na minha biblioteca . Aqui está o código da função de inicialização do ambiente.

Apoiamos facilmente ambientes. Dê uma vista de olhos às definições do compilador no editor, por favor.

Referia-me ao zoo no sentido em que o terminal pode seleccionar um ambiente (por exemplo, caminho por defeito), e as bibliotecas serão colocadas manualmente pelo utilizador num outro ambiente.


Amanhã lançaremos um novo beta do terminal e uma nova biblioteca python. Todos os métodos e exemplos antigos estão quebrados porque reescrevemos a api e a biblioteca a partir do zero.

O novo conjunto de api é amplo e permite gerir totalmente a negociação e tem acesso a posições abertas e à história.

Pode agora escrever robôs Metatrader de pleno direito directamente em Python.

 

Nova versão do MetaTrader 5 para Python 5.0.18 e MetaTrader 5 build 2319 beta:

  • MT5 beta download via Ajuda -> Verificar versão beta
  • biblioteca python:
    pip install --upgrade metatrader5
    

Como todos os api mudaram, os antigos exemplos já não funcionam.

Aqui está o novo conjunto de funcionalidades:

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

Exemplo:

import MetaTrader5 as mt5
import time

mt5.initialize()
mt5.wait()

dev = 0.00010;
symbol = "EURUSD"
buy_price = 0

mt5.symbol_select(symbol)

time.sleep(1)
p = mt5.symbol_info_tick(symbol)
prev_price = p.ask

while True:
    p = mt5.symbol_info_tick(symbol)
    print(p.bid,'/',p.ask)
    
    if p.ask > prev_price and buy_price == 0:
            print("Buy ", p.ask)
            r = mt5.Buy(symbol, 0.01)
            if r.retcode == mt5.TRADE_RETCODE_DONE:
                buy_price = p.ask;
    elif buy_price > 0 and p.ask + dev < buy_price:
        print("Buy(close) ", p.bid)
        mt5.Close(symbol)
        buy_price = 0

    prev_price = p.ask
    time.sleep(1)

mt5.shutdown()
 
Renat Fatkhullin:

Nova versão do MetaTrader 5 para Python 5.0.18 e MetaTrader 5 build 2319 beta:

  • MT5 beta download via Ajuda -> Verificar versão beta
  • biblioteca python:

Uma vez que todos os api mudaram, os antigos exemplos já não funcionam.

Tudo está a mudar de forma dinâmica.

Não quero realmente ser apanhado nesta confusão.

Provavelmente, vale a pena esperar pela implementação doWinML com ONNX. E antes disso, para compreender a teoria do ML. Felizmente, agora há muita literatura disponível e vários cursos.