Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 412
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
Caramba... Estou certamente feliz que você começou a resolver o problema, mas minha mensagem, de alguma forma, você não percebeu, onde eu disse a mesma coisa, palavras um pouco diferentes, e imediatamente disse as falhas, exceto para fechar o arquivo, não imediatamente viu onde você o tem acontecer:)
Você escreveu uma resposta de três parágrafos. No primeiro você cometeu um erro (minha entrada está bastante correta), no segundo você também cometeu um erro (embora esta mensagem o tenha nivelado :) O terceiro ponto soou como se você sugerisse mover o cursor para o final após a entrada, não antes dela (o que foi tomado como um erro novamente). Diante de tal quadro, eu preferi fazer um esclarecimento de um moderador muito experiente que respondeu.
No entanto, obrigado pelo seu feedback. E um Feliz Ano Novo! :)
Olá. Diante de uma situação desagradável. Ajude-me aqui.
Eu tenho um consultor especializado. Funciona bem no Testador de Estratégia, não tenho nenhuma reivindicação. Quando o executo em uma demonstração, o Expert Advisor não pode colocar paradas em certas ordens. Há um erro que nem sempre aparece, mas às vezes. Estou desesperado para encontrá-lo por conta própria e espero conseguir sua ajuda. Deve-se notar que a EA trabalha sem falhas em todos os outros aspectos, assim como no testador, sem reclamações, exceto que o problema é que as paradas nem sempre são definidas. O erro aparece em diferentes corretores em diferentes contas. Esta é a parte do código responsável pelas operações comerciais
Aqui está o código da função Error(int er)
Assim, quando a EA não consegue definir paradas, aparece uma mensagem mostrando informações sobre o erro e os parâmetros da ordem que tentou modificar. O que ele escreve é o verdadeiro mistério para mim. Como você pode ver nas fotos abaixo, ele escreve constantemente que o volume está errado. Isto é estranho. Devo acrescentar que todos os parâmetros do pedido são calculados corretamente antes da modificação, isso pode ser visto nas mensagens. Caso contrário, o erro seria diferente. O programa foi testado com um spread maior do que o da demonstração.
Olá. Diante de uma situação desagradável. Ajude-me aqui.
Eu tenho um consultor especializado. Funciona bem no Testador de Estratégia, não tenho nenhuma reivindicação. No entanto, quando a executo em uma demonstração, vejo que a EA não pode colocar paradas em certas encomendas. Há um erro que nem sempre aparece, mas às vezes. Estou desesperado para encontrá-lo por conta própria e espero conseguir sua ajuda. Deve-se notar que a EA trabalha sem falhas em todos os outros aspectos, assim como no testador, sem reclamações, exceto que o problema é que as paradas nem sempre são definidas. O erro aparece em diferentes corretores em diferentes contas. Esta é a parte do código responsável pelas operações comerciais
Aqui está o código da função Error(int er)
Assim, quando a EA não consegue definir paradas, aparece uma mensagem mostrando informações sobre o erro e os parâmetros da ordem que tentou modificar. O que ele escreve é o verdadeiro mistério para mim. Como você pode ver nas fotos abaixo, ele escreve constantemente que o volume está errado. Isto é estranho. Devo acrescentar que todos os parâmetros do pedido são calculados corretamente antes da modificação, isso pode ser visto nas mensagens. Caso contrário, o erro seria diferente. O programa foi testado com um spread maior do que o da demonstração.
Você deve ser muito cuidadoso com os valores de suas variáveis globais. Posso sugerir que o ord_ticket é uma variável global e, portanto, pode armazenar o valor anterior. E antes de chamar GetLastError() para apanhar o erro, você deve redefinir o valor anterior, chamando-o no início do código.
ord_ticket é declarado a nível local. E então, mesmo que seja declarado globalmente na primeira linha
seu valor certamente irá mudar. Será ou o número do pedido em caso de transação bem sucedida, ou -1 caso contrário. Portanto, se a ordem não for aberta, não chegamos ao bloco de paradas de ajuste.
Deve-se notar também que a função OrderSend() sempre altera o valor do último erro(de acordo com a documentação e a lógica), portanto, não é necessário reiniciar a leitura anterior neste caso e resultaria em uma simples perda de tempo. Ou seja, o erro 131 aparece após a entrada do bloco de ajuste de parada e antes que a mensagem de erro seja exibida. Como as paradas não são realmente colocadas, a função OrderModify() deve ser a última função a ser chamada, a qual, assim como a anterior, sempre muda o valor do último erro. Mas não consigo entender por que não altera o valor do último erro. De onde vem? Mais uma vez, direi que não houve problemas no testador.
Eu tinha uma idéia de que o corretor estava trapaceando porque o servidor enviaria números de erro ao terminal e este, por sua vez, os enviaria para o Expert Advisor. Eu abandonei esta idéia porque apenas ordens de um EA têm erros, outros EA trabalhando em paralelo não têm tais erros.
ord_ticket é declarado a nível local. E então, mesmo que seja declarado globalmente na primeira linha
valor certamente vai mudar. Será ou o número do pedido em caso de transação bem sucedida, ou -1 caso contrário. Portanto, se a ordem não for aberta, não chegamos ao bloco de paradas de ajuste.
Deve-se notar também que a função OrderSend() sempre altera o valor do último erro (de acordo com a documentação e a lógica), portanto, não é necessário reiniciar a leitura anterior neste caso e resultaria em uma simples perda de tempo. Ou seja, o erro 131 aparece após a entrada do bloco de ajuste de parada e antes que a mensagem de erro seja exibida. Como as paradas não são realmente colocadas, a função OrderModify() deve ser a última função a ser chamada, a qual, assim como a anterior, sempre muda o valor do último erro. Mas não consigo entender por que não altera o valor do último erro. De onde vem? Mais uma vez, direi que não houve problemas no testador.
Eu tinha uma idéia de que o corretor estava trapaceando porque o servidor enviaria números de erro ao terminal e este, por sua vez, os enviaria para o Expert Advisor. Eu abandonei rapidamente esta idéia porque apenas ordens de um EA têm tais problemas, outros EA trabalhando em paralelo não têm erros.
Vou acrescentar. O código da EA de trabalho paralelo é exatamente o mesmo, ela é responsável pela definição de paradas. Esta EA nunca teve uma situação em que as paradas não fossem definidas para pedidos.
Parece que há um erro no cálculo dos parâmetros em algum lugar acima, mas se apenas um parâmetro estiver errado, outro erro deve aparecer. Por exemplo, os conhecidos 130
ord_ticket é declarado a nível local. E então, mesmo que seja declarado globalmente na primeira linha
valor certamente vai mudar. Será ou o número do pedido em caso de transação bem sucedida, ou -1 caso contrário. Portanto, se a ordem não for aberta, não chegamos ao bloco de paradas de ajuste.
Deve-se notar também que a função OrderSend() sempre altera o valor do último erro (de acordo com a documentação e a lógica), portanto, não é necessário reiniciar a leitura anterior neste caso e resultaria em uma simples perda de tempo. Ou seja, o erro 131 aparece após a entrada do bloco de ajuste de parada e antes que a mensagem de erro seja exibida. Como as paradas não são realmente colocadas, a função OrderModify() deve ser a última função a ser chamada, a qual, assim como a anterior, sempre muda o valor do último erro. Mas não consigo entender por que não altera o valor do último erro. De onde vem? Mais uma vez, direi que não houve problemas no testador.
Eu tinha uma idéia de que o corretor estava trapaceando porque o servidor enviaria números de erro ao terminal e este, por sua vez, os enviaria para o Expert Advisor. Eu abandonei rapidamente esta idéia porque apenas ordens de um EA têm erros, outros EA trabalhando em paralelo não têm tais erros.
Você escreveu uma resposta de três pontos. No primeiro você cometeu um erro (minha entrada está bastante correta), no segundo você também cometeu um erro (embora esta mensagem o tenha nivelado :) O terceiro ponto soou como se você sugerisse mover o cursor para o final após a entrada, não antes dela (o que foi tomado como um erro novamente). Diante de tal quadro, preferi fazer um esclarecimento para o moderador multiqualificado que respondeu.
No entanto, obrigado por sua resposta. E feliz Ano Novo! :)
D ok, feliz ano novo também para você :)
Voltando ao que foi escrito na página 411 ... alguém tem uma idéia de como combinar esse código e as condições de entrada/saída para atravessar dois MA? ou as ordens pendentes são a única opção?
Após abrir um negócio em um sinal de movimento, comece a monitorar o número de ordens ou esta ordem especificamente, se o número de ordens a diminuir ou como a segunda opção for fechada especificamente esta ordem, então descubra como foi fechada, se uma parada, então abra exatamente a ordem oposta ao preço atual, isso é tudo
Após abrir um negócio em um sinal em movimento, comece a monitorar o número de ordens ou esta ordem especificamente, se o número de ordens a diminuir ou como a segunda opção for fechada especificamente esta ordem, então descubra como ela é fechada, se a parada, então apenas abra a ordem oposta ao preço atual, isso é tudo
Eu entendo isso, mas não posso anotar. O Expert Advisor ou negocia apenas em sinais de muwings e não abre uma posição inversa em caso de perda, ou simplesmente trava o terminal quando os testes são iniciados. Assim, escrevi algo que não pode ser processado de forma alguma. Eu não sou muito bom em escrever. Preciso de ajuda na forma de código escrito.
Se OrderProfit()<0, abrirá ordemoposta. Mas não funciona em conjunto com os sinais das ajudas de movimento. Você pode escrever um único código para fornecer tanto sinais de muwings quanto condições para abrir uma posição oposta?