MetaTrader 5 Python User Group - Come usare Python in Metatrader - pagina 78

 
Maxim Dmitrievsky:

Renat, c'è qualche aggiornamento sul supporto ONNX?

No.

Non c'è ancora nessuna domanda e nessun pubblico preparato.

 

Sono stati fatti molti cambiamenti nell'ultimo anno, i vecchi script non funzionano più.

C'è un terminale MT5 build 2361, 32bit su Windows 7. Il terminale stesso funziona, ma la connessione degli script python ha smesso di funzionare (anche se funzionava all'inizio dell'anno).

Ovviamente a causa degli aggiornamenti del terminale, nient'altro è cambiato. Per il test eseguire un semplice script

import MetaTrader5 as mt5
from time import sleep

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

mt5.shutdown()
print('end')

Domanda: quale versione di MetaTrader5 python devo installare per farlo funzionare di nuovo? (O come fare il rollback degli aggiornamenti del terminale?)

Ho provato diverse versioni del modulo - tutte hanno errori. Quelli più recenti danno -10003, 'IPC initialize failed, MetaTrader 5 x64 not found',

Alcuni passano l'inizializzazione, lanciano il terminale, ma quando richiedo qualcosa, restituiscono RuntimeError: IPC recv failed in 'py_test.py'.

La più vecchia 5.0.10 ha altri comandi, ma neanche questi funzionano.

Il terminale non può aggiornare a versioni più recenti, c'era qualche versione funzionante del modulo python, ma ora non riesco a trovarla.

La versione a 64 bit del terminale richiede aggiornamenti del sistema operativo e un sacco di altri aggiornamenti, inoltre il sistema operativo a 64 bit mangia molte volte più memoria e spazio su disco, cattiva scelta. In generale, la politica di autoaggiornamento di qualsiasi cosa è cattiva. Se funziona, non toccarlo.

In generale, si dovrebbe avere una tabella nella documentazione con quali versioni sono compatibili, se non si supporta la compatibilità con le vecchie versioni e gli aggiornamenti sono forzati.

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


Il supporto per il sistema operativo a 32 bit è stato disabilitato molte build fa. Il terminale è cambiato molto da allora. Da qui la probabile soluzione al tuo problema: DEVI usare Windows 10 a 64 bit.

 

Ma c'è una build compatibile del terminale e del modulo, puoi semplicemente installarli, senza alcuna nuova funzionalità.

E richiedere Windows 10 64 bit è troppo per un programma come il terminale. È troppo pesante, avido, inaffidabile per far funzionare qualsiasi cosa che richieda un funzionamento a lungo termine. Ci sono anche problemi con gli aggiornamenti automatici. È un peccato che MT sia legata a questo sistema.

 
Vladimir Karputov:

È NECESSARIO utilizzare Windows 10 a 64 bit.

Cosa c'è di sbagliato in Windows 7 x64? Mi sono perso un altro aggiornamento?

 
Aleksey Vyazmikin:

Cosa c'è di sbagliato in Windows 7 x64? Mi sono perso un'altra notizia?

Mi sembra che 7 sia meglio di 10. nessun orientamento sui sistemi mobili.

 
Valeriy Yastremskiy:

Per me 7 è meglio di 10. nessun orientamento ai sistemi mobili.

Sono d'accordo, ho lavorato sul 10 per quasi un anno e sono tornato a casa felice con il 7!

 
Renat Fatkhullin:

No.

Finché non c'è una domanda e un pubblico preparato.

4 persone hanno espresso la domanda finora, nell'argomento dell'apprendimento automatico :) mi sembra che se c'è un'opportunità e un paio di articoli sull'argomento, i pitonisti inizieranno a portare i modelli. Soprattutto quelli di lingua inglese.
 
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


Lo eseguo sia come script in MetaEditor che in jupyter notebook.

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


Non riesco a stampare le prime cinque righe dell'oggetto DataFrame.

Prendo lo script dalla cartella 'data'\Scripts\Python\copyrates_from.py' e aggiungo le linee:

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 il metodo non produce nulla:

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

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

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



Perché il metodo 'head()' non ha funzionato, ma questa manovra:

Forum sul trading, sistemi di trading automatico e test di strategia

Nuova versione di MetaTrader 5 build 2650: Caricamento in background dei grafici e miglioramenti in MQL5 Profiler

Rashid Umarov, 2020.11.10 14:03

Provalo

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

Risultato

Выведем пять первых строк
         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



ha funzionato?

 
Vladimir Karputov:

Perché non ha funzionato il metodo 'head()', ma questa manovra:


ha funzionato?

Perché il metodo head()(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html) restituisce un oggetto, non l'output nel log. Per vedere il contenuto, è necessario inviare esplicitamente l'oggetto a print()

Questo anaconda per comodità emette gli oggetti come se fosse stato chiamato print().