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

 
Roman:

@Almaz
La prima volta che le funzioni copy_xxx_xxx vengono eseguite, quando il terminale non è stato avviato per qualche tempo, le funzioni
restituiscono immediatamente il risultato disponibile con la storia mancante, senza aspettare la sincronizzazione dello swap della storia.
Significa che la prima chiamata di funzione restituisce il risultato con la storia mancante.
Solo le chiamate successive restituiranno il risultato corretto, quando la storia viene scambiata.
È possibile risolvere questo problema? E le funzioni copy_xxx_xxx aspettano che la storia sia scambiata alla prima chiamata.

copy_ticks o copy_rates? Qual è la build del terminale?

 
Roman:

@Almaz
La prima volta che le funzioni copy_xxx_xxx vengono eseguite, quando il terminale non è stato avviato per qualche tempo, le funzioni
restituiscono immediatamente il risultato disponibile con la storia mancante, senza aspettare la sincronizzazione dello swap della storia.
Significa che la prima chiamata di funzione restituisce il risultato con la storia mancante.
Solo le chiamate successive restituiranno il risultato corretto, quando la storia viene scambiata.
È possibile risolvere questo problema? E le funzioni copy_xxx_xxx aspetteranno che la storia sia scambiata alla prima chiamata.

Leggi Organizzare l'accesso ai dati, la libreria Python non ha niente a che fare con questo. Questo è un comportamento standard, è necessario gestire tali situazioni e richiedere nuovamente la cronologia dopo che il terminale l'ha scambiata.

Questa è una cosa una tantum, quindi non è critica. Potete sempre tenere aggiornata la cronologia esistente se lavorate sempre con il terminale da uno script.

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Прежде чем ценовые данные будут доступны в терминале MetaTrader 5, их необходимо получить и обработать. Для получения данных требуется подключение к торговому серверу MetaTrader 5. Данные поступают с сервера по запросу терминала в виде экономно упакованных блоков минутных баров. Механизм обращения к серверу за данными не зависит от того, каким...
 
Almaz:

copy_ticks o copy_rates? Quale build del terminale?

Ho usato copy_rates, ma penso che copy_ticks sarà lo stesso, ma non ho controllato.
Costruire 2470

 
Rashid Umarov:

Leggi Organizzare l'accesso ai dati, non ha niente a che fare con la libreria Python. Questo è un comportamento standard, è necessario gestire tali situazioni e richiedere nuovamente la cronologia dopo che il terminale la rimbalza.

Questa è una cosa una tantum, quindi non è critica. È possibile mantenere sempre aggiornata la cronologia esistente se si lavora sempre con il terminale dallo script.

Ho letto questa sezione, è relativa a Mql5.
O state insinuando che è necessario organizzareCheckLoadHistory allo stesso modo?
Perché non introdurre questa funzione come standard? Per la libreria Mql e Py.

E in generale è strano che si permetta alla funzione Copy di ricevere dati errati, senza aspettare che la storia venga scambiata e dare il risultato.
 
Roman:

Ho letto questa sezione, si riferisce a Mql5.
O state insinuando che è necessario organizzareCheckLoadHistory allo stesso modo?
Perché non introdurre questa funzione come standard? Per la libreria Mql e Py.

E in generale è strano che si permettano dati errati nella funzione Copy, senza aspettare lo swap della storia e dare il risultato.

Se lavorate in MQL5, le domande nella sezioneOrganizzare l'accesso ai dati non sono così speciali. Abbiamo studiato questa sezione in lungo e in largo. E noi lo usiamo.

Perché pensi che dovrebbe essere diverso per Python?

Dopo tutto il nucleo principale è MQL5 e bisogna conoscerlo. E solo dopo è necessario applicare il pitone.

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Прежде чем ценовые данные будут доступны в терминале MetaTrader 5, их необходимо получить и обработать. Для получения данных требуется подключение к торговому серверу MetaTrader 5. Данные поступают с сервера по запросу терминала в виде экономно упакованных блоков минутных баров. Механизм обращения к серверу за данными не зависит от того, каким...
 
Roman:

Ho letto questa sezione, si riferisce a Mql5.
O state insinuando che è necessario organizzareCheckLoadHistory allo stesso modo?
Perché non introdurre questa funzione come standard? Per la libreria Mql e Py.

E in generale è strano che permettiate dati errati nella funzione Copy e non aspettiate che la storia sia caricata e restituite il risultato.

La libreria Python permette di richiedere dati dal terminale MetaTrader 5 sulla base generale, indipendentemente dal modo in cui è stato richiesto - manualmente, tramite MQL5 o utilizzando lo script di Python.

Lo sviluppatore di programmi MQL5 e di script Python è responsabile della logica e dell'organizzazione del lavoro con i dati.

 

Pomeriggio

C'è un'opzione per connettersi al terminale tramite PowerShell? se qualcuno sa come, sarei grato per le informazioni

Nessuna esperienza con python, quindi vorrei usare quello che conosco meglio))

 

Buona giornata!

Ho collegato le librerie, python sta comunicando con Mt5, sto ottenendo informazioni sul conto, ma le quotazioni non vengono caricate in alcun modo. Puoi aiutarmi?

Python versione 3.7.6


from datetime import datetime
import MetaTrader5 as mt5

# выведем информацию о версии MetaTrader 5
print(mt5.version())

# установим подключение к терминалу MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()

# подключимся к торговому счету без указания пароля и сервера
account=17245465
authorized=mt5.login(account)  # пароль будет взят из базы терминала, если указано помнить данные для подключения
if authorized:
    # выведем данные о торговом счете как есть
    print(mt5.account_info())
    # выведем данные о торговом счете в виде списка
    print("Show account_info()._asdict():")
    account_info_dict = mt5.account_info()._asdict()
    for prop in account_info_dict:
        print("  {}={}".format(prop, account_info_dict[prop]))
else:
    print("failed to connect at account #{}, error code: {}".format(account, mt5.last_error()))

# запросим статус и параметры подключения
print(mt5.terminal_info())

# получим информацию о версии MetaTrader 5
print(mt5.version())

x= mt5.symbols_total()
print('количество всех финансовых инструментов в терминале MetaTrader 5=', x)

# получим все символы
symbols=mt5.symbols_get()
print('symbols=', symbols)

# получим бары с разных инструментов разными способами
eurusd_rates = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M30, datetime(2020, 1, 28, 13), 1000)

# DATA
print('eurusd_rates', eurusd_rates )

# завершим подключение к MetaTrader 5
mt5.shutdown()


Risultato:

(0, 0, '')
AccountInfo(login=17245465, trade_mode=2, leverage=500, limit_orders=500, margin_so_mode=0, trade_allowed=False, trade_expert=True, margin_mode=2, currency_digits=2, fifo_close=False, balance=0.0, credit=0.0, profit=0.0, equity=0.0, margin=0.0, margin_free=0.0, margin_level=0.0, margin_so_call=50.0, margin_so_so=20.0, margin_initial=0.0, margin_maintenance=0.0, assets=0.0, liabilities=0.0, commission_blocked=0.0, name='xxxxxxxxxxxxx', server='Alpari-MT5', currency='USD', ...)
Show account_info()._asdict():
  login=17045461
  trade_mode=2
  leverage=500
  limit_orders=500
  margin_so_mode=0
  trade_allowed=False
  trade_expert=True
  margin_mode=2
  currency_digits=2
  fifo_close=False
  balance=0.0
  credit=0.0
  profit=0.0
  equity=0.0
  margin=0.0
  margin_free=0.0
  margin_level=0.0
  margin_so_call=50.0
  margin_so_so=20.0
  margin_initial=0.0
  margin_maintenance=0.0
  assets=0.0
  liabilities=0.0
  commission_blocked=0.0
  name=ххххххх
  server=Alpari-MT5
  currency=USD
  company=Alpari International
TerminalInfo(community_account=True, community_connection=True, connected=True, dlls_allowed=False, trade_allowed=False, tradeapi_disabled=False, email_enabled=False, ftp_enabled=False, notifications_enabled=False, mqid=False, build=2489, maxbars=100000000, codepage=1251, ping_last=95766, community_balance=0.0, retransmission=5.305821665438467, company='Alpari International', name='Alpari MT5', language='Russian', path='C:\\Program Files\\Alpari MT5', ...)
(500, 2489, '12 Jun 2020')

количество всех финансовых инструментов в терминале MetaTrader 5= 43
symbols= (SymbolInfo(custom=False, chart_mode=0, select=True, ....
eurusd_rates None

Process finished with exit code 0
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Признак отрисовки ценового графика. Если установлено значение false, то отключается отрисовка любых атрибутов ценового графика и устраняются все отступы по краям графика: шкалы времени и цены, строка быстрой навигации, метки событий Календаря, значки сделок, тултипы индикаторов и баров, подокна индикаторов, гистограммы объёмов и т.д. Значение...
 
rale70:

Buona giornata!

Ho collegato le librerie, python sta comunicando con Mt5, sto ottenendo informazioni sul conto ma le quotazioni non vengono caricate in alcun modo. Puoi aiutarmi?

Python versione 3.7.6



Risultato:

Si prega di inserire il codice correttamente (utilizzare il pulsante Codice)

 
Vladimir Karputov:

Inserisci il codice correttamente (usa il pulsante)

Grazie per il disegno, lo prenderò in considerazione.

Motivazione: