Parte do problema é a maneira como você escreveu aquele código com grandes caracteres, se as condições de &&, ||, e chamada de função após chamada de função torna difícil a depuração, você teria sorte de encontrar alguém com tempo para desvendar essa confusão. Você deve olhar os exemplos de codificação nos documentos para ver como o código deve ser formatado em linhas muito mais curtas e comentado.
" Torna difícil a depuração "?? :( Nunca ouvi falar disto, no entanto, isto é real ....
O compilador também tem dificuldade em depurar meu código :( ?
Se essa é a razão pela qual eu tive que repensar toda a minha idéia de codificação para esta parte ?? Então vai aparecer uma coisa totalmente diferente ...... :( :(
Sim, é difícil de depurar, por exemplo, olhar para este código para a parada de rastreamento. É fácil ver o que cada linha faz, portanto, é fácil detectar erros.
Tentei remover o && condição e colocá-los como se fosse uma declaração como depois de .... Mas ainda não funcionava o tempo todo, às vezes só movia o stop loss uma vez, às vezes funcionava muito bem tanto para ordens de compra como para ordens de venda.
SDC: Sim, é difícil de depurar, por exemplo, olhar para este código para a parada de rastreamento. É fácil ver o que cada linha faz, portanto, é fácil detectar erros.
Você DEVE contar para baixo ao fechar/apagar na presença de várias ordens. Pense na EA em outros gráficos. Tenha o hábito. Prefira também ++x a x++ (especialmente quando se trata de aulas)
A linguagem é para() declaração, se() declaração, então faz pouco sentido colocar aparelho em torno de uma única declaração.
Você não escreveria
mas
Então Simplifique
Agora que "&&" (e "|||") são operadores de curto-circuito, os "ifs" não se encadeam.
Você deseja modificar o pedido quando a seleção do pedido falhou?
Remova todos os testes que não mudam fora do loop.
Não continue calculando a mesma coisa. Descubra o que você quer fazer e murcha.
E quanto aos outros casos? E quanto aos outros gráficos e EAs?
Eu afixei esse código apenas como um exemplo de código de fácil leitura, ele não foi feito para ser um exemplo de uma função stand alone completa.
É a seção de ordens de compra do código de parada móvel da amostra da MetaQuotes MACD EA incluída com o MT4.
1) Não é verdade, você pode contar para cima ou para baixo, o laço é mais eficiente, OrdensTotal() é chamado uma vez e atribuído a uma var local.
Obrigado SDC . Obrigado também pelas dicas do WHRoeder . É útil .
Tentei trocar OrderClosePrice() pelo MarketInfo do código anterior e o editado (removendo o && condição e colocando-os como uma declaração como depois , o do 2º para loop ) , mas o resultado às vezes ainda está funcionando às vezes não está funcionando .
O loop de contagem para o total de pedidos no pool I usa loop de contagem regressiva, mas com x... . Eu não entendo porque você sugere --x, no entanto...
Eu pesquisei "operadores de curto circuito" no Google, mas não entendo o que significa em mql4 , você se importa em explicar um pouco ^_^ ?? Por que é ruim acorrentar "se"?
A propósito , o código acima sugerido pela SDC , não é o código que estou usando >.< .
Não é ruim acorrentar ses. Os desenvolvedores da linguagem MQL4 escreveram o código que coloquei acima. É um código que eu cortei de sua amostra MacD EA como exemplo.
WHR estava se referindo a uma recente mudança na forma como && || as condições são avaliadas, o que agora as torna tão eficientes quanto se as condições fossem encadeadas. Anteriormente, elas eram menos eficientes. Você pode usar qualquer um dos métodos. Os ifs encadeados são úteis quando há divergências no código para que você possa usar 'outro'.
Linhas longas de condições de if( && || ) podem criar confusão entre parênteses o que torna mais difícil encontrar erros, é por isso que não gosto de fazer isso. Também há um padrão aceito para codificação que diz que não deve ter mais de 80 caracteres de largura. Muitos codificadores não se preocupam em aderir a esse padrão, e os desenvolvedores da MQL4 continuam criando identificadores numerados com nomes longos grandes para serem usados em suas chamadas de funções para funções com nomes longos igualmente grandes, o que não ajuda muito na formatação de código.
Parte do problema é a maneira como você escreveu aquele código com grandes caracteres, se as condições de &&, ||, e chamada de função após chamada de função torna difícil a depuração, você teria sorte de encontrar alguém com tempo para desvendar essa confusão. Você deve olhar os exemplos de codificação nos documentos para ver como o código deve ser formatado em linhas muito mais curtas e comentado.
" Torna difícil a depuração "?? :( Nunca ouvi falar disto, no entanto, isto é real ....
O compilador também tem dificuldade em depurar meu código :( ?
Se essa é a razão pela qual eu tive que repensar toda a minha idéia de codificação para esta parte ?? Então vai aparecer uma coisa totalmente diferente ...... :( :(
Sim, é difícil de depurar, por exemplo, olhar para este código para a parada de rastreamento. É fácil ver o que cada linha faz, portanto, é fácil detectar erros.
{ i = 1 + 2; } { if(i == 3) { Print(i); } }Eu afixei esse código apenas como um exemplo de código de fácil leitura, ele não foi feito para ser um exemplo de uma função stand alone completa.
É a seção de ordens de compra do código de parada móvel da amostra da MetaQuotes MACD EA incluída com o MT4.
1) Não é verdade, você pode contar para cima ou para baixo, o laço é mais eficiente, OrdensTotal() é chamado uma vez e atribuído a uma var local.
Obrigado SDC . Obrigado também pelas dicas do WHRoeder . É útil .
Tentei trocar OrderClosePrice() pelo MarketInfo do código anterior e o editado (removendo o && condição e colocando-os como uma declaração como depois , o do 2º para loop ) , mas o resultado às vezes ainda está funcionando às vezes não está funcionando .
O loop de contagem para o total de pedidos no pool I usa loop de contagem regressiva, mas com x... . Eu não entendo porque você sugere --x, no entanto...
Eu pesquisei "operadores de curto circuito" no Google, mas não entendo o que significa em mql4 , você se importa em explicar um pouco ^_^ ?? Por que é ruim acorrentar "se"?
A propósito , o código acima sugerido pela SDC , não é o código que estou usando >.< .
Não é ruim acorrentar ses. Os desenvolvedores da linguagem MQL4 escreveram o código que coloquei acima. É um código que eu cortei de sua amostra MacD EA como exemplo.
WHR estava se referindo a uma recente mudança na forma como && || as condições são avaliadas, o que agora as torna tão eficientes quanto se as condições fossem encadeadas. Anteriormente, elas eram menos eficientes. Você pode usar qualquer um dos métodos. Os ifs encadeados são úteis quando há divergências no código para que você possa usar 'outro'.
Linhas longas de condições de if( && || ) podem criar confusão entre parênteses o que torna mais difícil encontrar erros, é por isso que não gosto de fazer isso. Também há um padrão aceito para codificação que diz que não deve ter mais de 80 caracteres de largura. Muitos codificadores não se preocupam em aderir a esse padrão, e os desenvolvedores da MQL4 continuam criando identificadores numerados com nomes longos grandes para serem usados em suas chamadas de funções para funções com nomes longos igualmente grandes, o que não ajuda muito na formatação de código.