MetaTrader 5 Python User Group - Come usare Python in Metatrader - pagina 15

 
Maxim Dmitrievsky:

un comando e una lista di parametri possono essere passati come una stringa, separati da separatori. Quando l'Expert Advisor decomprime il messaggio, capirà cosa fare


Il comando OrderSend ?

Quale dovrebbe essere il formato della stringa? stringa? Nell'esempio del socket, la stringa dal socket mql5 viene passataa result: socketreceive(int sock,int timeout)...result+=CharArrayToString(rsp,0,rsp_len);.restituire il risultato;

 
slukin:

Comando OrderSend ?

Quale dovrebbe essere il formato della stringa? stringa? Nell'esempio del socket, la stringa dal client socket mql5 viene passataa result: socketreceive(int sock,int timeout)...result+=CharArrayToString(rsp,0,rsp_len);.restituire il risultato;

non OrderSend() ma solo una stringa contenente i primi 3 caratteri, ad esempio "BUY", seguita da una lista di argomenti: lot, take, sl. L'Expert Advisor legge la stringa, vede le prime 3 lettere buy e forma una richiesta Trog

cioè, basta progettare un semplice protocollo di scambio tra applicazioni, in forma libera
 
Maxim Dmitrievsky:

Non OrderSend(), ma solo una stringa con i primi 3 caratteri, per esempio "BUY", e poi una lista di argomenti: lot, take, sl. L'Expert Advisor legge la stringa, vede che le prime 3 lettere sono buy e forma una richiesta trog

Cioè, basta pensare a un semplice protocollo di scambio tra applicazioni, in forma libera


Un esempio da uno sviluppatore esperto sarebbe molto utile.

 
Roffild:

Ho già collegato un Python completo al terminale, e tu stai ancora usando socket e pipe lente per fare lo scambio.

Se non è troppo difficile, quanto dura un singolo test in qualsiasi momento?

Significa che siamo interessati a chiedere quanto è lungo il tempo di ottimizzazione nel tester e se sono possibili calcoli errati?

Nei commenti precedenti avete scritto che ho bisogno di qualche conoscenza di base in JAVA per capirlo.

Conosco anche un po' di C# e Python, so programmare in MQL4,5, posso padroneggiare le vostre librerie piuttosto facilmente, quanto possono essere più difficili?

 
slukin:

Un esempio da uno sviluppatore esperto sarebbe molto utile.

Non c'è tempo per spiegare, a meno che non ci sia un articolo più tardi, con esempi

 
forexman77:

Se non è difficile scrivere quanto tempo richiede un singolo test in qualsiasi periodo di tempo?

Cioè, sono interessato alla questione di quanto tempo l'ottimizzazione nel tester e se ci sono calcoli errati?

Nei commenti precedenti avete scritto che ho bisogno di qualche conoscenza di base in JAVA per capirlo.

Conosco un po' di C# e Python, posso programmare in MQL4,5, posso padroneggiare le vostre librerie piuttosto facilmente, quanto possono essere più difficili?

L'ottimizzazione nello Strategy Tester è la stessa del solito. I calcoli errati dovuti a dati corrotti durante il trasferimento a Python e ritorno sono esclusi, perché il trasferimento avviene tramite la RAM, e non tramite socket o file instabili.

Sì, ho messo nella mia libreria codice in MQL, Java e Python. Ma non dovete usare Java se non avete bisogno di Apache Spark ecc.

 

MetaTrader 5 build 2055 beta: integrazione con Python, portata simile al C++ e massicci miglioramenti nello strategy tester

Terminal: Добавлено API для запроса данных из терминала MetaTrader 5 через приложения, использующие язык Python

Python è un linguaggio di programmazione moderno e di alto livello per sviluppare script e applicazioni. Contiene molte librerie per l'apprendimento automatico, l'automazione dei processi, l'analisi dei dati e la visualizzazione.

Ilpacchetto MetaTrader per Python è progettato per ottenere facilmente e velocemente i dati di scambio tramite comunicazione interprocesso direttamente dal terminale MetaTrader 5. I dati così ottenuti possono essere ulteriormente utilizzati per calcoli statistici e per l'apprendimento automatico.



Connessione

  1. Scarica l'ultima versione di Python dahttps://www.python.org/downloads/windows
  2. Quando si installa Python si spunta la casella "Add Python X.X to PATH%", in modo da poter eseguire script in Python dalla riga di comando.
  3. Installare il modulo MetaTrader 5 dalla linea di comando
    pip install MetaTrader5
  4. Aggiungere i pacchetti matplotlib e pytz
    pip install matplotlib
    pip install pytz

Funzioni

  • MT5Initialize- stabilisce la connessione al terminale MetaTrader 5
  • MT5Shutdown- chiude la connessione precedentemente stabilita al terminale MetaTrader 5
  • MT5TerminalInfo- riceve lo stato e i parametri del terminale MetaTrader 5 collegato
  • MT5Version- restituisce la versione del terminale MetaTrader 5
  • MT5WaitForTerminal- attende che il terminale MetaTrader 5 si connetta al server di trading
  • MT5CopyRatesFrom- riceve le barre dal terminale MetaTrader 5 dalla data specificata
  • MT5CopyRatesFromPos- riceve le barre dal terminale MetaTrader 5 a partire dall'indice specificato
  • MT5CopyRatesRange- riceve le barre nell'intervallo di date specificato dal terminale MetaTrader 5
  • MT5CopyTicksFrom- riceve i tick dal terminale MetaTrader 5 a partire dalla data specificata
  • MT5CopyTicksRange- riceve i tick per l'intervallo di date specificato dal terminale MetaTrader 5
Welcome to Python.org
Welcome to Python.org
  • 2019.05.15
  • www.python.org
The official home of the Python Programming Language
 

Quindi? Qualcuno sta lavorando in questa direzione? Non sembra entusiasta.

Buona fortuna

 
Vladimir Perervenko:

Quindi? Qualcuno sta lavorando in questa direzione? Non sembra entusiasta.

Buona fortuna

Non in questo. E uso python per i test NS.
 
Roffild:

L'ottimizzazione nel tester è come al solito. I calcoli errati dovuti alla corruzione dei dati durante il trasferimento da e verso Python sono esclusi, perché il trasferimento avviene tramite RAM, non tramite socket o file instabili.

Sì, ho messo nella mia libreria codice in MQL, Java e Python. Ma non dovete usare Java se non avete bisogno di Apache Spark ecc.

Sono d'accordo che è più veloce tramite la memoria, ma non sono d'accordo che le prese o i pip non siano stabili, e la folle velocità della memoria quando si organizza un connettore non è necessaria perché c'è la latenza scambio <--- (server intermedio è possibile) ---> terminale, per cui anche centinaia di prese consecutive all'interno di una macchina sono eccessivamente sufficienti...