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

 
Almaz:

In 5.0.29 hinzugefügt symbols_total(), symbols_get([group="EURUSD, "USDGBP", *RU*"]), erfordert die neueste Beta-Version des Terminals zu arbeiten.

Auch in allen Funktionen orders_get(), positions_get(), history_orders_get(), history_deals_get() wurde die Filterung nach Gruppe hinzugefügt - group="EURUSD, "USDGBP", *RU*".
Die Methoden order_check(), order_send() geben die ursprüngliche Anfrage zur Ausführung in das Feld request zurück.

Ich danke Ihnen.

 
Roman:

Was genau meinen Sie damit? Kopieren eines Arrays von mql5 nach py und zurück?
Sie sollten zumindest genau lesen, worüber wir sprechen.
Und was notwendig ist oder nicht, sollten Sie nicht nur für sich selbst denken. Wenn Sie es nicht brauchen, tun es andere.

Nur so aus Interesse: Welche Datensätze wollen Sie von MT übertragen?

Die Entwickler haben bereits mehrfach erklärt, dass sie nichts auf MT übertragen werden. Dafür müssen Sie andere Funktionen verwenden.

 
Vladimir Perervenko:

Nur so aus Interesse: Welche Datensätze wollen Sie von MT übertragen?

Die Entwickler haben bereits mehrfach erklärt, dass sie nichts auf MT übertragen werden. Dazu müssen Sie andere Funktionen verwenden.

Ja, alle, ihre eigenen berechneten Felder.
Ich baue ausschließlich Kunststoffe, und die Möglichkeit, Arrays in beide Richtungen zu übertragen, fehlt mir sehr.
Es ist klar, dass Sie PyAPI verwenden können, aber es ist wieder Bindung an dll.
Und wenn Sie PyAPI verwenden, brauchen Sie diese Integrationsbibliothek überhaupt nicht mehr.

 
Roman:

Ja, Ihre eigenen berechneten Arrays.
Ich baue ausschließlich Kunststoffe, und die Möglichkeit, Arrays in beide Richtungen zu übertragen, fehlt mir sehr.
Es ist klar, dass Sie PyAPI verwenden können, aber es ist wieder Bindung an eine DLL.
Und wenn Sie PyAPI verwenden, brauchen Sie diese Integrationsbibliothek überhaupt nicht mehr.

Ich glaube nicht, dass ich einen Vortrag halten will. Sie berechnen die Synthetik auf der Grundlage der Notierungen des Terminals. Geben Sie die Anführungszeichen in Python ein und führen Sie alle Berechnungen in Python durch.

Aber Sie müssen mit der umgekehrten Übertragung von Arrays herumturnen. Der einfachste Weg führt über die Datenbank.

Oder verwenden Sie dies. Irgendwo gab es einen kleinen Thread zu diesem Projekt. Oder dies.

In jedem Fall wird diese Integration nicht alle Wünsche der Händler erfüllen. Aber es löst zwei große und wichtige Probleme: die Beschaffung von schnellen Angeboten und die Verwaltung des Handels.

Alles andere ist auf sich allein gestellt und verfügt über eine eigene Infrastruktur.

Viel Glück!

khramkov/MQL5-JSON-API
khramkov/MQL5-JSON-API
  • khramkov
  • github.com
<a href="#metaquotes-mql5
 
Vladimir Perervenko:

Ich glaube nicht, dass ich einen Vortrag halten will. Sie berechnen die Synthetik auf der Grundlage der Notierungen des Terminals. Geben Sie die Anführungszeichen in Python ein und führen Sie alle Berechnungen in Python durch.

Aber Sie müssen mit der umgekehrten Übertragung von Arrays herumturnen. Der einfachste Weg führt über die Datenbank.

Oder verwenden Sie dies. Irgendwo gab es einen kleinen Thread zu diesem Projekt. Oder dies.

In jedem Fall wird diese Integration nicht alle Wünsche der Händler erfüllen. Aber es löst zwei grundlegende und sehr wichtige Probleme: schnelle Angebote und Verwaltung des Handels.

Alles andere ist auf sich allein gestellt und verfügt über eine eigene Infrastruktur.

Viel Glück!

Das ist es, was ich meine, unabhängig von der Implementierung, über DLL oder Datenbank, Sockets oder sogar Textdateien usw.
Aber auch hier handelt es sich um eine zusätzliche Krücke, die nichts mit der Bibliothek zu tun hat.
Der Punkt ist, dass wir jetzt aktiv entwickeln Integration mt5 Bibliothek, so ist es wünschenswert, alle notwendigen Funktionen für die Nutzer in ihr von Anfang an bieten.

 
Dmitry Prokopyev:

Danke, dieses Beispiel habe ich gesehen, es funktioniert.

Mir geht es um etwas anderes.


positions_get - die Liste der TradePosition wird an mich zurückgegeben. Im Prinzip kann man Pandas einbauen und gut arbeiten.

Aber alles ist nicht auf einen Panda beschränkt, und wenn Sie etwas wie:

Sie müssen irgendwie komponieren, Pandas oder für... irgendwie eine Menge zusätzlicher Körperbewegungen.

Mit _asdict () ist es viel bequemer geworden, wenn derjenige, der schreibt, kein MQL5-Prog ist, sondern, sagen wir, ein Pythonist ... oder ein Datennetzbetreiber, dann ist list / dict

Die grundlegenden Elemente von Python, viele bauen eine Datenübertragung auf Liste / dict.

Tupel werden zu oft und viel verwendet, aber nur, wenn Sie die Datentypen, die sich darin bewegen, genau kontrollieren müssen.

und auch einen Fehler-Handler aufhängen, wenn er nicht richtig verwendet oder zugewiesen wird. Nun, irgendwo ... :) Ich könnte mich irren.

Sie könnten stattdessen ein einfaches Listenverständnis verwenden, wenn Sie Ihre Variable zuweisen.

positions = [p._asdict() for p in mt5.positions_get()]
 
nicholi shen:

Sie könnten stattdessen ein einfaches Listenverständnis verwenden, wenn Sie Ihre Variable zuweisen.

das ändert nichts an der Essenz ... dies ist ein zusätzlicher Zyklus

 

Meine Herren, die Jungs im nächsten Thread stellen Fragen über die Libs:

URL:https://www.mql5.com/en/forum/306742/page11#comment_15595095

Können Sie uns unterstützen?


Die Funktion symbols_get sollte einen Generator von SymbolInfo namens tuples zurückgeben. Ein Aufruf von symbols_get ohne args sollte alle im Terminal verfügbaren Symbole zurückgeben. Die Funktion sollte einen Rückruf erhalten, der in einem SymbolInfo-Namensdoppel übergeben wird, das mit der Filterfunktion verarbeitet wird. Hier sind einige Beispiele.

import MetaTrader5 as mt5
from contextlib import contextmanager
import re


@contextmanager
def metatrader_connection(**kw):
    try:
        if not mt5.initialize(**kw):
            print("Failed to initialize python MT5")
            raise Exception
        yield
    finally:
        mt5.shutdown()


def symbols_get(function=None):
    """
    No function passed in will result in all symbols returned to the caller.
    If a callable function is passed in then the function is passed a SymbolInfo tuple for filtering
    :param function: callback function to filter the symbols
    """
    all_symbols_in_terminal_info = map(
        mt5.symbol_info,
        ['EURUSD', 'USDJPY', 'GBPJPY', 'EURGBP'] # *example only* this would represent all symbols available to the terminal
    )
    if function is not None:
        return filter(function, all_symbols_in_terminal_info)
    return all_symbols_in_terminal_info


if __name__ == "__main__":
    with metatrader_connection():
        all_terminal_symbols = symbols_get()
        jpy_symbols = symbols_get(lambda s: "JPY" in s.name)
        jpy_symbols_using_re = symbols_get(lambda s: re.match(r'\w*JPY\w*', s.name))
        visible_symbols = symbols_get(lambda s: s.visible)
        selected_symbols = symbols_get(lambda s: s.select)


        def my_criteria(symbol_info):
            return 'USD' in symbol_info.name and symbol_info.session_deals > 0


        usd_symbols_with_session_deals = symbols_get(my_criteria)
 

Guten Abend, könnten Sie mich bitte beraten, ich verstehe, dass dieser Konnektor nicht in der Lage ist, Informationen von angeschlossenen Indikatoren zu übernehmen?

Beispiel:

int  iMA(
   string              symbol,        // имя символа
   ENUM_TIMEFRAMES      period,        // период
   int                 ma_period,    // период усреднения
   int                 ma_shift,     // смещение индикатора по горизонтали
   ENUM_MA_METHOD       ma_method,    // тип сглаживания
   ENUM_APPLIED_PRICE   applied_price  // тип цены или handle
   );
 
9805244:

Guten Abend, könnten Sie mich bitte beraten, ich verstehe, dass dieser Konnektor nicht in der Lage ist, Informationen von angeschlossenen Indikatoren zu übernehmen?

Beispiel:

Wozu brauchen Sie es? Kann man das nicht in Python berechnen? Sie überraschen mich.