Erro Robô

 

Boa noite a todos,

Estou tendo problemas com realização de transações com meu robô, eu deixo uma venda por exemplo sell limit, depois eu deleto a mesma e quando vou adicionar outra venda apresenta erro, já tentei utilizando a biblioteca Ctrade e manualmente, segue o erro apresentado, a primeira mensagem é da primeira transação que funciona e a segunda é a que apresenta erro, não sei o que pode ser:

V 2020.05.09 18:25:36.573       2020.04.01 09:30:00   sell stop 1 WIN$ at 69335 sl: 69655 tp: 68705 (69453 / 69454 / 69640)

X 2020.05.09 18:27:17.003       2020.04.01 12:10:26   failed sell stop 1 WIN$ at 70740 sl: 71100 tp: 70030 [Invalid price]

OBS: Penso que talvez eu esteja deletando a primeira ordem de maneira errada para dar erro apenas na segunda orden do dia, alguém consegue me ajudar por favor?

O trecho à seguir é onde coloco a ordem de venda:

if(trade.SellStop(Lote, Preco, _Symbol, Stop, Take,0,0,"Bibl. CTrade Venda")) {
                  Print("Ordem de Venda CTrade - sem falha. ResultRetcode: ", trade.ResultRetcode(), ", RetcodeDescription: ", trade.ResultRetcodeDescription());
               }else {
                  Print("Ordem de Venda CTrade - com falha. ResultRetcode: ", trade.ResultRetcode(), ", RetcodeDescription: ", trade.ResultRetcodeDescription());
               }


O próximo trecho é onde eu deleto a primeira ordem que foi cancelada sem ser executada que funciona normalmente e não apresenta erro:

void DeletarOrdens() {  //Deletar ordens em aberto
   for(int i = OrdersTotal()-1;i>=0;i--){
      ulong ticket = OrderGetTicket(i);
      string symbol = OrderGetString(ORDER_SYMBOL);
      //ulong magicNum = OrderGetInteger(ORDER_MAGIC);
      //if(symbol == _Symbol && magicNum == MagicNumber) {
      if(symbol == _Symbol) {
         if(trade.OrderDelete(ticket)){
            Print("ORDEM DELETADA - ResultRetCode: ",trade.ResultRetcode(), " RetCodeDescription: ", trade.ResultRetcodeDescription());
         }else {
            Print("ERRO AO DELETAR ORDEM - ResultRetCode: ",trade.ResultRetcode(), " RetCodeDescription: ", trade.ResultRetcodeDescription());
         }         
      }
   }
}

Muito obrigado

 
Problemas para sair da operação no E.A
Problemas para sair da operação no E.A
  • 2019.01.30
  • www.mql5.com
Estou usando a classe CTrade (https://www.mql5.com/pt/docs/standardlibrary/tradeclasses/ctrade), mas, quando opero na real a ordem que o E...
 
Anderson Almeida:

Olá,

já tentou este thread?

https://www.mql5.com/pt/forum/301457#comment_10478736
Boa tarde Anderson, muito obrigado pelo auxilio, mas já tentei, nesse exemplo que vc passou é referente ordens abertas a mercado, já tentei diversas maneiras e não consigo pendurar ordens depois que cancelo a primeira
 
precisa ver se o preço esta coerente... qual o preço atual na hora de tentar sell limit?
 
dervando Júnior:

Boa noite a todos,

Estou tendo problemas com realização de transações com meu robô, eu deixo uma venda por exemplo sell limit, depois eu deleto a mesma e quando vou adicionar outra venda apresenta erro, já tentei utilizando a biblioteca Ctrade e manualmente, segue o erro apresentado, a primeira mensagem é da primeira transação que funciona e a segunda é a que apresenta erro, não sei o que pode ser:

OBS: Penso que talvez eu esteja deletando a primeira ordem de maneira errada para dar erro apenas na segunda orden do dia, alguém consegue me ajudar por favor?

O trecho à seguir é onde coloco a ordem de venda:


O próximo trecho é onde eu deleto a primeira ordem que foi cancelada sem ser executada que funciona normalmente e não apresenta erro:

Muito obrigado

vc está colocando uma ordem com o mercado fechado? é isso?
 

Muito obrigado pelo seu auxílio,

Então no Sell Limit quando utilizo o preço atual está acima da ordem, já tentei também o Sell Stop e não dá certo.

A questão é que algumas vendas dão certo e sempre para em algumas, já chequei item a item do preço não consigo identificar.


Eduardo Oliveira:
precisa ver se o preço esta coerente... qual o preço atual na hora de tentar sell limit?
 

dervando Júnior:

X 2020.05.09 18:27:17.003       2020.04.01 12:10:26   failed sell stop 1 WIN$ at 70740 sl: 71100 tp: 70030 [Invalid price]

Ao invés de testar no WIN$, tentou no WIN@D ou WIN$D (séries sem ajuste)?

Perdi um tempão tentando debugar um código que falhava de vez em quando e depois descobri que o erro não era meu, mas estava nas séries.

Vale a pena conferir também a qualidade do histórico (se tem buraco, pode pular o preço e depois ficar com invalid price).

 
Anderson Almeida:

Ao invés de testar no WIN$, tentou no WIN@D ou WIN$D (séries sem ajuste)?

Perdi um tempão tentando debugar um código que falhava de vez em quando e depois descobri que o erro não era meu, mas estava nas séries.

Vale a pena conferir também a qualidade do histórico (se tem buraco, pode pular o preço e depois ficar com invalid price).

Anderson Almeida, não sei nem como te agradecer, estou dias e dias tentando fazer funcionar e realmente não encontro problemas no código, eu tentei o WIN@D e o WIN$D também apresentou o problema, porém como você me alertou com esses problemas de séries eu utilizei o corrente WINM20 e funciona perfeitamente.

Agora você sabe me ajudar se tem como eu fazer esse teste com dados históricos? visto que utilizando o WINM20 não tem informações antigas.


Um Grande abraço, muito obrigado

 
dervando Júnior:

Anderson Almeida, não sei nem como te agradecer, estou dias e dias tentando fazer funcionar e realmente não encontro problemas no código, eu tentei o WIN@D e o WIN$D também apresentou o problema, porém como você me alertou com esses problemas de séries eu utilizei o corrente WINM20 e funciona perfeitamente.

Agora você sabe me ajudar se tem como eu fazer esse teste com dados históricos? visto que utilizando o WINM20 não tem informações antigas.


Um Grande abraço, muito obrigado

Fico feliz que tenha ajudado, sei bem como é frustrante bater cabeça com esses detalhes sem conseguir avançar :)

Pode experimentar as outras séries contínuas e mexer nos tempos (o meu aqui tinha dado certo com o win@D desde 2019, para anos anteriores já deu pau).



Também não sei se testou, mas pode tentar no seu código usar a função m_symbol.NormalizePrice( *seu preço*) no seu preço, st e tp usando a biblioteca

  #include <Trade\SymbolInfo.mqh>

Razão: