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
Simon,
Ok, deixe-me tentar adicionar também o nível de parada ao EA só para uma boa medida.
O nível de congelamento para USDJPY é 0 e o nível de parada é 30.
Presumo que 30 representa 3 porque o corretor tem 5 dígitos. Eu tentei usar o MODE_SPREAD e recebi 20. Obviamente o spread para USDJPY não é 20, mas ;) 2.0. Também poderia ser dito que 2 pips é equivalente a 20 pontos.
Obrigado.
Uma pista para você . . . .
Simon,
Esta parece ser mais uma vez uma questão de ordem seletiva.
A função OrderClose() está tentando fechar uma ordem (não a ordem USDJPY). Ela está tentando fechar a ordem no gráfico EURUSD.
A função OrderPrint() foi previamente selecionada antes de sua execução e se assemelha claramente ao seu propósito como pretendido.
A cor vermelha circundando o preço inválido deve indicar ERRADO.
A cor verde que circunda o USDJPY deve indicar DIREITO.
Portanto, se tudo for verdade, devo me concentrar no círculo vermelho e selecionar a ordem antes da execução da função OrderClose().
Obrigado.
o que é Licitações e Pedidos ?
Ask é o último preço conhecido do vendedor (ask price) para o símbolo atual.
Bid é o mais recente preço conhecido do comprador (preço de oferta, preço de compra) do símbolo atual.
Você já sabe a razão pela qual o fechamento falhou . . . pense cuidadosamente por um minuto.
Veja o seu código, qual o preço que você usa para fechar o pedido ?
Simon,
Ask/Bid é o último preço conhecido do vendedor/comprador para o símbolo atual.
O preço que a EA deseja fechar o pedido é o preço do símbolo EURUSD.
Por que a EA depende de ser colocada em um gráfico USDJPY para fechar sua ordem? A função OrderSelect( ) foi destinada a selecionar o número do bilhete e uma vez selecionado o número do bilhete, a EA poderia então selecionar
Aparentemente, a EA deve estar no gráfico do símbolo USDJPY para fechar os pedidos nesse
Risque tudo o que acabei de dizer.
Esta é a solução. O erro está dentro do terceiro parâmetro. Estou considerando especificar o símbolo e ENTÃO colocar a variável ask/bid dentro de seu parâmetro (localização 3º parâmetro da função OrderClose()). Isto deve remover qualquer obscurecimento do pensamento.
Obrigado.
Esta é a solução. O erro está dentro do terceiro parâmetro. Estou considerando especificar o símbolo e ENTÃO colocar a variável pedido/proposta dentro de seu parâmetro (local 3º parâmetro da função OrderClose()). Isto deve remover qualquer obscurecimento do pensamento.
Obrigado.
Simon,
O erro está dentro do terceiro parâmetro da função OrderClose() porque ;) Ask/Bid é o último preço conhecido do vendedor/comprador para o símbolo atual. Se "para o símbolo atual" significa o gráfico atual no qual a EA é colocada, então isto pode ser um pouco confuso. Devo lembrar que a MQL4 já existe há algum tempo e tem seus métodos únicos de ilustração e representação.
A solução é substituir as variáveis pré-definidas Ask/Bid por uma alternativa, como...
O que você diz a isto?
Eu adicionei uma versão deste EA que tem a capacidade de imprimir informações de ordem USDJPY e fechá-lo independentemente do gráfico em que é colocado. Ainda não confirmei se modificou o pedido de USDJPY SL e TP, mas confirmarei após a verificação. A EA produz um erro final que não deve ser difícil de resolver. Estou trabalhando nisto atualmente. aqui está um instantâneo da leitura do erro:
Obrigado.
Simon,
O erro está dentro do terceiro parâmetro da função OrderClose() porque ;) Ask/Bid é o último preço conhecido do vendedor/comprador para o símbolo atual. Se "para o símbolo atual" significa o gráfico atual no qual a EA é colocada, então isto pode ser um pouco confuso. Devo lembrar que a MQL4 já existe há algum tempo e tem seus métodos únicos de ilustração e representação.
A solução é substituir as variáveis pré-definidas Ask/Bid por uma alternativa como...
O que você diz a isto?
Eu adicionei uma versão deste EA que tem a capacidade de imprimir informações de pedido USDJPY e fechá-lo independentemente do gráfico em que é colocado. Ainda não confirmei se modificou o pedido de USDJPY SL e TP, mas confirmarei após a verificação. A EA produz um erro final que não deve ser difícil de resolver. Estou trabalhando nisto atualmente. aqui está um instantâneo da leitura do erro:
Obrigado.
Simon,
O ciclo 'enquanto' o operador é realizado como tal: Se a expressão for verdadeira, o operador é executado até que a expressão se torne falsa. Se a expressão for falsa, o controle será dado ao próximo operador.
O propósito do código na caixa SRC abaixo, é fazer o seguinte:
Enquanto a variável 'i' (contida na função OrderSelect() ) NÃO é o número de posição do bilhete USDJPY E o símbolo de ordem não é USDJPY, avariável 'i' é aumentada até que a variável 'i' seja o número de posição do bilhete USDJPY E o símbolo de ordem seja USDJPY. Uma vez que o ciclo 'while' se torna falso, o controle é então passado abaixo, para a próxima linha de código.
Eu forneci o cabeçalho 'while' e o corpo para ajuda visual.
Acredito que você entende como o ciclo "while" localiza um bilhete no par de moedas USDJPY mesmo sem que um bilhete esteja atualmente no par de moedas mas ;) Receio que eu não entendo.
Como o ciclo 'while' pode localizar um bilhete no gráfico USDJPY se não há ordem no gráfico USDJPY para localizar?
Acredito que você tenha escrito algo no sentido de localizar a ordem na posição 0. Você pode expor sobre isso ou possivelmente fornecer um link para estudo?
Obrigado.
Acredito que você entende como o ciclo "enquanto" localiza um bilhete no par de moedas USDJPY mesmo sem que um bilhete esteja atualmente no par de moedas, mas ;) Receio que eu não entendo.
Como o ciclo "while" pode localizar um bilhete no gráfico USDJPY se não há ordem no gráfico USDJPY para localizar?
Acredito que você tenha escrito algo no sentido de localizar a ordem na posição 0. Você pode expor sobre isso ou possivelmente fornecer um link para estudo?
Se você quiser escrever código para si mesmo, então você precisa realizar a tarefa de 3 pessoas, talvez até 4. A pessoa que elabora o documento de requisitos, o engenheiro de software e o engenheiro de testes. Não é suficiente conhecer a sintaxe ao contrário e ser capaz de escrever código . . você deve entender o problema que está tentando resolver e como vai resolvê-lo, e também deve saber como testar o código para ter certeza de que ele atende ao requisito.
Em um nível básico, isto significa passar por seu código linha por linha e certificar-se de que ele faz o que você queria que ele fizesse, geralmente isto é com uma faixa de valores para cada variável indo desde seu valor mínimo, passando por valores típicos até o valor máximo.
Vamos fazer isso com seu loop . .
Quando você declara uma variável int sem definir seu valor, ela tem um valor inicial de 0, então quando você declara i (por que não usar um nome de variável que seja mais descritivo ?) ela tem um valor 0, portanto, na primeira vez em torno do loopi é 0, então a OrderSelect() tenta selecionar a ordem na posição 0 se isso funcionar sua chamada OrderSymbol() retornará o nome correto do símbolo para a ordem na posição 0 e se não for "USDJPY" então a expressão(OrderSymbol() != USDJPY") resultará em um valor verdadeiro , se a OrderSelect() for verdadeira e a verificação do símbolo for verdadeira,verdadeira e verdadeira =verdadeira e a próxima linha de código ( isto está dentro do laço enquanto) for executada.
Agorai é 1 , a OrderSelect() seleciona a ordem na posição 1 para que resulte em um valor verdadeiro, a verificação do símbolo não encontra um símbolode USDJPY assim retorna verdadeiro, novamente verdadeiro e verdadeiro = verdadeiro assim i++ é executado novamente
Agorai é 2 , a OrderSelect() tenta selecionar a Ordem na posição 2 mas falha . . há apenas 2 ordens abertas, nas posições 0 & 1, então a OrderSelect() retorna falsa, o que faz a OrderSymbol() ? não há nenhuma ordem válida selecionada . . mas mesmo que retorne verdadeiro por alguma razão estranha, a OrderSelect() já retornou falso,falso e verdadeiro = falso . . o loop while terminou ei está definido em 2
Agora trabalhe através do resto do código tendo em mente queeu tenho um valor de 2. .