FORTS: codici di ritorno di OnTradeTransaction() - pagina 6

 

Fantastico!

Tempo di installazione - 15:07:31.849

Ora della cancellazione - 15:07:31.865

Ed è già la 25a settimana dirichiesta Invalid, ed è in tutta serietà. Ora capisco perché servicedesk è silenzioso.


 

In questi casi il consulente può ricevere un codice:

TRADE_RETCODE_REJECT
 

Sergei!

Si è rivelato essere giusto. MQ bug

Ilterminale non aggiorna lo stato dell'ordine:

2015.11.26 15:41:56.094 Forts_trader (GAZR-12.15,H1)    Remove: Ордер не отослан! Причина: Неправильный запрос; Билет = 24041883
2015.11.26 15:41:56.094 Forts_trader (GAZR-12.15,H1)    DEBUG: order state = ORDER_STATE_STARTED
2015.11.26 15:41:56.068 Forts_trader (GAZR-12.15,H1)    CheckOrders: Sell ордер установлен. Билет = 24041883

Ho ricevuto un ordine ma il suo stato è ancoraORDER_STATE_STARTED

 
Михаил:

Sergei!

Si è rivelato essere giusto. MQ bug

Ilterminale non aggiorna lo stato dell'ordine:

Ho ricevuto l'ordine ma il suo stato è ancoraORDER_STATE_STARTED

Michael, l'ordine esiste ancora dopo questi messaggi? Per caso un accordo non potrebbe essere stato eseguito su di esso qualche mese prima?

 
Alexey Kozitsyn:

Michael, l'ordine esiste ancora dopo questi messaggi? Era per caso qualche ms prima che lo scambio non avrebbe potuto essere eseguito?

Sì, l'ordine esiste ancora dopo l'errore.

Non importa, perché prima di cancellare (modificare) l'ordine viene controllato se esiste:

void COrder::Remove()
{
  if ( ticket > 0 )
  {
    if ( OrderSelect( ticket ) )
    {
      ENUM_ORDER_STATE ord_state = ENUM_ORDER_STATE( OrderGetInteger( ORDER_STATE ) );
      if ( ( ord_state == ORDER_STATE_REQUEST_MODIFY ) ||
           ( ord_state == ORDER_STATE_REQUEST_CANCEL ) ||
           ( ord_state == ORDER_STATE_REQUEST_ADD ) ) return;
//........................................ Other code 
   }
  }
}
 

Perché lo chiedo, ho questa situazione:

Diario di bordo (esperti):

2015.11.26 18:05:16.725 FROG (RTS-12.15,M1)     TradeRemoveCycle case ORDER_STATE_PLACED: ОШИБКА #4756,  retcode = 10013. Ордер не удален!
2015.11.26 18:05:16.691 FROG (RTS-12.15,M1)     TradeRemoveCycle: ORDER_STATE_PLACED

Vedo che l'ordine è stato accettato (il che significa che può essere gestito), ma la richiesta non è corretta.

Nel diario di bordo il registro è così:

2015.11.26 18:05:16.725 Trades  '1007642': failed cancel order #35817112 buy 0.00  at market [Invalid request]
2015.11.26 18:05:16.693 Trades  '1007642': cancel order #35817112 buy limit 1.00 RTS-12.15 at 87780
2015.11.26 18:05:16.691 Trades  '1007642': deal #4375646 buy 1.00 RTS-12.15 at 87780 done (based on order #35817112)

Cioè nel momento in cui l'ordine è stato cancellato, è stata eseguita un'operazione su di esso. E poi, il robot cerca di cancellare l'ordine che non esiste più.

Ora sto cercando di decidere cosa fare.

 
Михаил:

Sì, l'ordine esiste dopo l'errore.

Ma non importa, perché prima di cancellare (modificare) l'ordine viene controllato che esista:

Come puoi vedere, anche il mio lo fa...
 
Alexey Kozitsyn:

Perché lo chiedo, ho questa situazione:

Diario di bordo (esperti):

Vedo che l'ordine è stato accettato (il che significa che può essere gestito), ma la richiesta non è corretta.

Nel diario di bordo il registro è così:

Cioè nel momento in cui l'ordine è stato cancellato, è stata eseguita un'operazione su di esso. E poi, il robot cerca di cancellare l'ordine che non esiste più.

Ora sto cercando di decidere cosa fare.

Anche io ho avuto questo problema, ma l'ho risolto.

Che comando usi per impostare OrderSend() o OrderSendAsync()?

 
Михаил:

Anche io ho avuto questo problema, ma l'ho risolto.

Quale comando si usa per impostare OrderSend() o OrderSendAsync()?

OrderSend(). E qual è la differenza in questo caso?
 
Alexey Kozitsyn:
OrdineInvia()

Il fatto è che quando un ordine viene eseguito, tu non controlli la sua esecuzione e quindi non blocchi OnTick() o OnBookEvent().

Dovete gestire l'evento trade in OnTradeTransaction() per controllare rapidamente l'ordine che viene eseguito.

Pubblicherò presto il codice su come farlo...