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

 
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:

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

Aqui está o novo conjunto de funcionalidades:

Exemplo:

Existem planos para adicionar funções para executar testes/optimização e obter os seus resultados?

 

Os programas Python serão executados no terminal apenas como scripts e não estão envolvidos de forma alguma e não participarão no testador de estratégias comerciais.

Esta é uma solução para aqueles que estão a fazer investigação profunda em Python e querem:

  1. acesso à informação de mercado da MT5
  2. acesso ao histórico de negociações e posições em aberto
  3. comércio

Testador de Estratégia apenas para programas MQL5.

Mais tarde vamos expandir a biblioteca e dar a possibilidade de aceder a indicadores incorporados e personalizados a partir do terminal.

 

De qualquer modo, a situação neste momento é a seguinte: instalei janelas 7 em 3 máquinas.

Resumindo:333

Colocá-lo no windows server 2012 - começou a meio caminho. E mesmo em python 3.8.1

 
Dmitri Custurov:

De qualquer modo, a situação neste momento é a seguinte: instalei janelas 7 em 3 máquinas.

Resumindo:

Colocá-lo no windows server 2012 - começou a meio caminho. E mesmo em python 3.8.1.

Dez não está à mão, mas penso que aí e começar.

 
Instalou o estúdio visual e a libs com ele nos sete só por precaução. Não vai começar. Foram para as tomadas de fumo. Coisa muito fixe. Já o comecei em java.
 

Em 10, voltou ao normal.

from MetaTrader5 import *
#import MetaTrader5 as mt5
import time

initialize()
wait()

# mt5.initialize()
# mt5.wait()

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

symbol_select(symbol)

Acc = account_info()
Term = terminal_info()
vr = version()

Acc.server
Acc.login
Term.build

'MetaQuotes-Demo'
18192632
2319

1.O problema anterior mantém-se. Durante a inicialização, o terminal começa com um corretor e uma conta arbitrária. Não foi prometido consertá-lo?

2) As ordens são executadas. Não o verifiquei mais.

Não compreendo porque é que o módulo "metatrader5 5.0.18 pypi_0 pypi" é importado apenas como "MetaTrader5".

Vamos tentar.

Boa sorte

 
Renat Fatkhullin:

Os programas Python serão executados no terminal apenas como scripts e não estão envolvidos de forma alguma e não participarão no testador de estratégias comerciais.

Esta é uma solução para aqueles que estão a fazer investigação profunda em Python e querem:

  1. acesso à informação de mercado da MT5
  2. acesso ao histórico de negociações e posições em aberto
  3. comércio

Testador de Estratégia apenas para programas MQL5.

Mais tarde iremos expandir a biblioteca para permitir o acesso a indicadores incorporados e personalizados a partir do terminal.

Lançar os próprios guiões Python para optimização não é assim tão interessante.

A possibilidade de automatizar a optimização de mql5-avisores através de scripts Python é interessante. Algo semelhante ao descrito no artigo"Gestão da Optimização".

Управление оптимизацией (Часть 2): Создание ключевых объектов и логики приложения
Управление оптимизацией (Часть 2): Создание ключевых объектов и логики приложения
  • www.mql5.com
В текущей статье мы продолжаем процесс создания удобного графического интерфейса для управления оптимизациями в нескольких терминалах одновременно. В прошлой статье мы рассмотрели способ, позволяющий нам запустить терминал из консоли, а также структуру конфигурационного файла. В данной статье мы рассмотрим создание обертки для терминала на...
 
Renat Fatkhullin:

Os programas Python serão executados no terminal apenas como scripts e não estão envolvidos de forma alguma e não participarão no testador de estratégias comerciais.

Esta é uma solução para aqueles que estão a fazer investigação profunda em Python e querem:

  1. acesso à informação de mercado da MT5
  2. acesso ao histórico de negociações e posições em aberto
  3. comércio

Testador de Estratégia apenas para programas MQL5.

Mais tarde vamos expandir a biblioteca e dar a possibilidade de aceder a indicadores incorporados e personalizados a partir do terminal.

Compreendo correctamente que para transferir valores e matrizes calculados de Py para mt5, não haverá tais funções ?
E resta utilizar - soluções de rede, ou serrar o módulo em transferência através da memória?

Como reparei, agora a estrutura dos objectos mudou
costumava ser

Time  = [x.time for x in ticks]

tornar-se agora

Time  = [x[0] for x in ticks]

Poderia descrever, estruturas para copy_ticks e copy_rates ?
Quais x[] índices, correspondem a quê.

Ou é a mesma sequência? como em

struct MqlTick 
{ 
   datetime     time;          // Время последнего обновления цен 
   double       bid;           // Текущая цена Bid 
   double       ask;           // Текущая цена Ask 
   double       last;          // Текущая цена последней сделки (Last) 
   ulong        volume;        // Объем для текущей цены Last 
   long         time_msc;      // Время последнего обновления цен в миллисекундах 
   uint         flags;         // Флаги тиков 
   double       volume_real;   // Объем для текущей цены Last c повышенной точностью 
};
 

Roman:

Como reparei, a estrutura dos objectos mudou agora

costumava ser

agora está.

Poderia descrever, estruturas para copy_ticks e copy_rates ?
Quais x[] índices, correspondem a quê.

Ou é a mesma sequência? como em

É agora uma matriz numérica, não um tuple como era antes (ou seja, um mapeamento directo eficaz para a memória dos próprios dados), o seu formato pode ser visto simplesmente através da sua exibição:

>>> ticks1 = mt5.copy_ticks_from("EURAUD", datetime(2020,2,13,13), 20, mt5.COPY_TICKS_ALL)
>>> ticks1
array([(1581591600, 1.61633, 1.61657, 0., 0, 1581591600170, 134, 0.),
       (1581591600, 1.61633, 1.61658, 0., 0, 1581591600362,   4, 0.),
       (1581591600, 1.61633, 1.61659, 0., 0, 1581591600569,   4, 0.),
       (1581591600, 1.61636, 1.61659, 0., 0, 1581591600759, 130, 0.),
       (1581591601, 1.61633, 1.61659, 0., 0, 1581591601964, 130, 0.),
       (1581591602, 1.61634, 1.61658, 0., 0, 1581591602261, 134, 0.),
       (1581591606, 1.61635, 1.61658, 0., 0, 1581591606276, 130, 0.),
       (1581591607, 1.61637, 1.61661, 0., 0, 1581591607795, 134, 0.),
       (1581591607, 1.61643, 1.61664, 0., 0, 1581591607880, 134, 0.),
       (1581591608, 1.61642, 1.61665, 0., 0, 1581591608184, 134, 0.),
       (1581591608, 1.61643, 1.61667, 0., 0, 1581591608791, 134, 0.),
       (1581591608, 1.61642, 1.61667, 0., 0, 1581591608992, 130, 0.),
       (1581591609, 1.61642, 1.61665, 0., 0, 1581591609192,   4, 0.),
       (1581591609, 1.61642, 1.61667, 0., 0, 1581591609584,   4, 0.),
       (1581591611, 1.61642, 1.61666, 0., 0, 1581591611397,   4, 0.),
       (1581591611, 1.61642, 1.61667, 0., 0, 1581591611694,   4, 0.),
       (1581591612, 1.61643, 1.61667, 0., 0, 1581591612091, 130, 0.),
       (1581591612, 1.61643, 1.61665, 0., 0, 1581591612881,   4, 0.),
       (1581591613, 1.61644, 1.61665, 0., 0, 1581591613300, 130, 0.),
       (1581591613, 1.61648, 1.6167 , 0., 0, 1581591613498, 134, 0.)],
      dtype=[('time', '<i8'), ('bid', '<f8'), ('ask', '<f8'), ('last', '<f8'), ('volume', '<u8'), ('time_msc', '<i8'), ('flags', '<u4'), ('volume_real', '<f8')])

pode agora imediatamente obtê-los como vectores separados (multiplicar, subtrair) e desenhar gráficos:

rates2 = mt5.copy_rates_from_pos("EURGBP", mt5.TIMEFRAME_M1, 0, 1000)

import matplotlib.pyplot as plt

plt.plot(rates2['time'], rates2['low'], 'g-')
plt.plot(rates2['time'], rates2['high'], 'r-')

plt.show()
 
Almaz:

É agora uma matriz numérica, não um tuple como era antes (ou seja, um mapeamento directo eficaz para a memória dos próprios dados), o seu formato pode ser visto simplesmente através da sua exibição:

pode agora obtê-los imediatamente como vectores separados (multiplicar, subtrair) e desenhar gráficos:

Obrigado Almaz, agora compreendo.

Há ainda uma questão em aberto:
Compreendo correctamente que, para transferir valores e matrizes calculados de Py para mt5, não haverá tais funções?
E resta utilizar - soluções de rede, ou serrar o módulo em transferência através da memória?

Razão: