Bir piyasa emri nasıl doğru bir şekilde açılır? - sayfa 2

 
Gennady Mazur :
Ve yine de, standart fonksiyon emirlerin yürütülmesini, onların doldurulmasını destekliyor mu, çünkü daha önce açmak için CiTrade'i kullandım, emirlerin yerine getirilmesini istemediğim borsaya gelene kadar, çünkü. dolguyu belirlemek imkansızdı

SetTypeDoldurma

SetTypeDoldurma

Yürütme için sipariş türünü ayarlar


İhtiyacınız olanı yükleyin.
 
Gennady Mazur :
Evet ve önceki konuda, bu forumun guruları, bu bilginin her zaman geldiğinden emin oldum ... neredeyse anında ... ve bilet sunucudan olumlu bir yanıtla düzenlenmezse, sipariş verilmedi. yer almak
Ne tür bir saçmalık?

Ayrıca OnTradeTransaction olayını kullanmayı deneyin. Bir yerde, tüm ticaret işlemlerinin telefon dinlemesinin bir örneği var. Yanılmıyorsam, o zaman Rosh ortaya çıktı. Bak...

Genel olarak, alım satım işlemleri arasında duraklamalar eklemek iyi bir tondur ;-)
 
Sergey Chalyshev :

Şu anda ve burada gurular öğretecek))

Tecrübenle, burada bu tür soruları sormak uygun değil.

Sergey, evet, yeterince deneyim var ... ama öğrenmek için asla geç değildir ... ya daha önce bir şeyi yanlış anladıysan ya da belki yeni bir şey tanıttılarsa ... Sormak zor değil, belki başka biri işe yarar ... ya da belki zaten bir tür prablochkoy ile karşı karşıya kaldı ve şimdi her şeye 5 dakika içinde karar verilecek.
 
Dennis Kirichenko :
Ne tür bir saçmalık?

Ayrıca OnTradeTransaction olayını kullanmayı deneyin. Bir yerde, tüm ticaret işlemlerinin telefon dinlemesinin bir örneği var. Yanılmıyorsam, o zaman Rosh ortaya çıktı. Bak...
Dinleme örneği OrderSendAsync içinde olmalıdır
 
Vladimir Karputov :

SetTypeDoldurma

SetTypeDoldurma

Yürütme için sipariş türünü ayarlar


İhtiyacınız olanı yükleyin.
Şey .... sorularda bir anlam olduğu ortaya çıktı .... teşekkürler
 
Dennis Kirichenko :
Ne tür bir saçmalık?

Ayrıca OnTradeTransaction olayını kullanmayı deneyin. Bir yerde, tüm ticaret işlemlerinin telefon dinlemesinin bir örneği var. Yanılmıyorsam, o zaman Rosh ortaya çıktı. Bak...

Genel olarak, alım satım işlemleri arasında duraklamalar eklemek iyi bir tondur ;-)
Hazırda bekletme modunu zaten düşündüm, ancak bu en uygun çözüm değil ....
 
Gennady Mazur :
Hazırda bekletme modunu zaten düşündüm, ancak bu en uygun çözüm değil ....
Hazırda bekletme, sonrasında değil, ticaret işlemleri arasında gereklidir. Aksi takdirde, sunucu (broker) tüccarın faaliyetini beğenmeyecektir :-))

En iyi çıkış yolu, anlaşmanın gelmesini beklemek. İşlemler açısından bu "TRADE_TRANSACTION_DEAL_ADD".

Vladimir Karputov bunu defalarca yazdı . Konuları da arayın...

Burada seçmelerimi buldum.

//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
//---
   static int counter= 0 ;   // счетчик вызовов OnTradeTransaction()
   static uint lasttime= 0 ; // время последнего вызова OnTradeTransaction()
//---
   uint time= GetTickCount ();
//--- если последняя транзакция была больше 1 секунды назад
   if (time-lasttime> 1000 )
     {
      counter= 0 ; // значит, это новая торговая операция и можно сбросить счетчик
       if ( IS_DEBUG_MODE )
         Print ( " Новая торговая операция" );
     }
   lasttime=time;
   counter++;
   Print (counter, ". " , __FUNCTION__ );
//--- результат выполнения торгового запроса
   ulong             lastOrderID   =trans.order;
   ENUM_ORDER_TYPE   lastOrderType =trans.order_type;
   ENUM_ORDER_STATE lastOrderState=trans.order_state;
//--- имя символа, по которому произошла транзакция
   string trans_symbol=trans.symbol;
//--- тип транзакции
   ENUM_TRADE_TRANSACTION_TYPE   trans_type=trans.type;
   switch (trans.type)
     {
       case    TRADE_TRANSACTION_POSITION :   // изменение позиции
        {
         ulong pos_ID=trans.position;
         PrintFormat ( "MqlTradeTransaction: Position  #%d %s modified: SL=%.5f TP=%.5f" ,
                     pos_ID,trans_symbol,trans.price_sl,trans.price_tp);
        }
       break ;
       case TRADE_TRANSACTION_REQUEST :     // отправка торгового запроса
        {
         PrintFormat ( "MqlTradeTransaction: TRADE_TRANSACTION_REQUEST" );
         break ;
        }
       case TRADE_TRANSACTION_DEAL_ADD :     // добавление сделки
        {
         ulong           lastDealID   =trans.deal;
         ENUM_DEAL_TYPE lastDealType =trans.deal_type;
         double         lastDealVolume=trans.volume;
         //--- идентификатор сделки во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if ( HistoryDealSelect (lastDealID))
            Exchange_ticket= HistoryDealGetString (lastDealID, DEAL_EXTERNAL_ID );
         if (Exchange_ticket!= "" )
            Exchange_ticket= StringFormat ( "(MOEX deal=%s)" ,Exchange_ticket);
         PrintFormat ( "MqlTradeTransaction: %s deal #%d %s %s %.2f lot   %s" , EnumToString (trans_type),
                     lastDealID, EnumToString (lastDealType),trans_symbol,lastDealVolume,Exchange_ticket);
        }
       break ;
       case TRADE_TRANSACTION_HISTORY_ADD : // добавление ордера в историю
        {
         //--- идентификатор ордера во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if (lastOrderState== ORDER_STATE_FILLED )
           {
             if ( HistoryOrderSelect (lastOrderID))
               Exchange_ticket= HistoryOrderGetString (lastOrderID, ORDER_EXTERNAL_ID );
             if (Exchange_ticket!= "" )
               Exchange_ticket= StringFormat ( "(MOEX ticket=%s)" ,Exchange_ticket);
           }
         PrintFormat ( "MqlTradeTransaction: %s order #%d %s %s %s   %s" , EnumToString (trans_type),
                     lastOrderID, EnumToString (lastOrderType),trans_symbol, EnumToString (lastOrderState),Exchange_ticket);
        }
       break ;
       default : // прочие транзакции  
        {
         //--- идентификатор ордера во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if (lastOrderState== ORDER_STATE_PLACED )
           {
             if ( OrderSelect (lastOrderID))
               Exchange_ticket= OrderGetString ( ORDER_EXTERNAL_ID );
             if (Exchange_ticket!= "" )
               Exchange_ticket= StringFormat ( "MOEX ticket=%s" ,Exchange_ticket);
           }
         PrintFormat ( "MqlTradeTransaction: %s order #%d %s %s   %s" , EnumToString (trans_type),
                     lastOrderID, EnumToString (lastOrderType), EnumToString (lastOrderState),Exchange_ticket);
        }
       break ;
     }
//--- тикет ордера    
   ulong orderID_result=result.order;
   string retcode_result= this .GetRetcodeID(result.retcode);
   if (orderID_result!= 0 )
       PrintFormat ( "MqlTradeResult: order #%d retcode=%s " ,orderID_result,retcode_result);
  }
 
Dennis Kirichenko :

Genel olarak, alım satım işlemleri arasında duraklamalar eklemek iyi bir tondur ;-)

Gülüşün ne anlama geliyor anlamadım?

Bunu senden duymayı beklemiyordum. Ne duraklıyor, yoksa şaka mı yapıyorsun?

 
Dennis Kirichenko :
En iyi çıkış yolu, anlaşmanın gelmesini beklemek. İşlemler açısından bu "TRADE_TRANSACTION_DEAL_ADD".

Burada seçmelerimi buldum.

//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
//---
   static int counter= 0 ;   // счетчик вызовов OnTradeTransaction()
   static uint lasttime= 0 ; // время последнего вызова OnTradeTransaction()
//---
   uint time= GetTickCount ();
//--- если последняя транзакция была больше 1 секунды назад
   if (time-lasttime> 1000 )
     {
      counter= 0 ; // значит, это новая торговая операция и можно сбросить счетчик
       if ( IS_DEBUG_MODE )
         Print ( " Новая торговая операция" );
     }
   lasttime=time;
   counter++;
   Print (counter, ". " , __FUNCTION__ );
//--- результат выполнения торгового запроса
   ulong             lastOrderID   =trans.order;
   ENUM_ORDER_TYPE   lastOrderType =trans.order_type;
   ENUM_ORDER_STATE lastOrderState=trans.order_state;
//--- имя символа, по которому произошла транзакция
   string trans_symbol=trans.symbol;
//--- тип транзакции
   ENUM_TRADE_TRANSACTION_TYPE   trans_type=trans.type;
   switch (trans.type)
     {
       case    TRADE_TRANSACTION_POSITION :   // изменение позиции
        {
         ulong pos_ID=trans.position;
         PrintFormat ( "MqlTradeTransaction: Position  #%d %s modified: SL=%.5f TP=%.5f" ,
                     pos_ID,trans_symbol,trans.price_sl,trans.price_tp);
        }
       break ;
       case TRADE_TRANSACTION_REQUEST :     // отправка торгового запроса
        {
         PrintFormat ( "MqlTradeTransaction: TRADE_TRANSACTION_REQUEST" );
         break ;
        }
       case TRADE_TRANSACTION_DEAL_ADD :     // добавление сделки
        {
         ulong           lastDealID   =trans.deal;
         ENUM_DEAL_TYPE lastDealType =trans.deal_type;
         double         lastDealVolume=trans.volume;
         //--- идентификатор сделки во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if ( HistoryDealSelect (lastDealID))
            Exchange_ticket= HistoryDealGetString (lastDealID, DEAL_EXTERNAL_ID );
         if (Exchange_ticket!= "" )
            Exchange_ticket= StringFormat ( "(MOEX deal=%s)" ,Exchange_ticket);
         PrintFormat ( "MqlTradeTransaction: %s deal #%d %s %s %.2f lot   %s" , EnumToString (trans_type),
                     lastDealID, EnumToString (lastDealType),trans_symbol,lastDealVolume,Exchange_ticket);
        }
       break ;
       case TRADE_TRANSACTION_HISTORY_ADD : // добавление ордера в историю
        {
         //--- идентификатор ордера во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if (lastOrderState== ORDER_STATE_FILLED )
           {
             if ( HistoryOrderSelect (lastOrderID))
               Exchange_ticket= HistoryOrderGetString (lastOrderID, ORDER_EXTERNAL_ID );
             if (Exchange_ticket!= "" )
               Exchange_ticket= StringFormat ( "(MOEX ticket=%s)" ,Exchange_ticket);
           }
         PrintFormat ( "MqlTradeTransaction: %s order #%d %s %s %s   %s" , EnumToString (trans_type),
                     lastOrderID, EnumToString (lastOrderType),trans_symbol, EnumToString (lastOrderState),Exchange_ticket);
        }
       break ;
       default : // прочие транзакции  
        {
         //--- идентификатор ордера во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if (lastOrderState== ORDER_STATE_PLACED )
           {
             if ( OrderSelect (lastOrderID))
               Exchange_ticket= OrderGetString ( ORDER_EXTERNAL_ID );
             if (Exchange_ticket!= "" )
               Exchange_ticket= StringFormat ( "MOEX ticket=%s" ,Exchange_ticket);
           }
         PrintFormat ( "MqlTradeTransaction: %s order #%d %s %s   %s" , EnumToString (trans_type),
                     lastOrderID, EnumToString (lastOrderType), EnumToString (lastOrderState),Exchange_ticket);
        }
       break ;
     }
//--- тикет ордера    
   ulong orderID_result=result.order;
   string retcode_result= this .GetRetcodeID(result.retcode);
   if (orderID_result!= 0 )
       PrintFormat ( "MqlTradeResult: order #%d retcode=%s " ,orderID_result,retcode_result);
  }
Korku ((
 
Dennis Kirichenko :
En iyi çıkış yolu, anlaşmanın gelmesini beklemek. İşlemler açısından bu "TRADE_TRANSACTION_DEAL_ADD".

Burada seçmelerimi buldum.

//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
//---
   static int counter= 0 ;   // счетчик вызовов OnTradeTransaction()
   static uint lasttime= 0 ; // время последнего вызова OnTradeTransaction()
//---
   uint time= GetTickCount ();
//--- если последняя транзакция была больше 1 секунды назад
   if (time-lasttime> 1000 )
     {
      counter= 0 ; // значит, это новая торговая операция и можно сбросить счетчик
       if ( IS_DEBUG_MODE )
         Print ( " Новая торговая операция" );
     }
   lasttime=time;
   counter++;
   Print (counter, ". " , __FUNCTION__ );
//--- результат выполнения торгового запроса
   ulong             lastOrderID   =trans.order;
   ENUM_ORDER_TYPE   lastOrderType =trans.order_type;
   ENUM_ORDER_STATE lastOrderState=trans.order_state;
//--- имя символа, по которому произошла транзакция
   string trans_symbol=trans.symbol;
//--- тип транзакции
   ENUM_TRADE_TRANSACTION_TYPE   trans_type=trans.type;
   switch (trans.type)
     {
       case    TRADE_TRANSACTION_POSITION :   // изменение позиции
        {
         ulong pos_ID=trans.position;
         PrintFormat ( "MqlTradeTransaction: Position  #%d %s modified: SL=%.5f TP=%.5f" ,
                     pos_ID,trans_symbol,trans.price_sl,trans.price_tp);
        }
       break ;
       case TRADE_TRANSACTION_REQUEST :     // отправка торгового запроса
        {
         PrintFormat ( "MqlTradeTransaction: TRADE_TRANSACTION_REQUEST" );
         break ;
        }
       case TRADE_TRANSACTION_DEAL_ADD :     // добавление сделки
        {
         ulong           lastDealID   =trans.deal;
         ENUM_DEAL_TYPE lastDealType =trans.deal_type;
         double         lastDealVolume=trans.volume;
         //--- идентификатор сделки во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if ( HistoryDealSelect (lastDealID))
            Exchange_ticket= HistoryDealGetString (lastDealID, DEAL_EXTERNAL_ID );
         if (Exchange_ticket!= "" )
            Exchange_ticket= StringFormat ( "(MOEX deal=%s)" ,Exchange_ticket);
         PrintFormat ( "MqlTradeTransaction: %s deal #%d %s %s %.2f lot   %s" , EnumToString (trans_type),
                     lastDealID, EnumToString (lastDealType),trans_symbol,lastDealVolume,Exchange_ticket);
        }
       break ;
       case TRADE_TRANSACTION_HISTORY_ADD : // добавление ордера в историю
        {
         //--- идентификатор ордера во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if (lastOrderState== ORDER_STATE_FILLED )
           {
             if ( HistoryOrderSelect (lastOrderID))
               Exchange_ticket= HistoryOrderGetString (lastOrderID, ORDER_EXTERNAL_ID );
             if (Exchange_ticket!= "" )
               Exchange_ticket= StringFormat ( "(MOEX ticket=%s)" ,Exchange_ticket);
           }
         PrintFormat ( "MqlTradeTransaction: %s order #%d %s %s %s   %s" , EnumToString (trans_type),
                     lastOrderID, EnumToString (lastOrderType),trans_symbol, EnumToString (lastOrderState),Exchange_ticket);
        }
       break ;
       default : // прочие транзакции  
        {
         //--- идентификатор ордера во внешней системе - тикет, присваиваемый Московской биржей
         string Exchange_ticket= "" ;
         if (lastOrderState== ORDER_STATE_PLACED )
           {
             if ( OrderSelect (lastOrderID))
               Exchange_ticket= OrderGetString ( ORDER_EXTERNAL_ID );
             if (Exchange_ticket!= "" )
               Exchange_ticket= StringFormat ( "MOEX ticket=%s" ,Exchange_ticket);
           }
         PrintFormat ( "MqlTradeTransaction: %s order #%d %s %s   %s" , EnumToString (trans_type),
                     lastOrderID, EnumToString (lastOrderType), EnumToString (lastOrderState),Exchange_ticket);
        }
       break ;
     }
//--- тикет ордера    
   ulong orderID_result=result.order;
   string retcode_result= this .GetRetcodeID(result.retcode);
   if (orderID_result!= 0 )
       PrintFormat ( "MqlTradeResult: order #%d retcode=%s " ,orderID_result,retcode_result);
  }
Evet, çok faydalı bilgiler ... teşekkürler ...
ve eğer dinlemezseniz ve uyumazsanız, siparişin olumlu bir sonucu olan, ancak bir pozisyonun yokluğunda bile, danışmanın ne beklediğimizi bilmesini sağlamanın başka bir yolu var mı?