Diskussion zum Artikel "Integration von MetaTrader 5 und Python: Daten senden und empfangen" - Seite 7

 
yogibass:

@Maxim Dmitrievsky

Ich wollte mich nur dafür bedanken, dass Sie dies zur Verfügung gestellt haben. Ich wollte schon immer in der Lage sein, meine Indikatoren in Python zu programmieren, und seit Sie diesen Thread gestartet haben, kann ich auf Echtzeit-Futures-Daten zugreifen und sie zur Entwicklung und Ausführung meiner Indikatoren verwenden. Ich verwende mein Python, um den Live-Feed zu analysieren und zu zeichnen, und ich platziere meine Trades über die MT5-Plattform - es funktioniert hervorragend. Bitte machen Sie weiter so und ich hoffe wirklich, dass Python von der MT-Gemeinschaft voll akzeptiert wird.

Vielen Dank und beste Grüße!

Hallo, wissen Sie, warum der Code nicht kompiliert, ich erhalte einen "none"-Wert.

rates = MT5CopyRatesFromPos(i, MT5_TIMEFRAME_M1, 0, 1000)
     d[i] = [y.close for y in rates
 
Dannyhill.0:
Hallo, wissen Sie, warum der Code nicht kompiliert, ich erhalte einen none-Wert.

Mehrere Gründe...

  • fehlende Klammer bei der Listenkompilierung
  • Verwendung veralteter Funktionen aus dem MetaTrader5-Paket
  • i ist nicht definiert
  • verschmutzter Namespace durch Verwendung von from x import * (mögliche Kollisionen?)
  • close ist kein Attribut von ndarray
  • iter nicht ein ndarray, um eine Serie herauszuziehen
  • hat terminal initialisiert???

Es sollte wie folgt aussehen

import MetaTrader5 as mt

try:
    if not mt.initialize():
        raise Exception('Failed to initialize')
    close_price_map = {}
    for symbol in ['EURUSD', 'USDJPY']:
        rates = mt.copy_rates_from_pos(symbol, mt.TIMEFRAME_M1, 0, 5)
        close_price_map[symbol] = rates['close']
        print(symbol)
        print(close_price_map[symbol])
except Exception as e:
    print(e)
finally:
    mt.shutdown()
    
# EURUSD
# [1.12594 1.12598 1.12584 1.12564 1.12543]
# USDJPY
# [107.5   107.494 107.509 107.525 107.527]

Siehe Doku https://www.mql5.com/de/docs/integration/python_metatrader5

Documentation on MQL5: Integration / MetaTrader for Python
Documentation on MQL5: Integration / MetaTrader for Python
  • www.mql5.com
Python is a modern high-level programming language for developing scripts and applications. It contains multiple libraries for machine learning, process automation, as well as data analysis and visualization. MetaTrader package for Python is designed...
 
Ich versuche, dies für MT4 zu verwenden und es sagt"SocketClose Funktion nicht definiert" ... tun MQL5 Funktionen auch für MQL4 arbeiten? Ich sehe nichts auf die Dokumentation selbst. ist dies soll in MQL4 laufen? können Sie mir helfen, es herauszufinden, bitte?
 

gefunden wirklich große github

python metatrader api

[Gelöscht]  
sanazgolriz:
Ich versuche, dies für MT4 zu verwenden und es sagt"SocketClose Funktion nicht definiert" ... tun MQL5 Funktionen auch für MQL4 arbeiten? Ich sehe nichts auf der Dokumentation selbst. ist dies angeblich in MQL4 laufen? können Sie mir helfen, es herauszufinden, bitte?

Hallo, ich glaube, Socket-Funktionen funktionieren nicht in Metatrader4.

Sie können es in mt5 verwenden, Sie können auch das neue MetaTrader5-Paket verwenden (siehe Dokumentation)

für mt4 können Sie zeromq versuchen

Documentation on MQL5: Integration / MetaTrader for Python
Documentation on MQL5: Integration / MetaTrader for Python
  • www.mql5.com
Python is a modern high-level programming language for developing scripts and applications. It contains multiple libraries for machine learning, process automation, as well as data analysis and visualization. MetaTrader package for Python is designed...
 

Hallo, Maxim!

In einem anderen Thread hast du mir bei der Codeänderung geholfen, wofür ich dir noch einmal danken möchte. Ich habe die MQL5-Website durchsucht und Ihren Artikel über das Empfangen und Senden von Daten mit der Programmiersprache Python gefunden. Ich habe jedoch eine laienhafte, vielleicht sogar kindische Frage: Ist ein Netzwerksockel ein physisches Gerät oder ein Softwareprodukt in Form eines Satzes von mehreren Dateien oder einer einzigen Datei, z. B. der gleichen csv?

Mit freundlichen Grüßen, Vladimir.

[Gelöscht]  
MrBrooklin:

Hallo, Maxim!

In einem anderen Thread hast du mir bei der Codeänderung geholfen, wofür ich dir noch einmal danken möchte. Ich habe die MQL5-Website durchsucht und Ihren Artikel über das Empfangen und Senden von Daten mit der Programmiersprache Python gefunden. Ich habe jedoch eine laienhafte, vielleicht sogar kindische Frage: Ist ein Netzwerksockel ein physisches Gerät oder ein Softwareprodukt in Form eines Satzes von mehreren Dateien oder einer einzigen Datei, z. B. der gleichen csv?

Mit freundlichen Grüßen, Vladimir.

Es handelt sich um eine Software-Schnittstelle, über die Programme (Prozesse) Daten austauschen können. Wenn Sie zum Beispiel eine Website besuchen, greifen Sie auf den offenen Socket des Servers der Website zu. Das Gleiche kann innerhalb eines einzelnen PCs geschehen. Grob gesagt, ist ein Socket eine integrierte Funktion des Betriebssystems.

 
Maxim Dmitrievsky:

Dies ist eine Software-Schnittstelle, über die Programme (Prozesse) kommunizieren können. Wenn Sie zum Beispiel eine Website besuchen, greifen Sie auf den offenen Socket des Servers der Website zu. Dasselbe kann innerhalb eines einzelnen PCs geschehen. Grob gesagt, ist ein Socket eine integrierte Funktion des Betriebssystems.

Danke, Maxim!

Habe ich das Wesentliche deines Artikels richtig verstanden? Ich werde es in meine eigenen Worte fassen, und Sie können mich korrigieren, wenn ich etwas missverstanden habe.

  1. Nehmen wir an, dass sich auf meinem Computer einige Programme von Drittanbietern befinden, die in einer Programmiersprache erstellt wurden, die sich grundlegend von der MQL-Programmiersprache unterscheidet, ich diese Programme aber für meine Arbeit sehr gut brauche.
  2. Der in der Programmiersprache Python geschriebene Programmcode ermöglicht es mir, die Interaktion dieser Fremdprogramme zum Beispiel mit demselben MT5-Terminal zu verbinden.
  3. Programme von Drittanbietern von einem anderen Computer aus können die Arbeit des gleichen MT5-Terminals auf meinem Computer fernsteuern.

Ist das richtig? Ich werde später erklären, warum ich solche Fragen stelle.

Mit freundlichen Grüßen, Vladimir.

[Gelöscht]  
MrBrooklin:

Vielen Dank, Maxim!

Habe ich das Wesentliche Ihres Artikels richtig verstanden? Ich werde es in meinen eigenen Worten ausdrücken, und Sie können mich korrigieren, wenn ich etwas falsch verstanden habe.

  1. Nehmen wir an, dass sich auf meinem Computer einige Programme von Drittanbietern befinden, die in einer Programmiersprache erstellt wurden, die sich grundlegend von der MQL-Programmiersprache unterscheidet, ich diese Programme aber für meine Arbeit sehr gut brauche.
  2. Der in der Programmiersprache Python geschriebene Programmcode ermöglicht es mir, die Interaktion dieser Fremdprogramme zum Beispiel mit demselben MT5-Terminal zu verbinden.
  3. Programme von Drittanbietern können die Arbeit desselben MT5-Terminals aus der Ferne steuern.

Ist das richtig? Ich werde später erklären, warum ich solche Fragen stelle.

Mit freundlichen Grüßen, Vladimir.

Das hängt von der Aufgabe ab, es ist schwer zu sagen. Es ist besser, sie direkt zu "verlinken", wenn man Zugang zum Quellcode hat. Andernfalls, wenn es ein Programm, aber keinen Quellcode gibt und Sie es dringend brauchen, können Sie etwas durch Python-Skripte tun, ja, wo es möglich ist.
 
Maxim Dmitrievsky:
Das hängt von der Aufgabe ab, es ist schwer zu sagen. Besser ist es, sie direkt zu "verlinken", wenn man Zugang zum Quellcode hat. Andernfalls, wenn es zwar ein Programm, aber keinen Quellcode gibt und man ihn dringend braucht, kann man etwas über Python-Skripte machen, ja, wo das möglich ist.

Nun kommen wir zur eigentlichen Aufgabe. Es handelt sich nicht um eine technische Aufgabe, sondern um eine sehr kurze Darstellung ihres Wesens.

Sie müssen in regelmäßigen Abständen (z. B. einmal pro Stunde, einmal pro Tag, einmal pro Woche) verschiedene Daten von mehreren (nicht mehr als 10) Websites nehmen und komplexe Zwischenberechnungen in einem Drittanbieterprogramm (nicht MQL) durchführen. Das Ergebnis dieser Berechnungen sollen drei Signale für die Steuerung des MT5-Terminals sein: ein Signal zur Eröffnung eines Kaufauftrags, ein Signal zur Eröffnung eines Verkaufsauftrags oder ein Signal zur Schließung eines Auftrags.

Ist dies möglich? Ich muss dies wissen, um eine technische Aufgabe für die Freiberuflichkeit kompetent zu verfassen.

Mit freundlichen Grüßen, Vladimir.

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Свойства пользовательских индикаторов
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Свойства пользовательских индикаторов
  • www.mql5.com
Количество индикаторных буферов, которые можно использовать в пользовательском индикаторе, не ограничено. Но каждому массиву, который назначается в качестве индикаторного буфера с помощью функции SetIndexBuffer(), должен быть указан тип данных, которые он будет хранить. Это может быть одно из значений перечисления ENUM_INDEXBUFFER_TYPE...