Erro nº 1 na modificação de ordens
Como posso me livrar deste maldito erro? Estou farto disso. Estou verificando cada parâmetro de entrada da função. Para mim, no momento, é assim:
Ou seja, se o parâmetro não tiver sido alterado, não há necessidade de alterá-lo. Nunca tinha feito isso antes, mas decidi...
Em seguida, os parâmetros são passados para o método de modificação de pedidos como este:
Nw saída no registro:
Então, a revista nos notifica, como modificação: OK, mas depois... um erro. Nenhum dos parâmetros foi alterado.
O pedido está pendente. Portanto, podemos mudar aberto, parar e tomar preço. E isto, pelo que entendi, não contradizia a documentação.
Quem já encontrou algo assim? Como resolvê-lo?
Você está manipulando mal o código de erro, esquecendo que o código de erro já está anulado após suas inúmeras funções.
Portanto, quando ocorre um erro, você precisa salvar o código de erro em uma variável local e imprimi-lo de lá, após a massa de suas chamadas subseqüentes.
Você está manipulando mal o código de erro, esquecendo que o código de erro já está anulado após suas inúmeras funções.
Portanto, quando ocorre um erro, seu código deve ser salvo em uma variável local e somente então, após a massa de suas chamadas subseqüentes, imprimi-lo.
Por que você não cria também uma matriz de erros? Está escrito em preto e branco na documentação que a variável _LastError armazena o número do último erro. E é reinicializada pela função ResetLastError(). Se não houver mais erros entre chamadas de _LastError, _LastError armazena o valor do último erro. Não houve mais erros em meu código. Bem, não é essa a questão.
Além disso, não é muito lógico criar variáveis para erros em cada método e depois imprimir essas variáveis em Expert Advisors.
Afinal, se existe uma variável para coletar erros, por que fazer novos erros?
mal vivo, o que você quer dizer com "não há cheques"? Eu escrevi acima:
if (OrderOpenPrice() != ND (fd_MurreyLevelsValue[11])) \\ Если текущая цена не равна новой.. из массива, то.. New_OOP = ND (fd_MurreyLevelsValue[11]); \\.. новая цена равна этому новому значению цены из массива( расчитанного ). else New_OOP = OrderOpenPrice(); \\ Иначе новая цена равно текущей цене выбранного ордера. Т.е. не изменяется. if (OrderStopLoss() != ND (fd_MurreyLevelsValue[12])) New_SL = ND (fd_MurreyLevelsValue[12]); else New_SL = OrderStopLoss(); if (OrderTakeProfit() != ND (fd_MurreyLevelsValue[2])) New_TP = ND (fd_MurreyLevelsValue[2]); else New_TP = OrderTakeProfit();
Eu até fiz um comentário para o primeiro. Embora lá tudo seja elementar.
De que outra forma você pode verificar aqui?
Eu percebi, é por isso que eu limpei))))
Eu faço dupla verificação de que não é igual e direcionado para onde você espera!
Boris, o que você quer dizer com isso? Porque tenho escrito claramente que se o preço não for assim... caso contrário... atual... Qual é o objetivo? Você pode verificá-lo 20 vezes... :) Isso não faz sentido. Tenho me debatido com este código desde o segundo dia. Nunca havia encontrado um bicho assim antes. Agora eu já o enfrentei. Eu já escrevi e testei todos esses métodos muitas vezes. Eu enfrentei um problema aqui.
A questão é que sou mais um fã de táticas ligeiramente diferentes. Mas escrevendo as últimas Owls, deparou-se com esta falha. Eu mesmo não sei onde cavar, porque pristrintovav todos os códigos longitudinalmente e caso contrário não tenho mais pensamentos. É por isso que a função OrderModify( ) é incorporada. E eu não conheço sua implementação.
mal vivo, o que você quer dizer com "não há cheques"? Eu escrevi acima:
Eu até fiz um comentário para o primeiro. Embora lá tudo seja elementar.
De que outra forma você pode verificar aqui?
Victor, depois de verificar, o novo valor é atribuído ou não. Você tem que verificar.
if (OrderOpenPrice() != ND (fd_MurreyLevelsValue[11]) // Если текущая цена не равна новой.. из массива || OrderStopLoss() != ND (fd_MurreyLevelsValue[12]) // или || OrderTakeProfit() != ND (fd_MurreyLevelsValue[2])) // или // если одно из условий выполнено пойдём в модифай...
Victor, após verificar se o novo valor é atribuído ou não. Você tem que verificar
Alexey, e onde você tem um cheque para se certificar de que o valor das funções que estão sendo passadas não sofreu alterações? Eu já levei isto em consideração acima. E a necessidade de modificações em geral é feita no início. Há níveis lá, se o indicador informa que o nível mudou, vamos seguir em frente...
Boris, o que você quer dizer com isso? Porque tenho escrito claramente que se o preço não for assim... caso contrário... atual... Qual é o objetivo? Você pode verificá-lo 20 vezes... :) Isso não faz sentido. Tenho me debatido com este código desde o segundo dia. Nunca havia encontrado um bicho assim antes. Agora eu já o enfrentei. Eu já escrevi e testei todos esses métodos muitas vezes. Eu enfrentei um problema aqui.
A questão é que sou mais um fã de táticas ligeiramente diferentes. Mas escrevendo as últimas Owls, deparou-se com esta falha. Eu mesmo não sei onde cavar, porque pristrintovav todos os códigos longitudinalmente e caso contrário não tenho mais pensamentos. É por isso que a função OrderModify( ) é incorporada. E não sei sua implementação...
mal vivo, o que você quer dizer com "não há cheques"? Eu escrevi acima:
if (OrderOpenPrice() != ND (fd_MurreyLevelsValue[11])) \\ Если текущая цена не равна новой.. из массива, то.. New_OOP = ND (fd_MurreyLevelsValue[11]); \\.. новая цена равна этому новому значению цены из массива( расчитанного ). else New_OOP = OrderOpenPrice(); \\ Иначе новая цена равно текущей цене выбранного ордера. Т.е. не изменяется. if (OrderStopLoss() != ND (fd_MurreyLevelsValue[12])) New_SL = ND (fd_MurreyLevelsValue[12]); else New_SL = OrderStopLoss(); if (OrderTakeProfit() != ND (fd_MurreyLevelsValue[2])) New_TP = ND (fd_MurreyLevelsValue[2]); else New_TP = OrderTakeProfit();
Eu até fiz um comentário para o primeiro. Embora lá tudo seja elementar.
De que outra forma você pode verificar aqui?
Como posso me livrar deste maldito erro? Estou farto disso. Estou verificando cada parâmetro de entrada da função. Para mim, no momento, é assim:
Ou seja, se o parâmetro não tiver sido alterado, não há necessidade de alterá-lo. Nunca tinha feito isso antes, mas decidi...
Em seguida, os parâmetros são passados para o método de modificação de pedidos como este:
Nw saída no registro:
Então, a revista nos notifica, como modificação: OK, mas então um erro. Nenhum dos parâmetros foi alterado.
O pedido está pendente. Portanto, podemos mudar aberto, parar e tomar preço. E isto, pelo que entendi, não contradizia a documentação.
Quem já encontrou algo assim? Como resolvê-lo?