FORTS: OnTradeTransaction() 반환 코드 - 페이지 6

 

우와!

설치 시간 - 15:07:31.849

삭제 시간 - 15:07:31.865

그리고 25번째 주 동안 , 잘못된 요청이 닳아 없어졌고 이것은 매우 심각합니다. 이제 서비스 데스크가 침묵하는 이유가 분명해졌습니다.


 

어떤 경우에 고문이 코드를 받을 수 있습니까?

 TRADE_RETCODE_REJECT
 

세르게이!

당신이 옳았다는 것이 밝혀졌습니다. 바가 MQ

터미널에서 주문 상태가 업데이트되지 않습니다 .

 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

주문을 받았지만 상태가 여전히 "중단" ORDER_STATE_STARTED 입니다.

 
Михаил :

세르게이!

당신이 옳았다는 것이 밝혀졌습니다. 바가 MQ

터미널에서 주문 상태가 업데이트되지 않습니다 .

주문을 받았지만 상태가 여전히 "중단" ORDER_STATE_STARTED 입니다.

미하일, 이 메시지 후에도 영장이 계속 존재합니까? 그에 따르면, 그 몇 ms 전에 우연히 트랜잭션을 실행할 수 없었습니까?

 
Alexey Kozitsyn :

미하일, 이 메시지 후에도 영장이 계속 존재합니까? 그에 따르면, 그 몇 ms 전에 우연히 트랜잭션을 실행할 수 없었습니까?

예, 주문이 존재하고 오류 이후에 존재합니다.

예, 삭제(수정)하기 전에 주문이 존재하는지 확인하기 때문에 중요하지 않습니다.

 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 
   }
  }
}
 

내가 묻는 이유는 다음과 같습니다.

저널(전문가):

 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

주문이 수락 되었지만(작업할 수 있음을 의미함) 요청이 올바르지 않은 것을 볼 수 있습니다.

로그의 로그는 다음과 같습니다.

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)

저것들. 주문이 삭제되는 순간 거래가 실행되었습니다. 그런 다음 로봇은 더 이상 존재하지 않는 주문을 삭제하려고 합니다.

이제 나는 무엇을 할지 결정합니다.

 
Михаил :

예, 주문이 존재하고 오류 이후에 존재합니다.

예, 삭제(수정)하기 전에 주문이 존재하는지 확인하기 때문에 중요하지 않습니다.

보시다시피 저도...
 
Alexey Kozitsyn :

내가 묻는 이유는 다음과 같습니다.

저널(전문가):

주문이 수락 되었지만(작업할 수 있음을 의미함) 요청이 올바르지 않은 것을 볼 수 있습니다.

로그의 로그는 다음과 같습니다.

저것들. 주문이 삭제되는 순간 거래가 실행되었습니다. 그런 다음 로봇은 더 이상 존재하지 않는 주문을 삭제하려고 합니다.

이제 나는 무엇을 할지 결정합니다.

저도 이 갈퀴를 밟았지만 문제를 해결했습니다.

OrderSend() 또는 OrderSendAsync() 주문을 설정하는 데 어떤 명령을 사용합니까?

 
Михаил :

저도 이 갈퀴를 밟았지만 문제를 해결했습니다.

OrderSend() 또는 OrderSendAsync() 주문을 설정하는 데 어떤 명령을 사용합니까?

주문 보내기() . 이 경우의 차이점은 무엇입니까?
 
Alexey Kozitsyn :
주문 보내기()

사실은 주문이 실행될 때 실행을 제어하지 않으므로 OnTick() 또는 OnBookEvent()를 차단하지 않는다는 것입니다.

실행된 주문 을 빠르게 제어하려면 OnTradeTransaction()에서 거래 이벤트를 처리해야 합니다.

코드는 곧 올리겠습니다...