Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 861
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
Olá, você poderia me dizer por que não está funcionando? Sem erros, mas as ordens não se abrem no testador. Estou tentando escrever um EA para a quebra de alto e baixo de um castiçal diário como uma ferramenta de treinamento.
Olá, você poderia me dizer por que não está funcionando? Sem erros, mas as ordens não se abrem no testador. Estou tentando escrever um EA para a quebra de alto e baixo de um castiçal diário como uma ferramenta de treinamento.
Não abre, ou seja, não tenta ou tenta mas falha? O que eles dizem no diário de bordo?
Olá, você poderia me dizer por que não está funcionando? Sem erros, mas as ordens não se abrem no testador. Estou tentando escrever um EA para a quebra de alto e baixo de um castiçal diário como uma ferramenta de treinamento.
Analise esta sua expressão
Não entendo o significado desta expressão e talvez eu esteja errado. Mas você deveria pelo menos substituir "(TimeCurrent()==HourStart)" por "(TimeCurrent() - HourStart)".
A seguir, se eu entendi corretamente - você está tentando fazer um pedido BuyLimit se não houver BuyLimitOrder AND BuyPosition. Observe o exato "E". Ou seja, a presença de qualquer um deles separadamente lhe convém, assim, a uma posição desejada do preço atual você receberá um número infinito de ByLimits, um em cada tick, até que pelo menos um deles acione e a primeira posição se abra. Além disso, você não se importa onde o preço está agora. Assim que a estranha condição de pontualidade for cumprida (logo acima do correio), eu acho que há um erro, mas não importa. De qualquer forma, se você desconsiderar isso, a EA começará a fazer pedidos errados no primeiro tick, até que o preço atinja o alto de ontem, porque você está usando o alto de ontem como o preço para fazer o pedido. O limite de compra é fixado abaixo do preço atual, o que significa que o preço atual deve estar acima do alto de ontem, mas até lá o pedido falhará.
Portanto, a única situação que lhe convém é quando o preço subiu acima do alto de ontem, não há limite de bye-limit, e não há negociações abertas. Esta é uma combinação rara. Além disso, não afetará a fuga, mas irá saltar após a fuga (porque há um bylimit), e irá lançar muitos erros, a partir do primeiro tick acima do máximo de ontem (que é outro erro). A condição já está preenchida, o consultor especializado lança a ordem, mas também há um spread, a distância mínima permitida do mercado, etc.
Estou tendo dificuldade para entender o significado desta expressão, talvez esteja errado, mas no mínimo substitua "(TimeCurrent()==HourStart)" por "(TimeCurrent() - HourStart)".
Isso mesmo, há aqui um erro. Você precisa se (TimeHour(TimeCurrent())==HourStart)
Agora o pedido abre às vezes, mas gera mais erros (OrderSend error 130).
O erro aqui não é correto em relação às ordens de limite.
Isso mesmo, há aqui um erro. Precisa se (TimeHour(TimeCurrent())==HourStart)
Agora abre transações às vezes, mas lança mais erros (OrderSend error 130).
Não é certo sobre ordens de limite.
Aqui está um roteiro para trabalhar com o tempo.
É antigo, mas funciona corretamente.
Olá.
Por favor, ajude-me a entender como trabalhar com arquivos.
Quando o programa está em execução, eu salvo os dados recebidos em um arquivo e leio o CSV.
O arquivo aumenta, a velocidade cai. Eu tentei atualizar (sobrescrever) alguns dos elementos das linhas. De jeito nenhum!
Você não pode apagar uma linha selecionada! Não posso acrescentar um novo elemento a uma linha antiga!
Isto é muito estranho! Você pode apagar facilmente um arquivo ou um objeto gráfico, etc. Mas quando se trata de trabalhar com um arquivo criado, é um impasse absoluto!
Nos fóruns há apenas uma recomendação: "Leia o arquivo na memória, altere ou apague a linha e salve o novo arquivo com o nome antigo".
Esta não me parece ser a solução correta. Deve ter-me escapado alguma coisa. Por favor, ajude-me a descobrir.
Isso não me parece ser a decisão correta. Provavelmente está me faltando algo. Por favor, ajude-me a descobrir.
Você deve ser contratado urgentemente pela Microsoft para finalmente consertar esta"solução errada" para o manuseio dearquivos.
A manipulação de arquivos não é como editar um arquivo em um editor de arquivos, é mais como fazer uma palavra a partir de dados com letras individuais.
Se você precisar inserir uma nova carta, todos os cubos que a seguem precisam ser movidos para a direita.
Se você quiser remover uma carta antiga, todos os dados que se seguem devem ser movidos para a esquerda.
Portanto, se o arquivo não for grande e o trabalho não exigir acesso ao arquivo, é realmente mais fácil escrever os dados em um novo arquivo, apagar o antigo e renomear o novo arquivo para o nome do antigo.
Se não estou enganado, a única coisa que falta na MQL quando se trabalha com arquivos é a capacidade de aparar o comprimento do arquivo até o tamanho exigido.
Aqui está um roteiro para trabalhar com o tempo.
É antigo, mas funciona corretamente.
Eu também costumava usar a função de Kim, então encontrei tempo para escrever a minha própria função:
desativar o tempo de execução - você tem que inserir dados inválidos ao inicializar o construtor, por exemplo, 25 horas ou 70 minutosVocê precisa ser contratado urgentemente pela Microsoft para que eles finalmente consertem esta"solução errada" para o manuseio de arquivos.
Trabalhar com arquivos não é como editar um arquivo em um editor de arquivos, é mais como fazer uma palavra a partir de dados com letras individuais.
Se você precisar inserir uma nova carta, todos os cubos que a seguem precisam ser movidos para a direita.
Se você quiser remover uma carta antiga, todos os dados que se seguem devem ser movidos para a esquerda.
Portanto, se o arquivo não for grande e o trabalho não exigir acesso ao arquivo, é realmente mais fácil escrever os dados em um novo arquivo, apagar o antigo e renomear o novo arquivo para o nome do antigo.
Se não estou enganado, a única coisa que falta na MQL quando se trabalha com arquivos é a capacidade de aparar o comprimento do arquivo até o tamanho exigido.