CANCEL ORDER [INVALID REQUEST]

 
Fala galera, 

estou com um problema que só ocorre em conta real, backtest e demo nunca aconteceu.

em algumas ordens(aleatórias aparentemente),  elas são cancelas e o Expert retorna a seguinte mensagem : 
CTrade:: OrderSend: cancel #id_order [invalid request]

Nesses casos não existem sinais de saida de operação ou outra coisa(aparentemente).
Normalmente essas saidas são feitas 40/50 pontos abaixo da entrada(comprado) ou acima da entrada(vendido).

Todas as minhas operações são a mercado, então desconsidero que seja questão de tipo de ordem.

Se alguém tiver alguma ideia do que poderia estar acontecendo agradeceria muito.


-------------------------------------------------------------------------------------------------------------------------------------------------------


Hey guys,


I have a problem that only occurs in real account, backtest and demo never happened.


in some orders (apparently random), they are canceled and the Expert returns the following message:

CTrade :: OrderSend: cancel #id_order [invalid request]


In such cases there are no signs of exit or anything else (apparently).

Usually these exits are made 40/50 points below the entrance (bought) or above the entrance (sold).


All of my operations are on the market, so I disregard that it is a question of type of order.


If anyone has any idea what could be happening I would appreciate it very much.




Arquivos anexados:
unknown.png  158 kb
unknown_x1l.png  27 kb
 

Olá,

Qual a função/comando que você cria as ordens?

Seu programa em algum momento faz cancelamentos de ordens?


Ivan

 

Essa é a linha que executa a posição, com as devidas alterações entre compra e venda(Tipo de ordem e preço)

PositionOpen(symbol,ORDER_TYPE_SELL,volume,bid,sl,tp,comment)

Meu código até tem partes que fazem o cancelamento de ordens, como por exemplo


bool CE::CheckDeleteOrderSell(void)
{
   double price;
   if(_expiration!=0 && TimeCurrent()>_expiration)
     {
      _expiration=0;
      return(DeleteOrderSell());
     }
   if(_signal.CheckCloseSell(price))
      return(DeleteOrderSell());
   return(false);
}

Porém, por estar forçando(comentei a abertura de posições limit e stop) entradas a mercado, mesmo com o código de cancelamento não deveria executar essas etapas.

fiz uns comentarios nas chamadas e percebi que a falha está ocorrendo em uma parte do código que peguei do modulo padrão do meta trader.

if((lot=m_money.CheckClose(GetPointer(m_position)))!=0.0)
        return(CloseAll(lot));

Mas não entendi o porque aconteceu....podem me explicar?

 
Neste caso tem que testar para identificar e contornar o erro com alguma outra condição.
Razão: