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

 
Vladimir Perervenko:

Ist die Schaffung einer Entität (Verbindung) prinzipiell möglich? Ich glaube nicht, dass es so notwendig ist, aber für die Zukunft.

Wenn Sie ein anderes Skript (Py) auf dem Diagramm installieren, wird das erste Skript zurückgesetzt. Ist das der richtige Weg?

Ich glaube nicht, dass es schwierig wäre, eine weitere Entität zu schaffen, es wäre nur eine weitere Abstraktionsebene für die Lib.

Dies wird nicht mehr als Verwendung der Lib vom Terminal aus betrachtet, sondern als ein vollwertiges Gateway zu Terminals auf der Python-Seite.

Es ist besser, jetzt mehr Nutzen in die Lib selbst zu stecken :).

 
Дмитрий Прокопьев:

Ich glaube nicht, dass es schwierig wäre, eine weitere Entität zu schaffen, es wäre nur eine weitere Abstraktionsebene für die Lib.

Dies wird nicht mehr als Verwendung der Lib vom Terminal aus betrachtet, sondern als ein vollwertiges Gateway zu Terminals auf der Python-Seite.

Es ist besser, jetzt mehr Nutzen in die Lib selbst zu stecken :).

Der Start meines Terminals schlägt regelmäßig fehl, ohne dass ich den Grund dafür herausgefunden habe. Ich muss irgendwo einen Fehler in der Python-Installation haben... Ich werde lib als Gateway zum Terminal (über Dienste) verwenden. Ich werde es am Montag ausprobieren.

 
Дмитрий Прокопьев:

mt5.initialize(blabla, portable=True)- hat nicht viel geholfen, es fragt immer noch nach dem zuletzt gestarteten Terminal im System.

Versuchen Sie es ohne benannten Parameter path, übergeben Sie path als ersten unbenannten Parameter:

if mt5.initialize('/works/MT5-1', login=11111, ...):
        ...   
        mt5.shutdown()
else:
   print('error')

if mt5.initialize('/works/MT5-2', login=2222, ...):
        ...   
        mt5.shutdown()
else:
   print('error')
 
Almaz:

ohne benannten Parameter path versuchen , Pfad als ersten unbenannten Parameter übergeben:

Es hat korrekt funktioniert. Ich danke Ihnen.

Wanze?

 
Дмитрий Прокопьев:

Alles funktionierte einwandfrei. Vielen Dank.

Ein Fehler?

Kein Fehler.

Der erste Parameter wird nicht genannt und ist fest. Sie wird aber in der nächsten Version vorsichtshalber genannt werden.

 
Renat Fatkhullin:

Kein Fehler.

Der erste Parameter ist unbenannt und fest. Aber für alle Fälle wird er in der nächsten Version genannt werden.

Aha, ich habe die Dokumentation also nicht richtig verstanden.

Ich danke Ihnen.

 
Wir brauchen wirklich etwas, um den "Beginn einer neuen Bar" aus dem Terminal zu bekommen. Indikatoren sind nicht so wichtig. Python verfügt ebenfalls über eine Bibliothek zur Berechnung von Indikatoren.
 

Frage. Es gibt eine Funktion positions_get. In der Dokumentation werden drei Betriebsarten des Systems beschrieben.

Positionen_holen

Ruft offene Positionen mit Filterung nach Symbol oder Ticket ab. Sie kann auf 3 verschiedene Arten aufgerufen werden.


Wird ohne Parameter aufgerufen. Gibt die offenen Positionen für alle Symbole zurück.

positions_get()

Aufruf mit Angabe eines Symbols, für das er offene Positionen abrufen möchte.

positions_get(

symbol="SYMBOL" // Name des Symbols

)

Aufruf mit Angabe des Tickets der Position.

positions_get(

ticket=TICKET // ticket

)

Parameter

symbol="SYMBOL" [in] Der Name des Symbols. Optionaler benannter Parameter. Wenn ein Symbol angegeben ist, wird der Parameter ticket ignoriert.

ticket=TICKET [in] Das Positionsticket (POSITION_TICKET). Optionaler benannter Parameter.


Variant positions_get() - keine Fragen, funktioniert einwandfrei.

Aber die beiden anderen geben nichts zurück.

	 pos_info = mt5.positions_get(symbol = "GBPUSD")	
	 print(mt5.last_error())

Die zweite Rückrufvariante:

        result = mt5.order_send(request)        
        if result.retcode == 0 or result.retcode == 10009:      
                pos_info = mt5.positions_get(ticket = result.order)
                print("mt5.last_error(): %s" % (mt5.last_error()))

last_error liefert ebenfalls ein seltsames Konstrukt:

2020-03-09 22:25:41 [DEBUG][module: processing.py] add_position: Possition open - OK! MqlTradeResult: {
    "retcode": 10009,
    "deal": 134756209,
    "order": 161108536,
    "volume": 0.01,
    "price": 1.31089,
    "bid": 1.31066,
    "ask": 1.31089,
    "comment": "Request executed",
    "request_id": 98,
    "retcode_external": 0
}
mt5.last_error(): [1, '']

Wo soll man suchen? Was ist los?

 
Дмитрий Прокопьев:

Ein Anruf mit einem Positionsticket.

positions_get(

ticket=TICKET //ticket

)

Parameter

symbol="SYMBOL" [in] Der Name des Symbols. Optionaler benannter Parameter. Wenn ein Symbol angegeben ist, wird der Parameter ticket ignoriert.

ticket=TICKET [in] Das Positionsticket (POSITION_TICKET). Optionaler benannter Parameter.


Variant positions_get() - keine Fragen, funktioniert einwandfrei.

Aber die beiden anderen geben nichts zurück.

Die zweite Aufrufvariante:

last_error liefert ebenfalls ein seltsames Konstrukt:

2020-03-09 22:25:41 [DEBUG][module: processing.py] add_position: Possition open - OK! MqlTradeResult: {
    "retcode": 10009,
    "deal": 134756209,
    "order": 161108536,
    "volume": 0.01,
    "price": 1.31089,
    "bid": 1.31066,
    "ask": 1.31089,
    "comment": "Request executed",
    "request_id": 98,
    "retcode_external": 0
}
mt5.last_error(): [1, '']

Worauf ist zu achten? Was ist los?

Prüfen Sie, ob es sich bei Ihrem Konto um ein Netting- oder Hedging-Konto handelt. Beim Netting ändert sich das Ticket einer bereits bestehenden Position nicht, und es macht keinen Sinn, nach dem Aufstocken anhand der Auftragsnummer nach einer Position zu suchen.

 

last_error тоже возвращает странную конструкцию:

Fehlercode 1, dies ist Erfolg mt5.RES_S_OK, der nächste Build wird [1, 'Erfolg'] schreiben. Codes mit negativen Werten sind Fehler mt5.RES_E_xxx.
Grund der Beschwerde: