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

 
Сергей Таболин:

Un'altra domanda da un nuovo arrivato.

La situazione è la seguente. Ho un indicatore. Quando lo aggiungo al grafico in modalità "freddo", impiega 7-8 secondi per essere calcolato.

Ho fatto lo stesso in python. La differenza è che python scrive i dati in un file .csv.

Capisco le perdite di connessione con MT5, altre spese generali.... Ma, 8 secondi contro 3 ore..... ???????? COME ???????????

Cosa volete da un linguaggio che è cento volte più lento del C++?

Tutto ciò che è veloce in Python è scritto come moduli C++. Se non c'è un modulo veloce adatto, tutto sarà infinitamente più lento.


copy_ticks_range, così come il resto dei metodi di estrazione dei dati nell'API Python sono scritti da noi in modo super efficiente e veloce a livello di dare quei dati a MQL5.
 
Renat Fatkhullin:

Cosa volete da un linguaggio che è cento volte più lento del C++?

Tutto ciò che è veloce in Python è scritto come moduli C++. Se non c'è un modulo veloce adatto, tutto sarà infinitamente più lento.


copy_ticks_range, così come altri metodi di estrazione dei dati in Python API sono scritti da noi in modo super efficiente e veloce a livello di dare questi dati in MQL5.

Più lento, non di CENTINAIA....

Grazie, Renat, per la risposta. Deduco che questa velocità è unicamente alla mercé di Python? Io stesso pensavo che né la richiesta di tick in MT, né la scrittura di dati in un file potessero rallentare così tanto...

 

Ora capite perché ci impegniamo così tanto nelle prestazioni linguistiche?

Altrimenti è impossibile gestire i volumi moderni.

Non supportiamo Python da solo, ma come ponte verso librerie efficienti scritte per esso (in C++).

 
Renat, puoi fare una breve panoramica di quanto avete fatto con il nuovo tester?

Allora sicuramente sarà inclusa una funzionalità API per usare il tester con Python, no?

Saluti
 
Christian:

Allora sicuramente sarà inclusa una funzionalità API per usare il tester con Python, no?

No. È ingenuo pensare che ci suicideremmo e sceglieremmo una lingua cento volte più lenta della nostra per uccidere un tester.

È molto più vantaggioso per noi sviluppare la nostra idea di ricompilare librerie C++ di terze parti in moduli MQL5. Per fare questo, abbiamo iniziato a includere un compilatore LLVM esterno nell'editor.

 
Renat Fatkhullin:

No. È ingenuo pensare che ci suicideremmo e sceglieremmo una lingua cento volte più lenta della nostra per uccidere un tester.

È molto più vantaggioso per noi sviluppare la nostra idea di ricompilare librerie C++ di terze parti in moduli MQL5. Per fare questo abbiamo iniziato a includere il compilatore LLVM esterno nell'editor.

C'è qualche speranza di sviluppare l'idea di supportareC/C++.lib o .a static library linking nel progetto di programma mql?

 
Roman:

C'è qualche speranza di sviluppare l'idea, nel supportare le librerie staticheC/C++.lib o .a che si collegano al progetto del programma mql?

No. Potete sempre usare qualsiasi DLL con controllo esplicito dei diritti di accesso.

 
Capisco le perdite di connessione a MT5, altre spese generali.... Ma, 8 secondi contro 3 ore..... ???????? COME ???????????

Fammi un esempio del tuo codice Python che rallenta, non è chiaro dalle parole cosa fa e come ottieni i dati. E perché scrive costantemente sul file? Non si può fare alla fine?

 
Renat Fatkhullin:

No. È ingenuo pensare che ci suicideremmo e sceglieremmo una lingua cento volte più lenta della nostra per uccidere un tester.

È molto più vantaggioso per noi sviluppare la nostra idea di ricompilare librerie C++ di terze parti in moduli MQL5. Per fare questo, abbiamo iniziato a includere il compilatore LLVM esterno nell'editor.

E se, ipoteticamente, si prende il supporto ONNX, i modelli importati saranno più lenti di MQL stesso?

 

Ho notato una stranezza nell'output:

[89, '2020.01.16', 3, 15, 3, 16, Timedelta('0 days 01:16:53.966000')]
[90, '2020.01.16', 3, 16, 3, 17, Timedelta('0 days 00:25:39.266000')]
[91, '2020.01.16', 3, 17, 4, 12, Timedelta('0 days 19:07:12.757000')]
[92, '2020.01.17', 4, 12, 4, 13, Timedelta('0 days 00:36:14')]
[93, '2020.01.17', 4, 13, 4, 15, Timedelta('0 days 02:21:01.630000')]
[94, '2020.01.17', 4, 15, 4, 17, Timedelta('0 days 02:12:28.692000')]
[95, '2020.01.17', 4, 17, 0, 11, Timedelta('0 days 17:30:16.404000')]

È == 00:36:14.000000 ?