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

 
Renat Fatkhullin:

Neue Version von MetaTrader 5 für Python 5.0.18 und MetaTrader 5 build 2319 beta:

  • MT5 Beta-Download über Hilfe -> Beta-Version prüfen
  • python-Bibliothek:

Da sich alle APIs geändert haben, funktionieren die alten Beispiele nicht mehr.

Hier ist der neue Funktionsumfang:

Beispiel:

Gibt es Pläne, Funktionen zum Ausführen von Tests/Optimierungen und zum Abrufen ihrer Ergebnisse hinzuzufügen?

 

Python-Programme werden im Terminal nur als Skripte ausgeführt und sind in keiner Weise am Handelsstrategietest beteiligt und nehmen auch nicht daran teil.

Dies ist eine Lösung für diejenigen, die tiefgreifende Forschung in Python betreiben und wollen:

  1. Zugang zu den Marktinformationen von MT5
  2. Zugang zum Geschäftsverlauf und zu offenen Positionen
  3. Handel

Strategietester nur für MQL5-Programme.

Später werden wir die Bibliothek erweitern und die Möglichkeit bieten, vom Terminal aus auf integrierte und benutzerdefinierte Indikatoren zuzugreifen.

 

Wie auch immer, die Situation ist im Moment wie folgt: Ich habe Windows 7 auf 3 Rechnern installiert.

Unterm Strich:333

Legen Sie es auf Windows Server 2012 - gestartet auf halbem Weg durch. Und sogar auf Python 3.8.1

 
Dmitri Custurov:

Wie auch immer, die Situation ist im Moment wie folgt: Ich habe Windows 7 auf 3 Rechnern installiert.

Unterm Strich:

Legen Sie es auf Windows Server 2012 - begann auf halbem Weg durch. Und sogar auf Python 3.8.1.

Zehn ist nicht zur Hand, aber ich denke, dort und beginnen.

 
Vorsichtshalber habe ich Visual Studio und die dazugehörigen Bibliotheken auf Seven installiert. Er springt nicht an. Die Rauchdosen sind weg. Sehr cooles Zeug. Ich habe bereits mit Java begonnen.
 

Bei 10 ist es wieder 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. das bisherige Problem bleibt bestehen. Bei der Initialisierung startet das Terminal mit einem beliebigen Broker und einem beliebigen Konto. Wurde nicht versprochen, es zu reparieren?

2) Die Aufträge werden ausgeführt. Ich habe es nicht weiter überprüft.

Ich verstehe nicht, warum das Modul "metatrader5 5.0.18 pypi_0 pypi" nur als "MetaTrader5" importiert wird .

Wir werden es versuchen.

Viel Glück!

 
Renat Fatkhullin:

Python-Programme werden im Terminal nur als Skripte ausgeführt und sind in keiner Weise am Handelsstrategietest beteiligt und nehmen auch nicht daran teil.

Dies ist eine Lösung für diejenigen, die tiefgreifende Forschung in Python betreiben und wollen:

  1. Zugang zu den Marktinformationen von MT5
  2. Zugang zum Geschäftsverlauf und zu offenen Positionen
  3. Handel

Strategietester nur für MQL5-Programme.

Später werden wir die Bibliothek erweitern, um den Zugriff auf integrierte und benutzerdefinierte Indikatoren über das Terminal zu ermöglichen.

Das Starten von Python-Skripten selbst zur Optimierung ist nicht so interessant.

Die Möglichkeit, die Optimierung von mql5-advisors durch Python-Skripte zu automatisieren, ist interessant. So wie in dem Artikel"Optimierungsmanagement" beschrieben.

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

Python-Programme werden im Terminal nur als Skripte ausgeführt und sind in keiner Weise am Handelsstrategietest beteiligt und nehmen auch nicht daran teil.

Dies ist eine Lösung für diejenigen, die tiefgreifende Forschung in Python betreiben und wollen:

  1. Zugang zu den Marktinformationen von MT5
  2. Zugang zum Geschäftsverlauf und zu offenen Positionen
  3. Handel

Strategietester nur für MQL5-Programme.

Später werden wir die Bibliothek erweitern und die Möglichkeit bieten, vom Terminal aus auf integrierte und benutzerdefinierte Indikatoren zuzugreifen.

Verstehe ich das richtig, dass es für die Übertragung von berechneten Werten und Arrays von Py zu mt5 keine solchen Funktionen gibt?
Und es bleibt zu verwenden - Netzwerk-Lösungen, oder das Modul auf die Übertragung durch den Speicher zu sägen?

Wie ich festgestellt habe, hat sich die Struktur der Objekte geändert
es war einmal

Time  = [x.time for x in ticks]

werden nun

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

Können Sie die Strukturen für copy_ticks und copy_rates beschreiben?
Welche x[]-Indizes entsprechen was.

Oder ist es die gleiche Reihenfolge? wie in

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:

Wie ich festgestellt habe, hat sich die Struktur der Objekte nun geändert

war früher

jetzt ist es so.

Können Sie die Strukturen für copy_ticks und copy_rates beschreiben?
Welche x[]-Indizes entsprechen was.

Oder ist es die gleiche Reihenfolge? wie in

Es handelt sich jetzt um ein Numpy-Array und nicht mehr um ein Tupel (d.h. eine direkte Abbildung der Daten in den Speicher), und sein Format kann einfach durch Anzeigen erkannt werden:

>>> 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')])

können Sie diese nun sofort als getrennte Vektoren erhalten (multiplizieren, subtrahieren) und Diagramme zeichnen:

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:

Es handelt sich jetzt um ein Numpy-Array und nicht mehr um ein Tupel (d.h. eine direkte Abbildung der Daten in den Speicher), und sein Format kann einfach durch Anzeigen erkannt werden:

können Sie sie jetzt sofort als separate Vektoren (multiplizieren, subtrahieren) erhalten und Diagramme zeichnen:

Danke, Almaz, jetzt verstehe ich.

Es bleibt eine offene Frage:
Verstehe ich das richtig, dass es für die Übertragung von berechneten Werten und Arrays von Py zu mt5 keine solchen Funktionen gibt?
Und es bleibt zu verwenden - Netzwerk-Lösungen, oder das Modul auf die Übertragung durch den Speicher zu sägen?

Grund der Beschwerde: