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

 

Compilare per gli script python nell'editor significa eseguirli per l'esecuzione all'interno dell'editor.

Guardate l'output nelle finestre di errore e nel log. Il log mostra l'output principale, e le finestre di errore mostrano l'output stderr.

 
Renat Fatkhullin:

Compilare per gli script python nell'editor significa eseguirli per l'esecuzione all'interno dell'editor.

Guardate l'output nelle finestre di errore e nel log. Il log mostra l'output principale e la finestra degli errori mostra l'output stderr.

Capisco, non ci sono errori nella finestra degli errori,

nessun errore

ma nella finestra di log, lo script sta probabilmente aspettando la mia azione.

lo script sta aspettando la mia azione

Da quanto ho capito, non c'è solo un feedback (probabilmente non ancora).


Poi provo ad eseguire l'esempio dal post #1 (https://www.mql5.com/ru/forum/306688 )- installato il pacchetto matplotlib e MetaTrader5.

Cercando di eseguire l'esempio dal primo post

Negli errori

test.py started test.py 1       1
Traceback (most recent call last):      test.py 1       1
    MT5Initialize()     test.py 1       1
NameError: name 'MT5Initialize' is not defined  test.py 1       1
test.py finished in 389 ms              1       1

In tronco

2020.01.27 10:08:12.899 Python  "E:\Programs\Python37\python.exe" "C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Scripts\Python\test.py"

e non succede niente (il terminale è in funzione allo stesso tempo).

 
Renat Fatkhullin:

Compilare per gli script python nell'editor significa eseguirli per l'esecuzione all'interno dell'editor.

Guardate l'output nelle finestre di errore e nel log. Il log mostra l'output principale e le finestre di errore mostrano l'output stderr.

Quindi lo script .py non compilerà in .ex5?
Ed eseguirlo dal navigatore.

 
Vladimir Karputov:

Capisco, non ci sono errori nella finestra "Errori",


ma nella finestra "Log", lo script sta probabilmente aspettando la mia azione.

Da quanto ho capito, non c'è solo un feedback (probabilmente non ancora).


Poi provo ad eseguire l'esempio dal post #1 (https://www.mql5.com/ru/forum/306688 )- installato il pacchetto matplotlib e MetaTrader5.

Cercando di eseguire l'esempio dal primo post

Negli errori

In tronco

e non succede niente (il terminale è in funzione).

La libreria MetaTrader5 non è installata, fallo:

pip install --upgrade metatrader5

tutto funziona:


 
Roman:

Quindi, lo script .py non sarà compilato in .ex5?
Ed eseguirlo dal navigatore.

Naturalmente, non compilerà, ma sarà visibile nel navigatore come un programma *.py ed eseguito nascosto in un thread di terminale separato.

Comunicazione con il terminale tramite la libreria Python di MetaTrader 5.

 
Renat Fatkhullin:

Non fornito con la libreria MetaTrader5, fatelo:

tutto funziona:


La libreria è installata:


(è stato messo immediatamente conmatplotlib)


Aggiunto: e non funziona in python:


 
Renat Fatkhullin:

Naturalmente, non sarà compilato, ma sarà visibile nel navigatore come programma *.py ed eseguito nascosto in un thread separato del terminale.

Comunicazione con il terminale tramite la libreria MetaTrader 5 integrata per Python.

Ora ho capito, sarà come un quaderno visivo di Python, solo che tutto il codice viene eseguito.
Mi sono fatto il culo per la compilation, e la compilation sarebbe stata fantastica.
Il fatto è che con la compilazione standard da .py a .exe, c'è ben poca protezione contro il reverse-engineering. Si potrebbe dire che è inutile.
Se .py compilasse in .ex5, aumenterebbe davvero mql5 in termini di wow mql5 compila in un eseguibile ben protetto da .ex5.
Python ha questo come problema globale, pensaci. Soprattutto perché python compila in .exe, usa il compilatore C o C++.
E mql5 usa LLVM.

 

Disinstallato python. Installato 3.8.1 x64.

Quando viene eseguito in Python ora ha questi errori:


Python 3.8.1 (tags/v3.8.1:1 b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> 
= RESTART: C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Scripts\Python\metatrader5-test.py
Traceback (most recent call last):
  File "C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Scripts\Python\metatrader5-test.py", line 2, in <module>
    from MetaTrader5 import *
  File "E:\Programs\Python\Python38\lib\site-packages\MetaTrader5\__init__.py", line 35, in <module>
    from .C import *
ImportError: DLL load failed while importing C: Не найден указанный модуль.
>>> 
 
Vladimir Karputov:

La biblioteca è in piedi:


(è stato fornito immediatamente insieme amatplotlib)


Aggiunto: e non funziona in python:


Hai Python 3.8, meglio la 3.7.6 perché molte librerie non sono ancora pronte per la 3.8

1) Dalla linea di comando, controllate lo script.

2) Controlla che il percorso di python sia in PATH.

3) Assicuratevi che ci sia una sola copia di Python, e che non ci siano conflitti con altre versioni.

4) Assicuratevi che l'editor abbia il percorso della singola copia di Python nel PATH di Python.


È molto probabile che abbiate uno zoo di Python installati indirettamente da diversi ambienti come Visual Studio.

 
Vladimir Karputov:

Poi provo ad eseguire l'esempio dal post #1 (https://www.mql5.com/ru/forum/306688 )- installato il pacchetto matplotlib e MetaTrader5.

Cercando di eseguire l'esempio dal primo post

Negli errori

In tronco

e non succede nulla (il terminale è in esecuzione allo stesso tempo).

Dobbiamo aspettare un po' - lo script richiede dati dal 28.01.2019 - ci vuole tempo.

Seconda possibile ragione - il valore limitato di "Max bars in window" è specificato nel terminale.

ticks1 = MT5CopyTicksFrom("EURAUD", datetime(2019,1,28,13), 10000, MT5_COPY_TICKS_ALL)
ticks2 = MT5CopyTicksRange("AUDUSD", datetime(2019,1,27,13), datetime(2019,1,28,13,1), MT5_COPY_TICKS_ALL)

rates1 = MT5CopyRatesFrom("EURUSD", MT5_TIMEFRAME_M1, datetime(2019,1,28,13), 1000)
rates2 = MT5CopyRatesFromPos("EURGBP", MT5_TIMEFRAME_M1, 0, 1000)
rates3 = MT5CopyRatesRange("EURCAD", MT5_TIMEFRAME_M1, datetime(2019,1,27,13), datetime(2019,1,28,13))

L'aiuto dichiara esplicitamente https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5copyratesfrom_py

Il terminale MetaTrader 5 dà le barre solo all'interno della storia disponibile all'utente sui grafici. Il numero di barre che sono disponibili per l'utente è impostato nelle impostazioni dal parametro "Max bars in window ".


Se si tratta davvero del numero di barre, si può cambiare il limite o fissare lo script per prendere i minuti più vicini, ad esempio per il 2020 - questo dovrebbe funzionare

Настройки платформы - Начало работы - Справка по MetaTrader 5
Настройки платформы - Начало работы - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая платформа обладает множеством настроек, что позволяет организовать работу в ней так, как это удобно именно вам. Выполните команду " Настройки" меню "Сервис" или нажмите "Ctrl+O". Графики — общая настройка отображения ценовых графиков, а также настройка параметров управления объектами: выделение объектов после их создания, немедленная...
Motivazione: