MetaTrader 5 Python User Group - como usar o Python no Metatrader - página 81

 
Maxim Dmitrievsky:

e se, hipoteticamente, tomar o suporte ONNX, os modelos importados serão mais lentos do que o próprio MQL?

Verifique por si próprio.

Mas não se esqueça que o verdadeiro invólucro sobre ONNX estará definitivamente em C++ como biblioteca/módulo para píton, e depois o condutor/library da placa de vídeo específica (se for adequado).

Python é apenas um corredor entre chamadas para bibliotecas eficientes, que têm de ser trocadas com ele sob a forma de conjuntos de dados bastante dispendiosos.

As pessoas não compreendem suficientemente que Python é realmente apenas um invólucro sobre as chamadas da biblioteca e nada mais. Eles pensam que a pitão é uma linguagem poderosa e moderna. Mas na realidade é uma ligação entre bibliotecas C++ ;)

E cada biblioteca tem custos monstruosos para assegurar a compatibilidade com as estruturas dinâmicas de python (mesmo em numeração).

 
Renat Fatkhullin:

Verifique por si próprio.

Mas não se esqueça que o verdadeiro invólucro sobre ONNX será definitivamente em C++ sob a forma de biblioteca/módulo para python, e depois o condutor/bibliotecas da placa de vídeo específica (se for adequado).

Python é apenas um corredor entre chamadas para bibliotecas eficientes, que têm de ser trocadas com ele sob a forma de conjuntos de dados bastante caros.

As pessoas não compreendem suficientemente que Python é realmente apenas um invólucro sobre as chamadas da biblioteca e nada mais. Eles pensam que a pitão é uma linguagem poderosa e moderna. Mas na realidade é uma ligação entre bibliotecas C++ ;)

E cada biblioteca tem um custo monstruoso para assegurar a compatibilidade com as estruturas dinâmicas de python (mesmo em numeração).

Vou verificar... ainda não investiguei os detalhes

É evidente que a pitão é sobretudo para a investigação.

Mas para puxar o código de algumas redes neurais já treinadas depois (e elas mudam sempre durante a pesquisa), já é irreal transferir algo para algum lugar :)

Talvez eu não compreenda bem o que queria fazer. De qualquer forma, tem possibilidades suficientes com a python api. A menos que não consiga colocá-lo no mercado.

 
Renat Fatkhullin:

Nein. Es ist naiv zu glauben, dass wir Selbstmord begehen und eine Sprache wählen werden, die hunderte Male langsamer ist alsere, um den Tester loszuwerden.

Für uns ist es viel rentabler, unsere Idee zu entwickeln, C ++ - Bibliotheken von Drittanbietern in MQL5-Module neu zu kompilieren. Zu diesem Zweck haben wir begonnen, einen externen LLVM-Compiler in den Editor aufzunehmen.

Não sei se a minha pergunta foi traduzida correctamente. A questão é ligeiramente diferente.

O módulo Python recebe comandos para o testador de estratégias? Eventualmente ou definitivamente não?
 

Vou juntar os meus cinco cêntimos ))))

Tomei Python precisamente porque é muito mais fácil (parece-me) trabalhar com redes. Há muitos desenvolvimentos. Basta pegá-lo e aplicá-lo. E não se pode livrar das redes neuronais. Na minha opinião, a MQL só precisa de bibliotecas para trabalhar com esta entidade...

 
Almaz:

Dê-me um exemplo do seu código Python que abranda, não está claro nas palavras o que faz e como obtém os dados. E porque é que escreve constantemente para o ficheiro? Não pode ser feito no final?

Mudei um pouco o código Python: aumentei o pedido de tick de um dia para 30, organizei a escrita em ficheiro não linha por linha, mas em blocos de 500 linhas. O tempo de funcionamento diminuiu em alguns segundos. O indicador não tem nada a ver com isso.

Redesenhei o meu indicador. Adicionei buffers e escrevi dados linha a linha no ficheiro. O pedido de carraças permanece o mesmo - um dia.

Coloquei o indicador no gráfico.

2020.11.29 17:58:07.306 newCandles_F_1.01 (GBPUSD,H2)   00:01:01

O indicador apresentou e escreveu todos os dados a arquivar num minuto.

Python - 3 horas

MQL - 1 minuto

 

Saudações a todos.

Pode dizer-me porquê?

Li um ficheiro csv num ficheiro dataframe. Depois empilho algumas linhas numa só e escrevo para um novo ficheiro csv

....
csv_framе = pd.read_csv(flname, delimiter=',')
#  тут меняю имя файла
if os.path.isfile(flname):
    os.remove(flname)

rows, cols = csv_framе.shape
for i in range(candles_in_train, rows):
    lst = list()
    for k in range(candles_in_train):
        m = i - candles_in_train + k
        l = list(csv_framе.iloc[m])
        if m < i - 1:
            del l[-1]
        lst += l
    mf.write_csv_data(flname, 'a', lst)

Este código funciona durante 17 segundos.

Mas se eu colocar tudo de uma vez num novo frame csv e depois o despejar num ficheiro, o tempo de execução do código aumenta para 1 min. 44 seg.

...
new_frame = pd.DataFrame()

rows, cols = csv_framе.shape
for i in range(candles_in_train, rows):
    lst = list()
    for k in range(candles_in_train):
        m = i - candles_in_train + k
        l = list(csv_fraim.iloc[m])
        if m < i - 1:
            del l[-1]
        lst += l
    #mf.write_csv_data(flname, 'a', lst)
    r, c = new_frame.shape
    if r == 0:
        new_frame = pd.DataFrame([lst])
    else:
        new_frame.loc[r] = lst
new_frame.to_csv(flname, header=None, index=False)

Porquê?

 

problema de codificação? (tradutor do Google)


 

Existe uma tabela (pandas DataFrame). Como criar uma nova coluna por condição: se a coluna "1" < coluna "2" então escreva 145 senão escreva 874?


acrescentar:

De qualquer forma, resolvido por

import numpy as np
... np.where(
 
Boa tarde, pode o Python ser usado em MT5 para chegar ao WinApi ?

Especificamente, quero saber se vai funcionar?

keybd_event(VK_CONTROL,0,0,0);
 

Como posso fazer uma compensação?

Esta é a tabela (Quadro de Dados)

      time  
2020-11-25
2020-11-26
2020-11-27
2020-11-30 
2020-12-01        

Como fazer isto assim:

      time             time_1
2020-11-25	   2020-11-26
2020-11-26         2020-11-27
2020-11-27         2020-11-30
2020-11-30         2020-12-01 
2020-12-01         ничего не писать