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

[Silindi]  

11.2. Hatalı işlemler için ücret.

İşlemin yürütülmesi sırasında Tablo 2'de belirtilen bir hata kodu atanmışsa, işlemler hatalı olarak kabul edilir. Hatalı işlemlerin belirlenmesi amacıyla bir işlem, bir Emrin verilmesi, bir Emrin geri çekilmesi, bir Emir'in geri çekilmesi anlamına gelir. İşlemin diğer koşulları ile aynı anda bir Emir verilmesi ile emir, diğer İşlem koşulları ile bir çift Emir göndererek bir Emir çiftinin eşzamanlı olarak geri çekilmesi.

Hatalı işlemlerin ücreti, mevcut İşlem Gününün akşam takas seansını (askıya almanın ilk saniyesi dahil) tutmak amacıyla işlemin durdurulduğu andan, işlemin durdurulduğu ana kadar geçen süre için her oturum açma için hesaplanır. Bir sonraki İşlem Gününün akşam takas seansının düzenlenmesi amacıyla (askıya almanın ilk saniyesi hariç) (bundan böyle Hesaplama Dönemi olarak anılacaktır).

Hatalı işlemlerin ücreti aşağıdaki formüle göre hesaplanır:

 

 

nerede:

TranFee2 - Hesaplaşma Döneminde yapılan hatalı işlemler için Ücret tutarı (KDV dahil ruble olarak);

Sınır - Teknik Merkezin kararıyla belirlenen ve PJSC Moskova Borsası web sitesinde yayınlanan hatalı işlemler için Ücretin maksimum tutarına ilişkin bir sınır;

xi - saniye başına hesaplanan, tam sayılara yuvarlanan ve aşağıdaki formülle belirlenen değer:

 

nerede:

Qi - i. saniye için tüm puanların toplamı (puanlar Tablo 2'ye göre belirlenir);

L i , formül tarafından hesaplanan ve tam sayılara yuvarlanan bu oturum açmanın sınırıdır:

 

 

nerede:

Kapasite i - bu Ek'in 3.2 paragrafında belirtilen şekilde belirlenen, i. saniyede geçerli olan oturum açma bant genişliği.

 

Tablo 2 :

 

Tip   T işlemleri*

Yürütme sonucu (hata kodu)*

Q puanı

Sipariş Ekle

Çapraz ticaret gerçekleşti (31)

Q1

Yetersiz müşteri fonu (332)

Q2

Yetersiz aracı kurum fonları (333)

Q3

FOK uygulaması başarısız oldu (4103)

Q4

DelSipariş

Başvuru bulunamadı (14)

S5 _

TaşıSipariş

Çapraz ticaret gerçekleşti (31)

S6 _

Başvuru   olumsuzluk   bulundu (50)

Q7 _

H yeterli değil   para kaynağı   müşteri (332)

S8 _

H yeterli değil   para kaynağı   komisyonculuk   firmalar (333)

S9 _

KullanıcıSiparişleri

İşlem başarıyla tamamlandı

ve hiçbir istek silinmedi.

Q1 0

* Gateway FORTS Plaza-2 açıklamasına uygun olarak.

Q1-Q10 puanlarının değeri Teknik Merkezin kararı ile belirlenir ve PJSC Moskova Borsası web sitesinde yayınlanır.

Aşağıdaki koşul yerine getirildiğinde hatalı İşlemler için ücret alınır:

 

nerede:

TranFee2 - Hesaplaşma Döneminde yapılan hatalı İşlemler için Ücret tutarı (KDV dahil ruble olarak);

Cap min - Teknik Merkezin kararı ile belirlenen ve PJSC Moskova Borsası'nın web sitesinde yayınlanan hatalı İşlemler için Ücretin asgari tutarına ilişkin bir sınır,

Hatalı İşlemlerin ücreti, hatalı İşlemlerin Ücretinin tanımlandığı, girişin bağlı olduğu takas defteri bölümünden tahsil edilir.

[Silindi]  
Ne yazık ki yalnızca formüller eklenmez.
 
Dmitriy Skub :
Uyumamızı ister misin?)) Sayı yazmak çok mu zor?
Alexey Kozitsyn , bu hükmün metninin sadece bir kısmını kopyalayıp yapıştırmıştır. Daha net hale geldi mi? )) Korkarım bunu anlamak istiyorsan hala uyuman gerekiyor. ))
 

Bu hatanın dönüş kodu nedir?

 2015.09 . 21 10 : 00 : 13      20845617         SBRF- 3.16        buy limit       2.00 / 0.00              7 303                    2015.09 . 21 10 : 00 : 13              rejected        Инструмент отсутствует в текуще 
 

Geçersiz istek hata koduna dönüş

Sipariş silme işlevini biraz değiştirdim:

 //+------------------------------------------------------------------+
// Remove order                                                      |
//+------------------------------------------------------------------+
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 ) ) return ;
//---      
      mem_magic = ulong ( OrderGetInteger ( ORDER_MAGIC ) );
      mem_tick = GetTickCount ();
      req_id = 0 ;
       MqlTradeRequest request = { 0 };
       MqlTradeResult   result  = { 0 };
            
      request.action = TRADE_ACTION_REMOVE ;
      request.order = ticket;
          
       if ( OrderSendAsync ( request, result ) )
      {
         if ( result.retcode == TRADE_RETCODE_PLACED )
        { 
          req_id = result.request_id;
//---          
           switch ( order_status )
          {
             case BUY_ORDER:  state = ORD_BUY_DO_CANCEL;
                             break ;
                
             case SELL_ORDER: state = ORD_SELL_DO_CANCEL;
                             break ;           
          } 
          SetTransCount( true );
        }
         else
        {
          mem_magic = 0 ;
          mem_tick = 0 ;
          CheckError( result.retcode, "Remove: Ордер не удалён! Причина: " , order_status, ticket );
        }  
      }
       else
      {
        mem_magic = 0 ;
        mem_tick = 0 ;
        CheckError( result.retcode, "Remove: Ордер не отослан! Причина: " , order_status, ticket );
      }
    }
     else
    {
      ticket = 0 ;
      modify_count = 0 ;
    }
  }
   else
  {
    modify_count = 0 ;
  }
}

CheckError() İşlevi

 //+------------------------------------------------------------------+
// Expert Check Error function                                       |
//+------------------------------------------------------------------+
void CheckError( const uint ret_code, const string err_msg, const ENUM_ORD_STATUS ord_status, const ulong a_ticket )
{
   switch ( ret_code )
  {
    ........                              
     case TRADE_RETCODE_INVALID : Print ( err_msg + GetRetCode( ret_code ), "; Билет = " , a_ticket );
                                 break ;                                                       
                
     default : Print ( err_msg, GetRetCode( ret_code ), "; Билет = " , a_ticket );  
             break ;            
  }
}

Sipariş vererek:

2015.11.25 15:07:30.773 Trades  'xxxxx': buy limit 5.00 SNGP-3.16 at 40718
2015.11.25 15:07:30.784 Trades  'xxxxx': buy limit 5.00 SNGP-3.16 at 40718 placed for execution in 10 ms

MT 5 sunucusu herhangi bir yanıt göndermedi, CheckOrders() işlevi çalıştı ve bir sipariş bileti alındı:

 2015.11 . 25 15 : 07 : 31.849 Forts_trader (SNGP- 12.15 ,H1)    CheckOrders: Buy ордер установлен. Билет = 23992887

Bundan sonra, siparişi silme komutu GEÇMEDİ (EA):

 2015.11 . 25 15 : 07 : 31.865 Forts_trader (SNGP- 12.15 ,H1)    Remove: Ордер не отослан! Причина: Неправильный запрос Билет = 23992887

Ve bu terminal tarafından onaylanır:

2015.11.25 15:07:31.865 Trades  'xxxxx': failed cancel order #23992887 buy limit 5.00 SNGP-3.16 at 40718.00000 [Invalid request]

Soru:

Terminalin hafızasındaki düzenin durumu nedir?

Neden Geçersiz istek?

Terminal ortamından bir bilet aldım, bu da terminalin siparişin verildiğini "bildiği" anlamına geliyor !

Sonuçta, daha sonra aynı işlev bu siparişi aynı biletle sildi:

2015.11.25 15:15:03.245 Trades  'ххххх': cancel order #23992887 buy limit 5.00 SNGP-3.16 at 40718
2015.11.25 15:15:03.254 Trades  'ххххх': cancel order #23992887 buy limit 5.00 SNGP-3.16 at 40718 placed for execution in 8 ms
 
Михаил :

Geçersiz istek hata koduna dönüş

Sipariş silme işlevini biraz değiştirdim:

CheckError() İşlevi

Sipariş vererek:

MT 5 sunucusu herhangi bir yanıt göndermedi, CheckOrders() işlevi çalıştı ve bir sipariş bileti alındı:

Bundan sonra, siparişi silme komutu GEÇMEDİ (EA):

Ve bu terminal tarafından onaylanır:

Soru:

Terminalin hafızasındaki düzenin durumu nedir?

Neden Geçersiz istek?

( Terminal ortamından bir bilet aldım, bu da terminalin "siparişin verildiğini bildiği" anlamına geliyor )!

Şu da var:

 2015.11 . 24 17 : 07 : 15.020 FORTS (MXI- 12.15 ,M5)       ORDER_STATE = ORDER_STATE_REQUEST_ADD
 

Şu şekilde deneyin:

 if (!( OrderGetInteger ( ORDER_STATE )== ORDER_STATE_PARTIAL || OrderGetInteger ( ORDER_STATE )== ORDER_STATE_PLACED )) return ; 
 
Sergey Chalyshev :

Şu da var:

Sergey!

Nedense bana öyle geliyor ki bir bilet varsa (sipariş verdikten sonra), o zaman olamaz

onun durumu:

 ORDER_STATE_REQUEST_ADD
 
Михаил :

Sergey!

Nedense bana öyle geliyor ki bir bilet varsa (sipariş verdikten sonra), o zaman olamaz

onun durumu:

Ben de öyle düşünüyorum ama ben denk gelmedim bu hata işlem günlüğünden.

Bu kontrolü ekledikten sonra, silme ve değiştirmeden önce tüm durumları kaydettim. InvalidRequest ile artık karşılaşılmıyor.

Bu soru daha çok sunucu işleri ve geliştiriciler içindir, ORDER_STATE_REQUEST_ADD nasıl ortaya çıkar.

 
Sergey Chalyshev :

Ben de öyle düşünüyorum ama ben denk gelmedim bu hata işlem günlüğünden.

Bu kontrolü ekledikten sonra, silme ve değiştirmeden önce tüm durumları kaydettim. InvalidRequest ile artık karşılaşılmıyor.

Bu soru daha çok sunucu işleri ve geliştiriciler içindir, ORDER_STATE_REQUEST_ADD nasıl ortaya çıkar.

Muhtemelen, terminalde sunucunun yanıtını bekleyen oldukça büyük bir zaman aşımı var ...