MetaTrader 5 Python User Group - wie man Python in Metatrader verwendet - Seite 78

 
Maxim Dmitrievsky:

Renate, gibt es ein Update zur ONNX-Unterstützung?

Nein.

Es gibt noch keine Nachfrage und kein vorbereitetes Publikum.

 

Im letzten Jahr wurden viele Änderungen vorgenommen, alte Skripte funktionieren nicht mehr.

Es gibt ein Terminal MT5 build 2361, 32bit auf Windows 7. Das Terminal selbst funktioniert, aber die Verbindung von Python-Skripten funktioniert nicht mehr (obwohl sie zu Beginn des Jahres funktionierte).

Offensichtlich hat sich durch die Aktualisierung der Terminals nichts anderes geändert. Für den Test ein einfaches Skript ausführen

import MetaTrader5 as mt5
from time import sleep

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

mt5.shutdown()
print('end')

Frage, welche Version von MetaTrader5 Python-Modul sollte ich installieren, damit es wieder funktioniert? (Oder wie kann man die Terminal-Updates rückgängig machen?)

Ich habe verschiedene Versionen des Moduls ausprobiert - alle haben Fehler. Die neueren Versionen geben -10003 aus, 'IPC initialize failed, MetaTrader 5 x64 not found',

einige von ihnen initialisieren und führen Terminal aus, aber sie geben RuntimeError: IPC recv failed in 'py_test.py' zurück.

Die älteste Version 5.0.10 hat andere Befehle, aber auch die funktionieren nicht.

Terminal kann nicht auf neuere Versionen aktualisieren, es gab eine funktionierende Version des Python-Moduls, aber ich kann sie nicht mehr finden.

Die 64-Bit-Version des Terminals erfordert Betriebssystem-Updates und eine Menge anderer Updates, außerdem frisst das 64-Bit-Betriebssystem ein Vielfaches an Arbeitsspeicher und Festplattenplatz - eine schlechte Wahl. Generell ist die Politik der automatischen Aktualisierung von allem schlecht. Wenn er funktioniert, lassen Sie ihn in Ruhe.

Im Allgemeinen sollten Sie eine Tabelle in der Dokumentation haben, welche Versionen mit welchen kompatibel sind, wenn Sie die Kompatibilität mit älteren Versionen nicht unterstützen und Updates erzwungen werden.

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


Die Unterstützung für das 32-Bit-Betriebssystem wurde vor vielen Jahren deaktiviert. Das Terminal hat sich seither stark verändert. Daraus ergibt sich die wahrscheinliche Lösung für Ihr Problem: Sie MÜSSEN 64-Bit-Windows 10 verwenden.

 

Aber es gab einen kompatiblen Build des Terminals und des Moduls, man kann sie einfach installieren, ohne neue Funktionen.

Und Windows 10 64 Bit zu benötigen ist zu viel für ein Programm wie das Terminal. Er ist zu schwer, zu gefräßig, zu unzuverlässig, um irgendetwas zu betreiben, das einen langfristigen Betrieb erfordert. Außerdem gibt es Probleme mit automatischen Updates. Es ist schade, dass MT an dieses System gebunden ist.

 
Vladimir Karputov:

Sie MÜSSEN 64-Bit-Windows 10 verwenden.

Was ist mit Windows 7 x64 nicht in Ordnung? Habe ich ein weiteres Update verpasst?

 
Aleksey Vyazmikin:

Was ist mit Windows 7 x64 nicht in Ordnung? Habe ich wieder eine Nachricht verpasst?

Mir scheint, dass 7 besser ist als 10. keine Orientierung auf mobilen Systemen.

 
Valeriy Yastremskiy:

Für mich ist 7 besser als 10. keine Orientierung an mobilen Systemen.

Ich stimme zu, ich habe fast ein Jahr lang an 10 gearbeitet und bin glücklich mit 7 nach Hause gekommen!

 
Renat Fatkhullin:

Nein.

Solange es keine Nachfrage und kein vorbereitetes Publikum gibt.

Bislang haben 4 Personen eine Nachfrage zum Thema maschinelles Lernen geäußert :) Ich habe den Eindruck, dass Python-Benutzer mit der Portierung von Modellen beginnen werden, wenn es eine Gelegenheit und ein paar Artikel zu diesem Thema gibt. Vor allem englischsprachige.
 
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


Ich führe es sowohl als Skript in MetaEditor als auch in Jupyter Notebook aus.

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


Ich kann die ersten fünf Zeilen des DataFrame-Objekts nicht drucken.

Ich nehme das Skript aus dem "Datenordner"\Scripts\Python\copy_rates_from.py' und füge die Zeilen hinzu:

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)

und die Methode gibt nichts aus:

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

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

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



Warum die Methode 'head()' nicht funktionierte, aber dieses Manöver:

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Neue Version von MetaTrader 5 build 2650: Laden von Charts im Hintergrund und Verbesserungen im MQL5 Profiler

Rashid Umarov, 2020.11.10 14:03

Versuchen Sie es

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

Ergebnis

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



funktioniert?

 
Vladimir Karputov:

Warum hat die Methode "head()" nicht funktioniert, sondern dieses Manöver:


funktioniert?

Denn die Methode head()(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html) gibt ein Objekt zurück, nicht die Ausgabe in das Protokoll. Um den Inhalt zu sehen, müssen Sie das Objekt explizit an print() senden

Diese Anaconda gibt die Objekte der Einfachheit halber so aus, als ob print() aufgerufen worden wäre.