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
Boa tarde,
Estou tentando executar o primeiro script do livro, que gera um arquivo csv.
Ele se chama initial_data.mq5.
Ao executar o script na primeira etapa:
If(CopyClose(_Symbol, PERIOD_M5, Start, End, close) <= 0 ||
CopyOpen(_Symbol, PERIOD_M5, Start, End, open) <= 0 ||
CopyHigh(_Symbol, PERIOD_M5, Start, End, high) <= 0 ||
CopyLow(_Symbol, PERIOD_M5, Start, End, low) <= 0)
retornar;
CopyClose é sempre igual a -1
e o script trava, as repetições não ajudam e, como li nos comentários
essa é uma situação normal e significa que não há dados do servidor.
No entanto, não entendo completamente como o caminho para os arquivos de dados é escrito nesse script.
Ele está escrito na documentação da MQL5:
Por exemplo, os dados do símbolo EURUSD do servidor de negociação MetaQuotes-Demo estarão localizados na pastaterminal_directory\bases\MetaQuotes-Demo\history\EURUSD\.
E eu tenho arquivos com resolução .hcc e um subdiretório \cache com arquivos como H4.hc
Mas no script initial_data.mq5, há apenas um lugar onde o caminho está escrito.
PrintFormat("Coeficientes de correlação salvos no arquivo %s\\\\Files\\\\%s",
TerminalInfoString(TERMINAL_DATA_PATH), FileName);
Eu produzo TERMINAL_DATA_PATH
2024.06.16 22:53:39.982 path (EURUSD,M5) dataPath =C:\Users\HPAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
O que devo fazer para especificar corretamente o caminho para esses arquivos ou ele deve conectá-los automaticamente do diretório do terminal de acordo com a lógica MQL5?
Como fazer download de dados para um arquivo csv?
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Qualquer dúvida de iniciantes sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos
Aleksey Vyazmikin, 2024.06.18 06:28 pm
FileOpenParâmetros
open_flags
[ combinação de sinalizadores que definem o modo de trabalho com o arquivo. Os sinalizadores são definidos da seguinte forma:
FILE_READ arquivo aberto para leitura
FILE_WRITEarquivo aberto para gravação
FILE_BINmodo binário de leitura e gravação (sem conversão de e para cadeia de caracteres)
FILE_CSVarquivo do tipo csv (todos os elementos escritos são convertidos em cadeias de caracteres do tipo apropriado, unicode ou ansi, e separados por um delimitador)
FILE_TXTarquivo de texto simples (o mesmo csv, mas o separador não é levado em conta)
FILE_ANSIcadeias de caracteres do tipo ANSI (caracteres de byte único)
FILE_UNICODEcadeias de caracteres do tipo UNICODE (caracteres de byte duplo)
FILE_SHARE_READacesso de leitura compartilhado por vários programas
FILE_SHARE_WRITEacesso de gravação compartilhado por vários programas
FILE_COMMONlocal do arquivo na pasta comum de todos os terminais clientes \Terminal\Common\Files.
Observação
Por motivos de segurança, o trabalho com arquivos é estritamente controlado na linguagem MQL5. Os arquivos, que são usados para operações de arquivo usando as ferramentas da linguagem MQL5, não podem ser localizados fora da "sandbox" de arquivos.
Se um arquivo precisar ser lido em uma determinada codificação (o parâmetro codepage com o valor codepage é especificado), o sinalizador FILE_ANSI deve ser definido. Sem especificar o sinalizador FILE_ANSI, o arquivo de texto será lido em Unicode sem nenhuma conversão.
O arquivo é aberto na pasta do terminal do cliente na subpasta MQL5\Files (ou no diretório testing agent_agent\MQL5\Files em caso de teste). Se FILE_COMMON for especificado entre os sinalizadores, o arquivo será aberto na pasta comum de todos os terminais de cliente \Terminal\Common\Files.
Você pode abrir "canais nomeados" de acordo com as seguintes regras:
Nas linhas acima, o caractere especial de barra invertida '\' é usado, portanto, ao escrever o nome no programa MQL5, o '\' deve ser duplicado, ou seja, o exemplo acima deve ser escrito no código como "\\\\servername\\pipe\\\pipename".
Para obter mais detalhes sobre como trabalhar com canais nomeados, leia o artigo "Comunicação com o MetaTrader 5 via canais nomeados sem DLL".
Honestamente, não entendi nada da resposta, como se um robô estivesse escrevendo. Sei onde o arquivo a ser criado é gravado, mas ele não é criado.
Tenho uma pergunta específica: como obter dados de arquivos .hcc e .hc para gravar em .csv?
Como resultado, estou executando o script initial_data.mq5 do livro:
CopyClose é sempre -1. Como corrigir isso?
Suspeito que ele simplesmente não vê esses arquivos porque o caminho para os arquivos de dados não está escrito corretamente.
Como faço para escrever corretamente o caminho para os arquivos de dados?
No meu caso, os arquivos de dados estão na pasta terminal_directory\bases\MetaQuotes-Demo\history\EURUSD\ dentro da sandbox.
Estou tendo dificuldades com isso há uma semana, li tudo, mas não encontrei uma solução. Por favor, me ajude.
Sinceramente, não entendi nada da resposta, como se um robô estivesse escrevendo. Eu sei onde o arquivo a ser criado é gravado, mas ele não é criado.
Tenho uma pergunta específica: como obter dados de arquivos .hcc e .hc para gravar em .csv?
Como resultado, estou executando o script initial_data.mq5 do livro:
CopyClose é sempre -1. Como corrigir isso?
Suspeito que ele simplesmente não vê esses arquivos, porque o caminho para os arquivos de dados não está escrito corretamente.
Como especificar corretamente o caminho para os arquivos de dados?
No meu caso, os arquivos de dados estão localizados na pasta terminal_terminal_directory\bases\MetaQuotes-Demo\history\EURUSD\ dentro da sandbox.
Estou tendo dificuldades com isso há uma semana, li tudo, mas não encontrei uma solução. Por favor, me ajude.
Todos os dados são obtidos da plataforma, o usuário não se importa de onde o terminal os obtém - de qual arquivo.
O script funciona com os dados que são refletidos no gráfico.
Verifique se há datas no gráfico para as quais você está solicitando cotações.
Todos os dados são obtidos da plataforma, o usuário não se importa de onde o terminal os obtém - de qual arquivo.
O script funciona com os dados refletidos no gráfico.
Verifique se há datas no gráfico para as quais você está solicitando cotações.
Por favor, explique o que isso significa.
No script, há um intervalo
input datetime Start = D'2015.01.01.01 00:00:00'; // Início do período
input datetime End = D'2020.12.31 23:59:00'; // Fim do período
no M5
Devo pegar o gráfico EURUSD no M5, rolar até 2015.01.01 e depois executar o script nele?
Ou posso executar o script no MN? E com novos ticks ele volta ao início?Você pode explicar o que isso significa?
No script, há um intervalo
input datetime Start = D'2015.01.01.01 00:00:00'; // Início do período
input datetime End = D'2020.12.31 23:59:00'; // Fim do período
no M5
Preciso pegar o gráfico EURUSD no M5, rolar até 2015.01.01 e depois executar o script nele?
Ou posso executar o script no MN? E com novos ticks ele se move para o início novamente?Leia a ajuda no terminal. E aqui está outra coisa.
Você descobrirá que há uma configuração da profundidade do histórico por meio do número máximo de barras na janela. Você precisa recarregar o terminal para que as alterações tenham efeito.
Portanto, é necessário definir a profundidade máxima do histórico para todos os TFs de uma só vez pelo menor TF necessário para o trabalho.
É claro que 100 barras para dias e 100 barras para minutos darão a mesma profundidade em barras, mas não em datas.
Quando você definir o valor necessário ou "Unlimited" (Ilimitado) e recarregar o terminal, se o histórico estiver disponível para o período necessário, você poderá executar o script no TF mensal.
Leia a ajuda do terminal. E aqui está outra.
Você aprenderá que há uma configuração da profundidade do histórico por meio do número máximo de barras na janela. Para que as alterações tenham efeito, você precisa recarregar o terminal.
Portanto, é necessário definir a profundidade máxima do histórico para todos os TFs de uma só vez pelo menor TF, o que é necessário para o trabalho.
É claro que 100 barras para dias e 100 barras para minutos darão a mesma profundidade em barras, mas não em datas.
Quando você definir o valor necessário ou "Unlimited" (Ilimitado) e recarregar o terminal, se o histórico estiver disponível para o período necessário, você poderá executar o script no TF mensal.
Obrigado! Funcionou.
Não tem de quê.
Obrigado , Dmitry , por todo o seu empenho neste livro. Ele é realmente útil.
Em neuronbase.mqh, você implementa o método ElasticNet Regularization conforme abaixo, sem explicação em seu livro.
m_cWeights.m_mMatrix -= m_cWeights.m_mMatrix * Lambda[1] + Lambda[0]
Mas isso é diferente da fórmula básica (+) ou do código-fonte do Keras (+), por exemplo.
Explique seu método de implementação. Por que você usa apenas lambdas em vez da fórmula completa e por que multiplica os pesos com um deles e soma com outro.