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

 
Maxim Dmitrievsky:

Renat, há alguma actualização sobre o suporte ONNX?

Não.

Ainda não há procura e não há público preparado.

 

Muitas mudanças foram feitas durante o último ano, os guiões antigos já não funcionam.

Existe um terminal MT5 build 2361, 32bit no Windows 7. O terminal em si funciona, mas a ligação de scripts de pitões deixou de funcionar (embora estivesse a funcionar no início do ano).

Obviamente devido a actualizações do terminal, nada mais mudou. Para a realização do teste, um guião simples

import MetaTrader5 as mt5
from time import sleep

mt5.initialize()
print('start')
print(mt5.terminal_info())
sleep(10) 

mt5.shutdown()
print('end')

Questione que versão do módulo python MetaTrader5 devo instalar para que volte a funcionar ? (Ou como reverter as actualizações do terminal ?)

Tentei diferentes versões de módulo - todas elas têm erros. Aqueles que são mais recentes dão -10003, 'IPC initialize failed, MetaTrader 5 x64 not found',

Alguns passam inicialização, terminal de lançamento, mas quando solicito algo, eles devolvem RuntimeError: IPC recv falhou em 'py_test.py'.

O mais antigo 5.0.10 tem outros comandos, mas também não funcionam.

O terminal não pode ser actualizado para versões mais recentes, havia alguma versão funcional do módulo python, mas não o consigo encontrar agora.

A versão de 64 bits do terminal requer actualizações do SO e muitas outras actualizações, mais o SO de 64 bits come muitas vezes mais memória e espaço em disco, má escolha. Em geral, a política de actualização automática de qualquer coisa é má. Se funcionar, não lhe tocar.

Em geral, deve ter uma tabela na documentação com que versões são compatíveis, se não suportar a compatibilidade com versões mais antigas e actualizações são forçadas.

Автоматическое обновление - Для продвинутых пользователей - Справка по MetaTrader 5
Автоматическое обновление - Для продвинутых пользователей - Справка по MetaTrader 5
  • www.metatrader5.com
В платформу встроена система автоматического обновления. Она позволяет своевременно получать и устанавливать новые версии программы. Эту систему отключить нельзя. Порядок обновления При подключении к торговому серверу происходит проверка наличия обновлений платформы. Если найдено обновление какого-либо из компонентов торговой платформы...
 
Lyuk:


O suporte para o sistema operativo de 32 bits foi desactivado há muitos builds atrás. O terminal mudou muito desde então. Daí a solução provável para o seu problema: DEVE usar o Windows 10 de 64 bits.

 

Mas lá ERA uma construção compatível do terminal e do módulo, pode simplesmente instalá-los, sem quaisquer novas características.

E requerer Windows 10 64 bit é demasiado para um programa como o terminal. É demasiado pesado, ganancioso e pouco fiável para gerir qualquer coisa que requeira um funcionamento a longo prazo. Há também problemas com actualizações automáticas. É uma pena que a MT esteja ligada a este sistema.

 
Vladimir Karputov:

Necessita de utilizar Windows 10 de 64 bits.

O que há de errado com o Windows 7 x64? Perdi outra actualização???

 
Aleksey Vyazmikin:

O que há de errado com o Windows 7 x64? Será que perdi outra notícia???

Parece-me que 7 é melhor do que 10. nenhuma orientação sobre sistemas móveis.

 
Valeriy Yastremskiy:

Para mim 7 é melhor do que 10. nenhuma orientação para sistemas móveis.

Concordo, trabalhei em 10 durante quase um ano e fiquei feliz com 7 quando cheguei a casa!

 
Renat Fatkhullin:

Não.

Desde que não haja procura e não haja público preparado.

4 pessoas expressaram a sua exigência até agora, no tópico da aprendizagem por máquinas :) parece-me que se houver uma oportunidade e alguns artigos sobre o tópico, os pitonistas começarão a portar modelos. Especialmente os de língua inglesa.
 
2020.11.09 09:43:31.509 Terminal        MetaTrader 5 x64 build 2670 started for MetaQuotes Software Corp.
2020.11.09 09:43:31.510 Terminal        Windows 10 build 19042, Intel Core i7-9750 H  @ 2.60 GHz, 23 / 31 Gb memory, 1665 / 1861 Gb disk, IE 11, UAC, GMT+2
2020.11.09 09:43:31.510 Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075


Executo-o tanto como um guião em MetaEditor como em jupyter notebook.

Python version:  sys.version_info(major=3, minor=7, micro=6, releaselevel='final', serial=0)
Scikit-Learn version:  0.23.1


Não consigo imprimir as primeiras cinco linhas do objecto DataFrame.

Pego no guião da 'pasta de dados' e adiciono as linhas:

from datetime import datetime
import MetaTrader5 as mt5
# выведем данные о пакете MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)

# импортируем модуль pandas для вывода полученных данных в табличной форме
import pandas as pd
pd.set_option('display.max_columns', 500) # сколько столбцов показываем
pd.set_option('display.width', 1500)      # макс. ширина таблицы для показа
# импортируем модуль pytz для работы с таймзоной
import pytz

# установим подключение к терминалу MetaTrader 5
if not mt5.initialize():
    print("initialize() failed")
    mt5.shutdown()

# установим таймзону в UTC
timezone = pytz.timezone("Etc/UTC")
# создадим объект datetime в таймзоне UTC, чтобы не применялось смещение локальной таймзоны
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
# получим 10 баров с EURUSD H4 начиная с 01.10.2020 в таймзоне UTC
rates = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_H4, utc_from, 10)

# завершим подключение к терминалу MetaTrader 5
mt5.shutdown()
# выведем каждый элемент полученных данных на новой строке
print("Выведем полученные данные как есть")
for rate in rates:
    print(rate)

# создадим из полученных данных DataFrame
rates_frame = pd.DataFrame(rates)

# выведем пять первых строк (метод 'head' pandas)
print("\nВыведем пять первых строк")
rates_frame.head()

rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')

# выведем данные
print("\nВыведем датафрейм с данными")
print(rates_frame)

rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')

# выведем данные
print("\nВыведем датафрейм с данными")
print(rates_frame)

e o método não produz nada:

(1578614400, 1.11051, 1.11093, 1.11017, 1.11041, 2448, 1, 0)

Выведем пять первых строк

Выведем датафрейм с данными



Porque é que o método 'cabeça()' não funcionou, mas esta manobra:

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

Nova versão do MetaTrader 5 build 2650: Carregamento de gráficos de fundo e melhorias no MQL5 Profiler

Rashid Umarov, 2020.11.10 14:03

Experimente-o

# выведем пять первых строк (метод 'head' pandas)
print("\nВыведем пять первых строк")
print( rates_frame.head())

Resultado

Выведем пять первых строк
         time     open     high      low    close  tick_volume  spread  real_volume
0  1578484800  1.11384  1.11386  1.11110  1.11200        12101       0            0
1  1578499200  1.11200  1.11308  1.11087  1.11180        13243       0            0
2  1578513600  1.11180  1.11180  1.11018  1.11041         5709       0            0
3  1578528000  1.11053  1.11194  1.11033  1.11174         4409       0            0
4  1578542400  1.11174  1.11190  1.11126  1.11183         2964       0            0



funcionou?

 
Vladimir Karputov:

Porque é que o método 'cabeça()' não funcionou, mas esta manobra:


funcionou?

Porque o método head() (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html) devolve um objecto, e não a saída para o registo. Para ver o conteúdo, é necessário enviar explicitamente o objecto para impressão()

Esta anaconda para conveniência produz os objectos como se a impressão() tivesse sido chamada.