Fazendo um sistema comercial Python para MT. - página 4

 

Tudo está pronto agora, e é hora de ligar nosso Python TS ao terminal MT. No entanto, há algumas ações a serem tomadas para que isso seja feito.

Nosso futuro TC lê e escreverá arquivos na pasta C:\PyTS, mas o terminal MT, a algum capricho desconhecido do MQ, pode ler-escrever arquivos somente em seu próprio diretório - C:\PyTS - com tantas letras e números, e de nenhuma outra forma. É claro, você pode mudar as configurações em código Python e deixá-lo trocar para a pasta MQ nativa, mas eu preciso do terminal para ler-escrever arquivos de lá e para onde eu quiser, não para onde ele, o terminal, quiser. Mais ainda, será necessário no futuro.

Na verdade, esta questão foi resolvida há alguns anos, em meu tópico - https://www.mql5.com/ru/forum/79922.

Tudo é resolvido com ferramentas Windows. Na pasta terminal C:{\i1}um monte de letras e números>Arquivos que você coloca referência à pasta C:{\i}PyTS, que é interpretada pelo terminal (e pelo sistema operacional também) como subpasta Arquivos e o terminal escreve lá, em C:{\i}PyTS, como em sua pasta nativa).

Isto é feito na linha de comando, usando o utilitário nativo do Windows MKLINK. Para aqueles que não podem fazer isso sozinhos, aqui está uma descrição detalhada:

Digite em executar - cmd, ou no menu - Utilities-Windows -> Command Prompt. Você obtém uma janela onde você digita MKLINK ou mklink. Aqui nós temos:


Agora digite cd... várias vezes até chegar ao C:\.

Depois abra o Windows Explorer, e vá para C:<um monte de letras e números>\postos, onde o terminal coloca os arquivos, e selecione e copie o caminho para a pasta Ctrl-Ins.

Volte para a janela de comando e lá escreva cd <space>, use Shift-Ins para colar no caminho para ... \\i1}Arquivos e Enter. Nós o entendemos:

Agora na linha de comando escrevemos - mklink /D PyTS c:\PyTS , e como de costume - Enter. Aqui o temos:

Vemos que foi criado um elo. Vemos que apareceu na pasta ......\Files e a acessamos - vemos os arquivos na pasta C:\PyTS. )) É isso aí.

Agora, todos os arquivos escritos por terminal para pasta ...Files\PyTS serão, de fato, escritos para pasta C:\PyTS.

.

RAM Диск.
RAM Диск.
  • 2016.04.07
  • www.mql5.com
Общее обсуждение: RAM Диск.
 
Portanto, terminamos com o compartilhamento de arquivos. Tudo funciona, todas as fontes estão no anexo. Tudo o resto, e a transferência inversa de Python para MT, é feita da mesma maneira, e espero que não cause nenhum problema. Para correr, ler e executar meu post anterior. Não há outra maneira).

O código MQL também está no anexo. - A MQL lê a história, e a passa para a aplicação Python. Python o aceita e o imprime. Em Python, não se esqueça de pressionar o botão Start. )

Espero que não haja necessidade de escrever comentários sobre o código MQL - há uma referência). Sim, a transferência de dados da MT é feita no timer, é mais conveniente para mim, nesta fase.

Se você tiver alguma dúvida, não hesite em ligar).

Vou fazer uma pausa por enquanto - agora precisamos resolver as questões com a estratégia. Se você tiver alguma sugestão - vamos considerar).

Mais uma vez, o compartilhamento de arquivos é ideal para o desenvolvimento e depuração de estratégias, pois não requer nenhum esforço de modificação. Para a maioria das estratégias do mundo real, ele ainda é adequado. Mas, se necessário, podemos sempre substituí-lo por algo mais, sem nenhuma mudança significativa no programa - uma questão de 1-2 dias.

Arquivos anexados:
PyTS.zip  4 kb
PyTSMT.mq5  7 kb
 

Não prometo escrever com freqüência, apenas quando eu o receber. O projeto está sendo feito em segundo plano, com pouco ou nenhum tempo de sobra.

Pensei que seria bom para o sistema exibir gráficos

Em geral, Python é uma linguagem simples - um par de dias para estudá-la é suficiente. Mas lidar com módulos é muito mais difícil - há milhares deles, e quem faz o que e por que nem sempre é óbvio. Com gráficos, foi o que aconteceu - tive que resolver isso por muito tempo. Mas o resultado é o seguinte:

O programa lê um arquivo CSV e desenha um gráfico.

O gráfico mostra os preços por Fechar, cerca de 50 mil candelabros.

Se você clicar na lupa e selecionar um retângulo na área da tabela como este:

você pode ampliar o gráfico, e você o obterá:

Isto pode ser feito repetidamente. O gráfico também pode ser movido e salvo como uma imagem e, é claro, expandido para tela cheia.

Todos os arquivos que você precisa estão na aplicação. Descompacte o zip para alguma pasta e execute o CSVGraph.py

Antes de executá-lo, não se esqueça de verificar se os módulos que você deseja importar estão instalados.

Arquivos anexados:
CSVGraph.zip  582 kb
 
Como um exercício em Python, talvez. Mas de um ponto de vista prático, é de pouca utilidade + uma perda de tempo. É claro, cada um tem seu próprio caminho. Boa sorte.
 

Deixemos as bobagens para os vizinhos e para os ouvintes amadores, mas vamos resumir os resultados preliminares nós mesmos.

Se você já está familiarizado com o assunto Se você é um profissional, já conhece alguns Python, sabe como trabalhar com arquivos CSV, sabe como construir gráficos e trocar dados com o terminal. Isto já é suficiente para desenvolver, simular e testar estratégias comerciais. Se sua estratégia trabalha com TF 1 min e mais sem utilizar carrapatos e acessa o terminal com intervalos de 5-10 seg., você já pode criar estratégias de trabalho diretamente em Phyton, deixando apenas a entrega dos dados e a "execução" de seus pedidos para o terminal.

Além disso, você já conhece a programação e o ambiente Phyton, em um nível além da linguagem e do ambiente R, tão popular entre os apologistas locais da aprendizagem de máquinas. Você já será capaz de construir até mesmo estratégias de indicadores muito complexos em Python, mas todas as características do Python (similar a R) podem ser implementadas usando módulos. Neste tópico, usamos apenas 3 módulos - tkinter, tkinter, numpy e matplotlib.

Agora, o que Python precisa para construir estratégias mais avançadas, digamos, usando a aprendizagem de máquinas. O módulo -scikit-learn pode ser usado para isto. Com o uso doscikit-learn, as seguintes características tornam-se disponíveis - Guia do Usuário. O que você acha do conjunto de métodos? - Ele já tem praticamente tudo, incluindo, não desconhecido do R e do tópico Aprendizado de Máquinas, desde a classificação Bayesiana até as florestas aleatórias e redes neurais.

Este é apenas um dos módulos de aprendizagem de máquinas em Python, e há cerca de uma dúzia deles. Diz-se que o móduloscikit-learn não é o melhor deles, nem o mais avançado. Isso depende de quem precisa do quê. Os outros não são difíceis de encontrar na Internet.


PS Para aqueles que estão começando ou apenas começando com Python.

Tentei vários ambientes de desenvolvimento Python e parei no mais conveniente para iniciantes (entre os quais me incluo) - Anaconda. O que torna conveniente é que tudo o que eu preciso já está instalado, inclusive o Python. Editor Utilizo Spyder - instalado comAnaconda. Aconselho também a instalação do editor VSCode - também muito bom e instalado diretamente doAnaconda.

Talvez você não fique satisfeito com a minha escolha.

 
Após 4 páginas do tópico, estamos finalmente prontos para passar ao que foi dito - estratégias em Python. Tudo já está feito para isso.
Começaremos com uma estratégia simples - negociação na travessia da EMA, possivelmente com modificações.
Quando dominei as redes neurais (NS), comecei com uma tarefa simples - as NS devem identificar pontos de crossover de EMA. A tarefa, de um ponto de vista prático, é absolutamente inútil, mas nos permitiu determinar como alimentar os NS com dados de mercado, como prepará-los e resolver muitos problemas de treinamento.
Agora, nossa tarefa não é ter lucro algum e nem mesmo ligá-lo ao terminal - é simples, mas sem uma estratégia lucrativa, não tem sentido. Nossa tarefa agora é criar um modelo de estratégia, e aprender como testá-lo, e qualquer estratégia servirá. Em seguida, coloque qualquer estratégia no modelo e teste-o, e se funcionar, então podemos começar a negociar através do terminal.

Os indicadores necessários estão todos prontos. Veja figura feita em Python (Em Python é muito conveniente e rápido desenhar todos os tipos de gráficos). Esta é a resposta a um único salto - 1(t), ou a função de transição. Na verdade, um dos testes padrão.


A fm é a média móvel convencional (servindo apenas para calibração), f1 é a EMA, com um cálculo de coeficiente modificado, e f2 é um indicador não-padrão.

No entanto, como costumava dizer nosso conhecido mútuo:

Igor Makanu:

Já o disse um milhão de vezes e provavelmente o direi novamente... Ninguém inventou nada melhor do que indicadores da oferta MT (padrão... por assim dizer antigos indicadores eslavos... pagãos!!!).

Assim, para não enganar sua cabeça com a ciência, você obterá o EMA padrão e as fontes estratégicas. No entanto, farei e testarei a estratégia em meus indicadores. Talvez eu esconda outra coisa dos olhos curiosos, mas sem perda de funcionalidade.

Mas não é para a travessia da EMA que se trata de tudo isso. O objetivo de tudo isso são as estratégias de aprendizagem da máquina. Até agora, estou testando diferentes métodos de classificação. E aqui estão os resultados dos testes:

Gaussiano, RBF SVM, Redes Neurais e classificação Bayesiana ingênua estão no topo até agora. O programa Python já está pronto, disponível em algum lugar na Internet, mas a preparação dos dados fica a cargo do usuário.

Vamos lá.

 
Yuriy Asaulenko:
Após 4 páginas do tópico, estamos finalmente prontos para passar ao que foi dito - estratégias em Python. Tudo já está feito para isso.
Começaremos com uma estratégia simples - negociação na travessia da EMA, possivelmente com modificações.
Quando dominei as redes neurais (NS), comecei com uma tarefa simples - as NS devem identificar pontos de crossover de EMA. A tarefa, de um ponto de vista prático, é absolutamente inútil, mas nos permitiu determinar como alimentar o NS com dados de mercado, como prepará-lo e resolver muitos problemas de treinamento.
Agora nossa tarefa não é ter lucro algum e nem mesmo se comunicar com o terminal - é simples, mas sem uma estratégia lucrativa não tem sentido. Nossa tarefa agora é criar um modelo de estratégia, e aprender como testá-lo, e qualquer estratégia servirá. Em seguida, colocar qualquer estratégia no modelo e testá-lo, e se funcionar, então podemos começar a negociar através do terminal.

Os indicadores necessários estão todos prontos. Veja figura feita em Python (Em Python é muito conveniente e rápido desenhar todos os tipos de gráficos). Esta é a resposta a um único salto - 1(t), ou função transitória. Na verdade, um dos testes padrão.


A fm é a média móvel convencional (servindo apenas para calibração), f1 é a EMA, com um cálculo de coeficiente modificado, e f2 é um indicador não-padrão.

No entanto, como costumava dizer nosso conhecido mútuo:

Assim, para evitar enganar sua cabeça com a ciência, você terá o EMA padrão e as fontes da estratégia. No entanto, farei e testarei a estratégia em meus indicadores. Talvez eu esconda outra coisa dos olhos curiosos, mas sem perda de funcionalidade.

Mas não é para a travessia da EMA que se trata de tudo isso. O objetivo de tudo isso são as estratégias de aprendizagem da máquina. Até agora, estou testando diferentes métodos de classificação. E aqui estão os resultados dos testes:

Gaussiano, RBF SVM, Redes Neurais e classificação Bayesiana ingênua estão no topo até agora. O programa Python já está pronto, disponível em algum lugar na Internet, mas a preparação dos dados fica a cargo do usuário.

Vamos lá.


É uma pena que eles tenham mudado para redes neurais. Mas, em sua maioria, muito útil, acho que será útil.

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Robôs de aprendizagem de máquinas

Yuriy Asaulenko, 2018.09.21 00:45

Eles não o farão. O máximo que eles farão é o mesmo que antes.


 
Sergey Chalyshev:


É uma pena que eles tenham mudado para redes neurais. Mas, em sua maioria, muito útil, acho que será útil.

Não há planos de mudar para NS e outros métodos MoD nesta linha. Por enquanto, pelo menos). Veremos.

O que está sendo feito aqui é um modelo do sistema Python. O preenchimento específico deste modelo é uma questão de usuário específico.

Bem, para mostrar as capacidades das bibliotecas Python, eu acho que não é supérfluo.

 
PS Sim, eu não disse, eu vou fazer todas as estratégias para FORTS (MOEX). Eu não brinco com os OCs forex.
 
Vamos continuar com nossos jogos. A partir de hoje, temos pronto e funcionando:
2. modelo de estratégia.
3. Uma simples estratégia de travessia EMA é colocada no modelo.

Quando o programa é iniciado, a estratégia é testada, o relatório de todas as negociações é salvo em arquivo CSV, o gráfico de lucro é exibido no console, que pode ser salvo no disco - veja Fig.


Os testes foram feitos utilizando futuros SBER MOEX, intervalo de 3M, 1M de tempo, total de ~55000 velas. Apenas castiçais fechados foram usados na estratégia. A duração dos testes é de ~1 min, a partir do início do programa. Isto é cerca de 1ms por vela.
Uma pasta com todos os arquivos de programas necessários, incluindo o histórico para os futuros da SBER está anexada.
Para executar o programa - executar o arquivo main.py Antes de executar, certifique-se de que seu Python tenha todos os pacotes e módulos necessários instalados. Se você estiver rodando no Anaconda, todos os pacotes-módulos necessários já estão instalados.
Basicamente, escreva sua estratégia no modelo, e teste-o.
Agora, como eu imagino a aplicação desta tecnologia?
Foi decidido traduzir na plataforma Python uma estratégia comprovada que utiliza redes neurais, talvez com uma pequena atualização. Com isto será possível com o mínimo de despesas dominar a aplicação das tecnologias ML disponíveis em Python, conectar o sistema ao terminal e iniciar a operação direta. Para mim a principal plataforma de negociação é o MOEX, e o Forex é auxiliar, portanto, no futuro previsível a conexão do sistema ao terminal MT não está planejada, embora tenha sido assumida no início do tópico como uma opção para testes.
No entanto, há especialistas suficientes no fórum que, se quiserem, podem fazer isso. Além disso, o C API Python é muito mais fácil que o C API do mesmo R, com o qual os especialistas locais lidaram com sucesso.
Podemos considerar que os objetivos do tema são completamente cumpridos.
Arquivos anexados:
Public.zip  683 kb