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

 
Renat Fatkhullin:

Nuova versione di MetaTrader 5 per Python 5.0.18 e MetaTrader 5 build 2319 beta:

  • Scarica MT5 beta tramite Aiuto -> Controlla la versione beta
  • libreria python:

Poiché tutte le api sono cambiate, i vecchi esempi non funzionano più.

Ecco il nuovo set di funzioni:

Esempio:

Ci sono piani per aggiungere funzioni per eseguire test/ottimizzazioni e ottenere i loro risultati?

 

I programmi Python verranno eseguiti nel terminale solo come script e non sono coinvolti in alcun modo e non parteciperanno al tester della strategia di trading.

Questa è una soluzione per coloro che stanno facendo ricerche approfondite in Python e vogliono:

  1. accesso alle informazioni di mercato da MT5
  2. accesso alla storia delle transazioni e alle posizioni aperte
  3. commercio

Strategy Tester solo per programmi MQL5.

Più tardi espanderemo la libreria e daremo la possibilità di accedere a indicatori integrati e personalizzati dal terminale.

 

Comunque, la situazione al momento è la seguente: ho installato windows 7 su 3 macchine.

Linea di fondo:333

Messo su windows server 2012 - iniziato a metà strada. E anche su python 3.8.1

 
Dmitri Custurov:

Comunque, la situazione al momento è la seguente: ho installato windows 7 su 3 macchine.

Linea di fondo:

Messo su windows server 2012 - iniziato a metà strada. E anche su python 3.8.1.

Dieci non è a portata di mano, ma penso che ci e iniziare.

 
Per sicurezza, ho installato visual studio e le librerie con esso su seven. Non parte. Andato a fumare le prese di corrente. Una cosa molto bella. L'ho già iniziato su Java.
 

Al 10, si torna alla normalità.

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. Il problema precedente rimane. Durante l'inizializzazione il terminale inizia con un broker e un conto arbitrari. Non era stato promesso di ripararlo?

2) Gli ordini vengono eseguiti. Non ho controllato ulteriormente.

Non capisco perché il modulo "metatrader5 5.0.18 pypi_0 pypi" è importato solo come "MetaTrader5".

Ci proveremo.

Buona fortuna

 
Renat Fatkhullin:

I programmi Python verranno eseguiti nel terminale solo come script e non sono coinvolti in alcun modo e non parteciperanno al tester della strategia di trading.

Questa è una soluzione per coloro che stanno facendo ricerche approfondite in Python e vogliono:

  1. accesso alle informazioni di mercato da MT5
  2. accesso alla storia delle transazioni e alle posizioni aperte
  3. commercio

Strategy Tester solo per programmi MQL5.

Più tardi espanderemo la libreria per permettere l'accesso agli indicatori incorporati e personalizzati dal terminale.

Lanciare gli stessi script Python per l'ottimizzazione non è così interessante.

La possibilità di automatizzare l'ottimizzazione di mql5-advisors attraverso script Python è interessante. Qualcosa di simile a quello descritto nell'articolo"Gestione dell'ottimizzazione".

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

I programmi Python verranno eseguiti nel terminale solo come script e non sono coinvolti in alcun modo e non parteciperanno al tester della strategia di trading.

Questa è una soluzione per coloro che stanno facendo ricerche approfondite in Python e vogliono:

  1. accesso alle informazioni di mercato da MT5
  2. accesso alla storia delle transazioni e alle posizioni aperte
  3. commercio

Strategy Tester solo per programmi MQL5.

Più tardi espanderemo la libreria e daremo la possibilità di accedere a indicatori integrati e personalizzati dal terminale.

Ho capito bene che per trasferire valori calcolati e array da Py a mt5, non ci saranno queste funzioni?
E rimane da usare - soluzioni di rete, o segare il modulo sul trasferimento attraverso la memoria?

Come ho notato, ora la struttura degli oggetti è cambiata
era solito essere

Time  = [x.time for x in ticks]

ora diventano

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

Potresti descrivere le strutture per copy_ticks e copy_rates?
Quali indici x[] corrispondono a cosa.

O è la stessa sequenza? come 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:

Come ho notato, la struttura degli oggetti è ora cambiata

usato per essere

ora lo è.

Potresti descrivere le strutture per copy_ticks e copy_rates?
Quali indici x[] corrispondono a cosa.

O è la stessa sequenza? come in

Ora è un array numpy, non una tupla come era prima (cioè un'effettiva mappatura diretta in memoria dei dati stessi), il suo formato può essere visto semplicemente visualizzandolo:

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

ora potete immediatamente de ottenerli come vettori separati (moltiplicare, sottrarre) e disegnare i grafici:

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:

Ora è un array numpy, non una tupla come era prima (cioè un'effettiva mappatura diretta in memoria dei dati stessi), il suo formato può essere visto semplicemente visualizzandolo:

è possibile ottenerli immediatamente come vettori separati (moltiplicare, sottrarre) e disegnare grafici:

Grazie Almaz, ora capisco.

C'è ancora una questione aperta:
Ho capito bene che per trasferire valori calcolati e array da Py a mt5, non ci saranno queste funzioni?
E rimane da usare - soluzioni di rete, o segare il modulo sul trasferimento attraverso la memoria?