![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Ontem fiquei subitamente fascinado com o banco de dadosSQLite. Existe uma interface Python pronta para isso -https://docs.python.org/3.6/library/sqlite3.html.
Como resultado, até tarde da noite eu li documentação tanto sobre o próprio banco de dados quanto sobre a interface Python. Para descobrir alguma da confusão, eu estraguei um par de programas completamente inúteis para o SQLite. Em geral, fascinado. Desperdiçado antes de ser negligenciado. O que eu aprendi pela primeira vez é que o banco de dados SQLite pode ser organizado em memória - com um comando: conn = sqlite3.connect(":memory:") - isto é em Python. Isso é tudo o que é preciso. Depois, em algumas consultas, crie tabelas e trabalhe.
Eu costumava usar o MS SQL Server ou BD Access para o mesmo propósito, e o banco de dados organizado em memória através de tabelas DataTable de bibliotecas NET. E aqui, uma DLL de 1,5 MB de comprimento e um comando,)), e você não precisa fazer nada.
Agora, para que serve? Não é necessário, é necessário. Enquanto seu sistema está contando algo lá, novos dados vêm do intercâmbio - o mercado, ofertas, cotações, e você os enfia no banco de dados em memória. E quando o sistema precisa de novos dados, tudo isso está aqui, na memória. Você o pega e o usa. Você não precisa esperar por nenhum carrapato e outras coisas. Além disso, quando algo acontece, você pode sempre tirar sua mente dos cálculos e processá-lo. Mais uma vez, todas as informações já estão lá, em sua memória. É claro, você precisa de eventos e tópicos de usuário, mas não é um problema em nenhum lugar.
Bem, então, as informações do banco de dados da memória são salvas no banco de dados principal em segundo plano.
Ah, e SQLite, embora pequeno, suporta acesso de leitura/escrita para múltiplos usuários. E em geral, quase tudo é como adultos - há algumas limitações, mas na maioria dos casos, ou são insignificantes ou não interferem em nada.
Começou a fazer banco de dados SQLite, não é ruim fazer algo útil. Vamos começar importando um arquivo CSV para o banco de dados.
Aqui está um trecho do próprio arquivo, cerca de 55 mil linhas no total.
Já descrevemos anteriormente como importar arquivo CSV para Python, não vamos parar aqui. Como resultado, temos uma cadeia de título CSV e uma cadeia de dados.
Agora o próprio programa Python:
Vemos a tabela da SBER no SQLiteStudio:
Sim, toda a diversão é de 3-4s desde o momento em que você executa o programa, incluindo a abertura e leitura do arquivo CSV. A propósito, o tamanho do arquivo do banco de dados é menor do que um arquivo CSV similar. O banco de dados completo é de 4,3 MB, o tamanho do CSV é de 5,2 MB.
Bem, o resto é feito da mesma maneira)).
Vamos continuar nosso tópico impopular com os nativos.
Há tópicos regulares no fórum sobre a leitura de dados de arquivos CSV. Só na última semana já houve duas - precisávamos ler a última e as últimas linhas.
Da última vez que escrevemos dados de um arquivo CSV no banco de dados, hoje vamos resolver o problema da leitura de linhas do banco de dados.
Há cerca de 55 mil filas em nossa tabela de banco de dados. Vamos tentar ler nem mesmo o último, mas cerca de 27568º. Para fazer isso, vamos escrever uma consulta SQL e enviá-la para o banco de dados:
É isso aí. Temos o resultado:
Tempo de execução ~0,003004 seg.
Vamos tornar a tarefa mais difícil. Encontrar linhas, onde Close=22730.0000000
Tudo é o mesmo, mas a pergunta parece diferente.
O resultado:
20 linhas foram devolvidas. Tempo de execução ~0,0625c.
Finalmente, vamos encontrar o preço mais alto na coluna (campo) FECHAR
B resposta:
Bem, e um tempo de execução de -0,035s
Como você vê, tudo é muito simples e rápido. Se eu fosse um consumidor de arquivos CSV, eu pensaria, porque não escrever um DL com 5-6 funções sob MT, e usar DB em vez de arquivos CSV.
PS O arquivo CSV no qual o banco de dados foi manipulado está no arquivo anexado há alguns posts atrás.Sim, a vida não é fácil para os desenvolvedores da MQL4-5. Procurei no Google se existem soluções para conectar o MT ao SQLite. O artigo SQL5.com SQL E MQL5: TRABALHANDO COM BASE DE DADOS SQLITE diretamente da MQ, e alguns materiais de desenvolvedores de terceiros. O banco de dados SQLite é excessivamente complicado, e os programas não são tão simples assim, ao contrário dos programas similares em Python.
Na verdade, para trabalhar com SQLite na primeira vez é suficiente importar apenas 7-8 funções SQLite de alto nível para MQL. O resto, em sua maioria, se for necessário, será necessário num futuro distante. Este trabalho pode ser feito por um programador C++ no pior caso, em alguns dias. Mas você também pode tentar soluções prontas.
PS Veja mais de perto o artigoSQL E MQL5: TRABALHANDO COM BASE DE DADOS SQLITE. Na verdade, talvez funcione. Ele só usa DLL x86 ali para preparar DLL x64 para MT. O artigo é de 2014, afinal de contas. Mas, se não me engano, já existe uma DLL SQLite x64. Você pode tentar compilar com ele.
Yuriy Asaulenko:
Sim, não é uma vida fácil para os desenvolvedores da MQL4-5...... Acho que é complicado demais, e os programas, ao contrário dos similares em Python, não são simples.
Imho, em Python os problemas não são menos: você precisa de um histórico, você precisa de um gráfico de barras, você precisa de indicadores técnicos... Eu também pensaria em um testador e também em uma negociação....
Bem, como diz o ditado: todas as canetas de feltro são diferentes para cada gosto!
imho você tem tantos problemas com Python: você precisa de um histórico, você precisa de um gráfico de barras, você precisa de indicadores técnicos... Eu também pensaria em um tester e trading....
Bem, como diz o ditado: todas as canetas de feltro são diferentes para cada gosto!
A história não é um problema e o bombeamento também o é. Os indicadores técnicos não são um problema, além disso, eu só tenho meus próprios indicadores. Se você precisar deles, há ali algoritmos simples.
Eu tenho uma ferramenta de desenho de barras em Python. Eu realmente preciso dele para o meu autossistema? - Eu não estou escrevendo um terminal).
E não é o primeiro sistema desse tipo, havia anteriormente no VB Excel, e no C++, e no C#. Na verdade, Python é escolhida por causa da extensão das bibliotecas e da falta de desejo de multiplicar o zoológico a partir da mistura de diferentes linguagens e interfaces para ter acesso a essas bibliotecas. Além disso, Python permite a modelagem - é para isso que foi projetado, e é muito importante no desenvolvimento de sistemas. Digamos que é um concorrente direto do MathLab).
Pergunta.
É possível trocar kanvas mql-kim e python através de um link?
É fácil de fazer em C++, mas eu não sei em python.
Pergunta.
É possível trocar kanvas mql-kim e python através de um link?
É fácil de fazer em C++, mas eu não sei em python.
Eu não tenho.
Boas notícias)))) -BetaMetaTrader 5 build 1910: Free Drag & Drop of Charts e Biblioteca .Net em MQL5 . Agora, quando o beta está funcionando, você não precisa escrever nada para se conectar ao SQLite ( assim como muitas outras bibliotecas). Você não vai precisar será DLL's.
Já estão disponíveis as bibliotecas SQLite Net-libraries -http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki
Agora (ou melhor, mais tarde, quando a versão funcional da MT aparecer) podemos esquecer a comunicação da MT com o sistema de negociação via troca de arquivos e nos comunicarmos via banco de dados. Anteriormente nesta linha foi mostrado que é muito rápido e mais do que suficiente para a maioria dos sistemas.
Boas notícias.))) -BetaMetaTrader 5 build 1910: Free Drag & Drop of Charts e .Net Libraries em MQL5 . Agora, quando o beta estiver funcionando, você não precisará escrever nada para se conectar ao SQLite ( assim como muitas outras bibliotecas). Você não vai precisar será DLL's.
Já estão disponíveis as bibliotecas SQLite Net-libraries -http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki
Agora (ou melhor, mais tarde, quando a versão funcional da MT aparecer) podemos esquecer a comunicação da MT com o sistema de negociação via troca de arquivos e nos comunicarmos via banco de dados. Anteriormente nesta linha foi mostrado que isto é muito rápido e mais do que suficiente para a maioria dos sistemas.
Você entendeu mal as notícias.
O suporte a bibliotecas .NET não significa que os controles de segurança em DLLs estão desativados. Os controles DLL sempre funcionaram e sempre funcionarão.
Nós apenas deixamos você carregar .NET sem nenhum ajuste. Ou melhor, pegamos todo o trabalho sujo e não trivial de comunicação com a máquina virtual .NET e escondemos todos os inconvenientes.
Entretanto, há muito tempo temos planejado acrescentar o suporte SQlite na MQL5. O mais provável é que o façamos.