Erros, bugs, perguntas - página 2856

 

Olá. Tenho um mal-entendido:
Como posso usar Trade\Trade.mqh para modificar uma encomenda existente?
O comando OrderModify da Trade.mqh requer que eu defina 7 parâmetros, incluindo o último: StopLimit order, o que é confuso para mim, porque não preciso dele de todo... E não é necessário na execução standard...

OrderModify(const ulong ticket,const double price,const double sl,const double tp, const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit=0.0);

Tenho um SellStop, quero movê-lo para cima, depois do mínimo, e não o posso fazer com OrderModify, e não compreendo como modificar uma encomenda SellStop existente usando Trade\Trade.mqh

Tenho de usar dilettage e uma nova encomenda.

Qual é a forma correcta de mover o nível Sell Stop?

 
Сергей Таболин:

Igor, a questão não era sobre o erro no código em si, mas sobre o porquê de escrever um erro durante a optimização, mas não durante uma única execução?

Não sou bom em telepatia, estou apenas a aprender.

mas vou tentar.... Assumindo que escreveu o código ao nível adequado, é possível que durante a optimização chegue ao valor da variável de entrada, o que causa um erro crítico

.... Outra forma de o dizer é pensar que não se sabe que o optimizador recebe um lote de trabalhos e talvez haja um erro numa das tarefas

.... Também pode assumir que se inicializar a variável no âmbito global (pode ser uma chamada de função durante a inicialização ou construtor de classe) e o optimizador a inicializa uma vez para constantes e estática (embora pareça que só para estática - esqueci-me) para cada agente, para todo o tempo de optimização, mas numa única passagem cada passagem...

... hz

 
Yura Fomin:

Olá. Tenho um mal-entendido:
Como posso usar Trade\Trade.mqh para modificar uma encomenda existente?
O comando OrderModify da Trade.mqh requer que eu defina 7 parâmetros, incluindo o último: StopLimit order, o que é confuso para mim, porque não preciso dele de todo... E não é necessário na execução standard...

Tenho um SellStop, quero movê-lo para cima, depois do mínimo, e não o posso fazer com OrderModify, e não compreendo como modificar uma encomenda SellStop existente usando Trade\Trade.mqh

Tenho de usar dilettage e uma nova encomenda.

Como mover correctamente o nível Sell Stop?

Há um exemplo emPending Trailing

Pending Trailing
Pending Trailing
  • www.mql5.com
Советник относится к классу утилит. Работает со всеми отложенными ордерами установленными в терминале. Подтягивает отложенный ордер вслед за ценой. Например отложенные ордера 'Buy stop' и 'Sell limit'...
 
TheXpert:
Não há necessidade de um ponto-e-vírgula em lado nenhum depois de um aparelho de frisar, provavelmente não em nenhuma língua
Obrigado. A ambiguidade da sintaxe quando ambos estão certos não é boa.
 
Igor Makanu:

Não sou bom com telepatia, estou apenas a aprender.

mas vou tentar.... Assumindo que o seu código é escrito a um nível adequado, é possível que durante a optimização se chegue ao valor da variável de entrada que causa um erro crítico

.... Outra forma de o dizer é assumir que não se sabe que o optimizador recebe tarefas em lotes, e talvez haja um erro numa das tarefas

.... Também pode assumir que se inicializar a variável no âmbito global (pode ser uma chamada de função durante a inicialização ou construtor de classe) e o optimizador a inicializa uma vez para constantes e estática (embora pareça que só para estática - esqueci-me) para cada agente, para todo o tempo de optimização, mas numa única passagem cada passagem...

... hz

)))))

O que é que a telepatia tem a ver com isto?

Há uma matriz, é inicializada e utilizada sem qualquer problema. Tudo funciona. Mas, à saída, há uma confusão...

void OnDeinit(const int reason)
{
   //Print(ArraySize(netMLP));
   //Print(ArraySize(indicators)+1);
   for(int i = ArraySize(indicators); i >= 0; i--) delete netMLP[i];

Tudo foi verificado. Mas a diferença entre a forma como o analisador se comporta no modo de optimização e a execução única é evidente. A questão é porquê? Se algo está errado algures, de alguma forma, deve estar errado em ambos os casos. Não é?

 
Сергей Таболин:

)))))

O que é que a telepatia tem a ver com isto?

Existe uma matriz, é rubricada e utilizada sem qualquer problema. Tudo funciona. Mas, por outro lado, à saída, tal catástrofe ocorre.

Tudo foi verificado. Mas a diferença entre a forma como o analisador se comporta no modo de optimização e a execução única é evidente. A questão é porquê? Se há algo de errado algures, de alguma forma, deve ser errado em ambos os sentidos. Não é?

Escreva-o por uma questão de decência:

for(int i = ArraySize(netMLP); i >= 0; i--) delete netMLP[i];

E por isso não há garantia de que as dimensões sejam as mesmas. O que são as matrizes, ninguém sabe.

 
Stanislav Korotky:

Escreva-o por uma questão de decoro:

E por isso não há garantia de que as dimensões sejam as mesmas. Ninguém sabe o que são as matrizes.

Eu sei))))

Eu substituí-o. O erro por mim especificado desapareceu )))) Mas a outra continua a aparecer:

2020.09.24 22:48:38.470 Core 3  pass 11877 tested with error "OnInit returned non-zero code 1" in 0:00:00.000

Repito: não havia tal coisa no lançamento anterior.

Tenho vários controlos com devolução(INIT_FAILED);

Mas todas elas são precedidas de impressões digitais. Mas não há impressões digitais. (((

 
Сергей Таболин:

escrever apenas para arquivo:

- optimização de sinais on/off

- número de agente

- e todas as variáveis utilizadas no OnDeanit()

sem isto não encontrará um bug - o optimizador funciona sem problemas, utilizo-o a toda a hora

 
Сергей Таболин:

Eu faço))))

Substituída. O erro que mencionei desapareceu )))) Mas outra continua a aparecer:

Repito, não existia tal coisa no lançamento anterior.

Faça duplo clique no passe de optimização correspondente e obtenha um único registo de execução com todos os detalhes, porque é que a inicialização falhou - linha e coluna na fonte.

 
Igor Makanu:

escrever apenas para arquivo:

- optimização de sinais on/off

- número de agente

- e todas as variáveis utilizadas no OnDeanit()

sem ele não vai encontrar o bug - o optimizador funciona sem problemas, estou sempre a usá-lo.

Ok, vou ligar novamente a escrita de tudo ao ficheiro. Talvez haja uma razão... que não estava lá antes...