FORTS: OnTradeTransaction() dönüş kodları - sayfa 6

 

Vay!

Kurulum süresi - 15:07:31.849

Silme süresi - 15:07:31.865

Ve 25. hafta için , Geçersiz istek yıprandı ve bu tüm ciddiyetle. Servis masasının neden sessiz olduğu şimdi anlaşıldı.


 

Bir danışman hangi durumlarda bir kod alabilir:

 TRADE_RETCODE_REJECT
 

Sergey!

Haklı olduğun ortaya çıktı. Baga MQ

Sipariş durumu terminalde güncellenmez :

 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

Siparişi aldım ve durumu hala "askıda" ORDER_STATE_STARTED

 
Михаил :

Sergey!

Haklı olduğun ortaya çıktı. Baga MQ

Sipariş durumu terminalde güncellenmez :

Siparişi aldım ve durumu hala "askıda" ORDER_STATE_STARTED

Mikhail, arama emri bu mesajlardan sonra devam edecek mi? Ona göre, şans eseri, bundan birkaç ms önce işlem gerçekleştirilemedi mi?

 
Alexey Kozitsyn :

Mikhail, arama emri bu mesajlardan sonra devam edecek mi? Ona göre, şans eseri, bundan birkaç ms önce işlem gerçekleştirilemedi mi?

Evet, sipariş var ve hatadan sonra var.

Evet, bu önemli değil, çünkü silmeden (değiştirmeden) önce siparişin var olup olmadığı kontrol edilir:

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

Neden soruyorum, bu benim durumum:

Dergi (uzmanlar):

 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

Siparişin kabul edildiği (bununla çalışabileceğiniz anlamına gelir) görülebilir, ancak talep doğru değil.

Günlükteki günlük:

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)

Onlar. emrin silindiği anda, üzerinde bir anlaşma yapıldı. Ardından robot, artık var olmayan bir siparişi silmeye çalışır.

Şimdi ne yapacağıma karar veriyorum.

 
Михаил :

Evet, sipariş var ve hatadan sonra var.

Evet, bu önemli değil, çünkü silmeden (değiştirmeden) önce siparişin var olup olmadığı kontrol edilir:

Gördüğünüz gibi ben de...
 
Alexey Kozitsyn :

Neden soruyorum, bu benim durumum:

Dergi (uzmanlar):

Siparişin kabul edildiği (bununla çalışabileceğiniz anlamına gelir) görülebilir, ancak talep doğru değil.

Günlükteki günlük:

Onlar. emrin silindiği anda, üzerinde bir anlaşma yapıldı. Ardından robot, artık var olmayan siparişi silmeye çalışır.

Şimdi ne yapacağıma karar veriyorum.

Ben de bu tırmık üzerine bastım ama sorunu çözdüm.

OrderSend() veya OrderSendAsync() sırasını ayarlamak için hangi komutu kullanıyorsunuz?

 
Михаил :

Ben de bu tırmık üzerine bastım ama sorunu çözdüm.

OrderSend() veya OrderSendAsync() sırasını ayarlamak için hangi komutu kullanıyorsunuz?

OrderSend() . Bu durumda fark nedir?
 
Alexey Kozitsyn :
SiparişGönder()

Gerçek şu ki, bir emir yürütüldüğünde, onun yürütülmesini kontrol edemezsiniz ve bu nedenle OnTick() veya OnBookEvent()'i engellemezsiniz.

Yürütülen emri hızlı bir şekilde kontrol etmek için, Deal olayını OnTradeTransaction() içinde işlemeniz gerekir.

Kodu birazdan paylaşacağım...