요새. 실행 질문 - 페이지 86

 
fxsaber :
제 경우는 그렇지 않습니다. 모든 사용자에게 동일한 터미널 로그가 있습니다.

좋아요, 로그는 동일하지만 불행히도 결과는 다릅니다...

289ms와 9ms의 차이를 완고하게 보지 못합니다.

여기가 신선합니다(리얼 1531)

2017.02 . 17 14 : 05 : 01.032 Trades   'xxxxx' : buy limit 2.00 Eu- 9.17 at 65030
2017.02 . 17 14 : 05 : 01.437 Trades   'xxxxx' : accepted buy limit 2.00 Eu- 9.17 at 65030
2017.02 . 17 14 : 05 : 01.444 Trades   'xxxxx' : buy limit 2.00 Eu- 9.17 at 65030 placed for execution in 412.406 ms ( 179.952 ms on server)
2017.02 . 17 14 : 05 : 01.449 Trades   'xxxxx' : sell limit 1.00 BR- 8.17 at 57.45
2017.02 . 17 14 : 05 : 01.603 Trades   'xxxxx' : sell limit 1.00 LKOH- 6.17 at 34098 placed for execution in 554.628 ms ( 195.343 ms on server)
2017.02 . 17 14 : 05 : 01.604 Trades   'xxxxx' : accepted buy limit 3.00 MXI- 6.17 at 2172.70
2017.02 . 17 14 : 05 : 01.604 Trades   'xxxxx' : buy limit 3.00 MXI- 6.17 at 2172.70 placed for execution in 537.273 ms ( 11.579 ms on server)
2017.02 . 17 14 : 05 : 01.608 Trades   'xxxxx' : accepted sell limit 5.00 GBPU- 6.17 at 1.2495
2017.02 . 17 14 : 05 : 02.012 Trades   'xxxxx' : sell limit 5.00 GBPU- 6.17 at 1.2495 placed for execution in 921.827 ms ( 1.396 ms on server)
2017.02 . 17 14 : 05 : 02.013 Trades   'xxxxx' : accepted buy limit 5.00 HYDR- 6.17 at 10779
2017.02 . 17 14 : 05 : 02.015 Trades   'xxxxx' : accepted buy limit 2.00 MGNT- 9.17 at 9611
2017.02 . 17 14 : 05 : 02.017 Trades   'xxxxx' : accepted sell limit 2.00 MGNT- 9.17 at 11001
2017.02 . 17 14 : 05 : 02.018 Trades   'xxxxx' : accepted buy limit 1.00 ED- 9.17 at 1.0601
2017.02 . 17 14 : 05 : 02.019 Trades   'xxxxx' : buy limit 5.00 HYDR- 6.17 at 10779 placed for execution in 929.618 ms ( 3.608 ms on server)
2017.02 . 17 14 : 05 : 02.022 Trades   'xxxxx' : buy limit 2.00 MGNT- 9.17 at 9611 placed for execution in 610.425 ms ( 3.848 ms on server)
2017.02 . 17 14 : 05 : 02.029 Trades   'xxxxx' : sell limit 2.00 MGNT- 9.17 at 11001 placed for execution in 616.804 ms ( 3.793 ms on server)
2017.02 . 17 14 : 05 : 02.030 Trades   'xxxxx' : buy limit 1.00 ED- 9.17 at 1.0601 placed for execution in 616.485 ms ( 3.712 ms on server)
2017.02 . 17 14 : 05 : 02.040 Trades   'xxxxx' : cancel order # 52607654 sell limit 1.00 LKOH- 6.17 at 34098
2017.02 . 17 14 : 05 : 02.042 Trades   'xxxxx' : accepted sell limit 1.00 ED- 9.17 at 1.0849
2017.02 . 17 14 : 05 : 02.043 Trades   'xxxxx' : sell limit 1.00 ED- 9.17 at 1.0849 placed for execution in 629.309 ms ( 2.119 ms on server)
2017.02 . 17 14 : 05 : 02.215 Trades   'xxxxx' : accepted buy limit 2.00 AUDU- 6.17 at 0.7586
2017.02 . 17 14 : 05 : 02.216 Trades   'xxxxx' : accepted buy limit 5.00 TATN- 6.17 at 37027
2017.02 . 17 14 : 05 : 02.217 Trades   'xxxxx' : accepted sell limit 5.00 AUDU- 6.17 at 0.8025
2017.02 . 17 14 : 05 : 02.217 Trades   'xxxxx' : buy limit 2.00 AUDU- 6.17 at 0.7586 placed for execution in 793.001 ms ( 5.415 ms on server)
2017.02 . 17 14 : 05 : 02.519 Trades   'xxxxx' : buy limit 5.00 TATN- 6.17 at 37027 placed for execution in 1094.281 ms ( 5.535 ms on server)
2017.02 . 17 14 : 05 : 02.521 Trades   'xxxxx' : sell limit 5.00 AUDU- 6.17 at 0.8025 placed for execution in 1096.137 ms ( 5.514 ms on server)
2017.02 . 17 14 : 05 : 02.533 Trades   'xxxxx' : accepted sell limit 5.00 TATN- 6.17 at 42028
2017.02 . 17 14 : 05 : 02.533 Trades   'xxxxx' : sell limit 5.00 TATN- 6.17 at 42028 placed for execution in 1108.871 ms ( 1.341 ms on server)
 
prostotrader :

그래서 아마도 더 명확 할 것입니다

전문가 로그

2017.02 . 17 13 : 45 : 27.132  trader (RTS- 3.17 ,M1)      COrder::Place: Order sent to server...
2017.02 . 17 13 : 45 : 27.141  trader (RTS- 3.17 ,M1)       OnTradeTransaction : TRADE_TRANSACTION_REQUEST --> Order got ticket.
2017.02 . 17 13 : 45 : 27.421  trader (RTS- 3.17 ,M1)       OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED -- > Order place done.

289밀리초

터미널 로그

2017.02.17 13:45:27.132 Trades  '1007932': buy limit 2.00 RTS-6.17 at 115190
2017.02.17 13:45:27.141 Trades  '1007932': accepted buy limit 2.00 RTS-6.17 at 115190
2017.02.17 13:45:27.141 Trades  '1007932': buy limit 2.00 RTS-6.17 at 115190 placed for execution in 8.526 ms

9밀리초

동일한 이벤트를 하나의 색상으로 표시했습니다. 어떤 이유로 터미널 로그에서 두 줄 모두 27.141.141을 가지고 있습니다.

전문가의 로그 - 27.141 및 27.421. OnTradeTransaction 이 여전히 느려지는 것 같습니다. 이벤트가 터미널에 도착했지만 >200ms 후에야 OnTradeTransaction으로 전송되었습니다. EA가 이 200ms 동안 무언가를 하고 있었을 가능성이 있습니다. 이것이 지연이 발생하는 이유입니다. 출처 없이는 말할 수 없습니다.

 
fxsaber :

동일한 이벤트를 하나의 색상으로 표시했습니다. 어떤 이유로 터미널 로그에서 두 줄 모두 27.141.141을 가지고 있습니다.

전문가의 로그 - 27.141 및 27.421. OnTradeTransaction 이 여전히 느려지는 것 같습니다. 이벤트가 터미널에 도착했지만 >200ms 후에야 OnTradeTransaction으로 전송되었습니다. EA가 이 200ms 동안 무언가를 하고 있었을 가능성이 있습니다. 이것이 지연이 발생하는 이유입니다. 출처 없이는 말할 수 없습니다.

당신은 이 오프너 데모를 시도

//+------------------------------------------------------------------+
//|                                                   Test_delay.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"

ulong order_ticket;
ulong Magic= 1234567890 ;
ulong order_id;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   SetOrder();
   return ( INIT_SUCCEEDED );
  }

//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
   switch (trans.type)
     {
       case TRADE_TRANSACTION_REQUEST : if ((order_id!= 0 ) && (result.request_id==order_id))
        {
         order_ticket=result.order;
         Print ( __FUNCTION__ , ": TRADE_TRANSACTION_REQUEST --> Order got ticket." );
         order_id= 0 ;
        }
       break ;
       case TRADE_TRANSACTION_ORDER_UPDATE :   if ((order_ticket!= 0 ) && (trans.order==order_ticket))
        {
           switch (trans.order_state)
         {
           case ORDER_STATE_PLACED :
             Print ( __FUNCTION__ , ": TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Order place done." );
           break ;
         }
        }
       break ;
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SetOrder()
  {
   MqlTradeRequest request={ 0 };
   MqlTradeResult   result={ 0 };
   order_id= 0 ;
   order_ticket= 0 ;
   request.magic=Magic;
   request.symbol= Symbol ();
   request.volume= 1 ;
   request.type_filling= ORDER_FILLING_RETURN ;
   request.type_time= ORDER_TIME_DAY ;
   request.action= TRADE_ACTION_PENDING ;
   request.type= ORDER_TYPE_SELL_LIMIT ;
   request.comment= "" ;
   request.price= SymbolInfoDouble ( Symbol (), SYMBOL_SESSION_PRICE_LIMIT_MAX );
   if ( OrderSendAsync (request,result))
     {
       if ((result.retcode== TRADE_RETCODE_PLACED ) || (result.retcode== TRADE_RETCODE_DONE ))
        {
         order_id=result.request_id;
         Print ( __FUNCTION__ , ": Order send to server." );
        }
     }
   else
     { Print ( "Order not send." );}
  }
//+------------------------------------------------------------------+

터미널 로그

2017.02.17 14:48:33.361 Trades  '1007932': sell limit 1.00 RTS-3.17 at 121900
2017.02.17 14:48:33.368 Trades  '1007932': accepted sell limit 1.00 RTS-3.17 at 121900
2017.02.17 14:48:33.369 Trades  '1007932': sell limit 1.00 RTS-3.17 at 121900 placed for execution in 8.077 ms

8밀리초

전문가 로그

2017.02 . 17 14 : 48 : 33.361 Test_delay (RTS- 3.17 ,M1)        SetOrder: Order send to server.
2017.02 . 17 14 : 48 : 33.369 Test_delay (RTS- 3.17 ,M1)         OnTradeTransaction : TRADE_TRANSACTION_REQUEST --> Order got ticket.
2017.02 . 17 14 : 48 : 33.377 Test_delay (RTS- 3.17 ,M1)         OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Order place done.

16밀리초

전문가 "브레이크"는 어디에서???

 

이제 작업을 복잡하게 만들고 동기식 주문 배치를 추가해 보겠습니다.

//+------------------------------------------------------------------+
//|                                                   Test_delay.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"

ulong order_ticket;
ulong sync_order;
ulong Magic= 1234567890 ;
ulong order_id;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   SetOrder();
   return ( INIT_SUCCEEDED );
  }

//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
   switch (trans.type)
     {
       case TRADE_TRANSACTION_REQUEST : if ((order_id!= 0 ) && (result.request_id==order_id))
        {
         order_ticket=result.order;
         Print ( __FUNCTION__ , ": TRADE_TRANSACTION_REQUEST --> Order got ticket." );
         order_id= 0 ;
        }
       break ;
       case TRADE_TRANSACTION_ORDER_UPDATE :   if ((order_ticket> 0 ) && (trans.order==order_ticket))
        {
           switch (trans.order_state)
         {
           case ORDER_STATE_PLACED :
             Print ( __FUNCTION__ , ": TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Async Order place done." );
            SetSyncOrder();
           break ;
         }
        }
         else
         if ((sync_order> 0 ) && (trans.order==sync_order))
          {
             switch (trans.order_state)
           {
             case ORDER_STATE_PLACED :
               Print ( __FUNCTION__ , ": TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Sync order place done. And found in terminal." );
             break ;
           }
          }
        
       break ;
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SetSyncOrder()
  {
   MqlTradeRequest request={ 0 };
   MqlTradeResult   result={ 0 };
   order_id= 0 ;
   sync_order= 0 ;
   request.magic=Magic;
   request.symbol= Symbol ();
   request.volume= 1 ;
   request.type_filling= ORDER_FILLING_RETURN ;
   request.type_time= ORDER_TIME_DAY ;
   request.action= TRADE_ACTION_PENDING ;
   request.type= ORDER_TYPE_SELL_LIMIT ;
   request.comment= "" ;
   request.price= SymbolInfoDouble ( Symbol (), SYMBOL_SESSION_PRICE_LIMIT_MAX );
   Print ( __FUNCTION__ , ": Sync Order send to server..." );
   if ( OrderSend (request,result))
     {
       if ((result.retcode== TRADE_RETCODE_PLACED ) || (result.retcode== TRADE_RETCODE_DONE ))
        {
         sync_order=result.order;
         Print ( __FUNCTION__ , ": Sync Order place done? but nof found in terminal." );
        }
     }
   else
     { Print ( "Order not send." );}
  }
   //---------------------
   void SetOrder()
  {
   MqlTradeRequest request={ 0 };
   MqlTradeResult   result={ 0 };
   order_id= 0 ;
   order_ticket= 0 ;
   request.magic=Magic;
   request.symbol= Symbol ();
   request.volume= 1 ;
   request.type_filling= ORDER_FILLING_RETURN ;
   request.type_time= ORDER_TIME_DAY ;
   request.action= TRADE_ACTION_PENDING ;
   request.type= ORDER_TYPE_SELL_LIMIT ;
   request.comment= "" ;
   request.price= SymbolInfoDouble ( Symbol (), SYMBOL_SESSION_PRICE_LIMIT_MAX );
   Print ( __FUNCTION__ , ": Async Order send to server..." );
   if ( OrderSendAsync (request,result))
     {
       if ((result.retcode== TRADE_RETCODE_PLACED ) || (result.retcode== TRADE_RETCODE_DONE ))
        {
         order_id=result.request_id;
         Print ( __FUNCTION__ , ": Async Order got request ID." );
        }
     }
   else
     { Print ( "Order not send." );}
  }
//+------------------------------------------------------------------+

터미널 로그

2017.02 . 17 15 : 17 : 15.279 Trades   '1007932' : sell limit 1.00 RTS- 3.17 at 121900
2017.02 . 17 15 : 17 : 15.292 Trades   '1007932' : accepted sell limit 1.00 RTS- 3.17 at 121900
2017.02 . 17 15 : 17 : 15.292 Trades   '1007932' : sell limit 1.00 RTS- 3.17 at 121900 placed for execution in 13.559 ms
2017.02 . 17 15 : 17 : 15.297 Trades   '1007932' : sell limit 1.00 RTS- 3.17 at 121900
2017.02 . 17 15 : 17 : 15.308 Trades   '1007932' : accepted sell limit 1.00 RTS- 3.17 at 121900
2017.02 . 17 15 : 17 : 15.310 Trades   '1007932' : sell limit 1.00 RTS- 3.17 at 121900 placed for execution
2017.02 . 17 15 : 17 : 15.317 Trades   '1007932' : order # 54040029 sell limit 1.00 / 1.00 RTS- 3.17 at 121900 done in 19.853 ms

비동기 모드 - 13ms. ( 처형 을 위해 배치됨 )

동기 - 20ms.

전문가 로그


2017.02 . 17 15 : 17 : 15.277 Test_delay (RTS- 3.17 ,M1)        SetOrder: Async Order send to server...
2017.02 . 17 15 : 17 : 15.279 Test_delay (RTS- 3.17 ,M1)        SetOrder: Async Order got request ID.
2017.02 . 17 15 : 17 : 15.292 Test_delay (RTS- 3.17 ,M1)         OnTradeTransaction : TRADE_TRANSACTION_REQUEST --> Order got ticket.
2017.02 . 17 15 : 17 : 15.297 Test_delay (RTS- 3.17 ,M1)         OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Async Order place done.
2017.02 . 17 15 : 17 : 15.297 Test_delay (RTS- 3.17 ,M1)        SetSyncOrder: Sync Order send to server...
2017.02 . 17 15 : 17 : 15.317 Test_delay (RTS- 3.17 ,M1)        SetSyncOrder: Sync Order place done? but nof found in terminal.
2017.02 . 17 15 : 17 : 15.317 Test_delay (RTS- 3.17 ,M1)         OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Sync order place done. And found in terminal.

비동기 모드 - 20ms. (단말 7ms 케이스는 어디에????)

동기 - 20ms.

 

우리는 지연의 이유를 결코 알 수 없을 것입니다,

FORTS에 대한 링크는 다음과 같기 때문입니다.

터미널 --> 인터넷 --> 브로커 네트워크 --> MT5 서버 --> 브로커 네트워크 --> 인터넷 - 터미널

개발자 자신이 지연을 처리하고 싶지 않다면 모든 것이 그렇게 될 것입니다.

 
prostotrader :

이제 작업을 복잡하게 만들고 동기식 주문 배치를 추가해 보겠습니다.

CI      0       14:59:53.943    Trades  '5122740': sell limit 1.00 MIX-3.17 at 225925
KL      0       14:59:53.997    Trades  '5122740': accepted sell limit 1.00 MIX-3.17 at 225925
OH      0       14:59:54.025    Trades  '5122740': order #134542376 sell limit 1.00 / 1.00 MIX-3.17 at market done in 82.884 ms
JF      0       14:59:54.026    Trades  '5122740': sell limit 1.00 MIX-3.17 at 225925
KM      0       14:59:54.082    Trades  '5122740': accepted sell limit 1.00 MIX-3.17 at 225925
PI      0       14:59:54.082    Trades  '5122740': order #134542377 sell limit 1.00 / 1.00 MIX-3.17 at market done in 57.025 ms
EN       0        14 : 59 : 53.942     Test (MIX- 3.17 ,M1)      SetOrder: Async Order send to server...
PP       0        14 : 59 : 53.943     Test (MIX- 3.17 ,M1)      SetOrder: Async Order got request ID.
JF       0        14 : 59 : 54.025     Test (MIX- 3.17 ,M1)       OnTradeTransaction : TRADE_TRANSACTION_REQUEST --> Order got ticket.
GP       0        14 : 59 : 54.026     Test (MIX- 3.17 ,M1)       OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Async Order place done.
KD       0        14 : 59 : 54.026     Test (MIX- 3.17 ,M1)      SetSyncOrder: Sync Order send to server...
JM       0        14 : 59 : 54.082     Test (MIX- 3.17 ,M1)      SetSyncOrder: Sync Order place done? but nof found in terminal.
DE       0        14 : 59 : 54.082     Test (MIX- 3.17 ,M1)       OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Sync order place done. And found in terminal.

MQ 데모.

 
prostotrader :

우리는 지연의 이유를 결코 알 수 없을 것입니다,

FORTS에 대한 링크는 다음과 같기 때문입니다.

터미널 --> 인터넷 --> 브로커 네트워크 --> MT5 서버 --> 브로커 네트워크 --> 인터넷 - 터미널

개발자 자신이 지연을 처리하고 싶지 않다면 모든 것이 그렇게 될 것입니다.

MQ-Demo에는 브레이크가 있으므로 제거할 것입니다. 그리고 다른 서버의 브레이크는 100% 덜합니다.
 
fxsaber :

CI      0       14:59:53.943    Trades  '5122740': sell limit 1.00 MIX-3.17 at 225925
KL      0       14:59:53.997    Trades  '5122740': accepted sell limit 1.00 MIX-3.17 at 225925
OH      0       14:59:54.025    Trades  '5122740': order #134542376 sell limit 1.00 / 1.00 MIX-3.17 at market done in 82.884 ms
JF      0       14:59:54.026    Trades  '5122740': sell limit 1.00 MIX-3.17 at 225925
KM      0       14:59:54.082    Trades  '5122740': accepted sell limit 1.00 MIX-3.17 at 225925
PI      0       14:59:54.082    Trades  '5122740': order #134542377 sell limit 1.00 / 1.00 MIX-3.17 at market done in 57.025 ms
EN       0        14 : 59 : 53.942     Test (MIX- 3.17 ,M1)      SetOrder: Async Order send to server...
PP       0        14 : 59 : 53.943     Test (MIX- 3.17 ,M1)      SetOrder: Async Order got request ID.
JF       0        14 : 59 : 54.025     Test (MIX- 3.17 ,M1)       OnTradeTransaction : TRADE_TRANSACTION_REQUEST --> Order got ticket.
GP       0        14 : 59 : 54.026     Test (MIX- 3.17 ,M1)       OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Async Order place done.
KD       0        14 : 59 : 54.026     Test (MIX- 3.17 ,M1)      SetSyncOrder: Sync Order send to server...
JM       0        14 : 59 : 54.082     Test (MIX- 3.17 ,M1)      SetSyncOrder: Sync Order place done? but nof found in terminal.
DE       0        14 : 59 : 54.082     Test (MIX- 3.17 ,M1)       OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Sync order place done. And found in terminal.

MQ 데모.

그러나 이것은 의심의 여지가 없습니까?

JF       0        14 : 59 : 54.025     Test (MIX- 3.17 ,M1)       OnTradeTransaction : TRADE_TRANSACTION_REQUEST --> Order got ticket.
GP       0        14 : 59 : 54.026     Test (MIX- 3.17 ,M1)       OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Async Order place done.

1ms - 일어날 수 없습니다!

다시 확인하십시오.

추가됨

1525 빌드에서 테스트했습니다.

 
prostotrader :

그러나 이것은 의심의 여지가 없습니까?

JF       0        14 : 59 : 54.025     Test (MIX- 3.17 ,M1)       OnTradeTransaction : TRADE_TRANSACTION_REQUEST --> Order got ticket.
GP       0        14 : 59 : 54.026     Test (MIX- 3.17 ,M1)       OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Async Order place done.

1ms - 일어날 수 없습니다!

터미널 자체가 로그에 쓰는 시간에 대해서만 의심이 있습니다.

그러므로 그렇게 했다

//+------------------------------------------------------------------+
//|                                                   Test_delay.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"

ulong order_ticket;
ulong sync_order;
ulong Magic= 1234567890 ;
ulong order_id;

ulong StartTime;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   StartTime = GetMicrosecondCount ();
  
   SetOrder();
   return ( INIT_SUCCEEDED );
  }

//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
   switch (trans.type)
     {
       case TRADE_TRANSACTION_REQUEST : if ((order_id!= 0 ) && (result.request_id==order_id))
        {
         Print ( DoubleToString (( GetMicrosecondCount () - StartTime) / 1000.0 , 3 ));
         order_ticket=result.order;
         Print ( __FUNCTION__ , ": TRADE_TRANSACTION_REQUEST --> Order got ticket." );
         order_id= 0 ;
        }
       break ;
       case TRADE_TRANSACTION_ORDER_UPDATE :   if ((order_ticket> 0 ) && (trans.order==order_ticket))
        {
           switch (trans.order_state)
         {
           case ORDER_STATE_PLACED :
             Print ( DoubleToString (( GetMicrosecondCount () - StartTime) / 1000.0 , 3 ));
            
             Print ( __FUNCTION__ , ": TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Async Order place done." );
            
            SetSyncOrder();
           break ;
         }
        }
         else
         if ((sync_order> 0 ) && (trans.order==sync_order))
          {
             switch (trans.order_state)
           {
             case ORDER_STATE_PLACED :
               Print ( DoubleToString (( GetMicrosecondCount () - StartTime) / 1000.0 , 3 ));             
              
               Print ( __FUNCTION__ , ": TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Sync order place done. And found in terminal." );
             break ;
           }
          }
        
       break ;
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SetSyncOrder()
  {
   MqlTradeRequest request={ 0 };
   MqlTradeResult   result={ 0 };
   order_id= 0 ;
   sync_order= 0 ;
   request.magic=Magic;
   request.symbol= Symbol ();
   request.volume= 1 ;
   request.type_filling= ORDER_FILLING_RETURN ;
   request.type_time= ORDER_TIME_DAY ;
   request.action= TRADE_ACTION_PENDING ;
   request.type= ORDER_TYPE_SELL_LIMIT ;
   request.comment= "" ;
   request.price= SymbolInfoDouble ( Symbol (), SYMBOL_SESSION_PRICE_LIMIT_MAX );
   Print ( __FUNCTION__ , ": Sync Order send to server..." );

   StartTime = GetMicrosecondCount ();
  
   if ( OrderSend (request,result))
     {
       if ((result.retcode== TRADE_RETCODE_PLACED ) || (result.retcode== TRADE_RETCODE_DONE ))
        {
         sync_order=result.order;
         Print ( __FUNCTION__ , ": Sync Order place done? but nof found in terminal." );
        }
     }
   else
     { Print ( "Order not send." );}
  }
   //---------------------
   void SetOrder()
  {
   MqlTradeRequest request={ 0 };
   MqlTradeResult   result={ 0 };
   order_id= 0 ;
   order_ticket= 0 ;
   request.magic=Magic;
   request.symbol= Symbol ();
   request.volume= 1 ;
   request.type_filling= ORDER_FILLING_RETURN ;
   request.type_time= ORDER_TIME_DAY ;
   request.action= TRADE_ACTION_PENDING ;
   request.type= ORDER_TYPE_SELL_LIMIT ;
   request.comment= "" ;
   request.price= SymbolInfoDouble ( Symbol (), SYMBOL_SESSION_PRICE_LIMIT_MAX );
   Print ( __FUNCTION__ , ": Async Order send to server..." );

   StartTime = GetMicrosecondCount ();
  
   if ( OrderSendAsync (request,result))
     {
       if ((result.retcode== TRADE_RETCODE_PLACED ) || (result.retcode== TRADE_RETCODE_DONE ))
        {
         order_id=result.request_id;
         Print ( __FUNCTION__ , ": Async Order got request ID." );
        }
     }
   else
     { Print ( "Order not send." );}
  }
//+------------------------------------------------------------------+

무엇을 제공합니까?

 
fxsaber :

무엇을 제공합니까?

2017.02 . 17 16 : 20 : 47.292 Trades   '1007932' : sell limit 1.00 RTS- 3.17 at 121520
2017.02 . 17 16 : 20 : 47.299 Trades   '1007932' : accepted sell limit 1.00 RTS- 3.17 at 121520
2017.02 . 17 16 : 20 : 47.300 Trades   '1007932' : sell limit 1.00 RTS- 3.17 at 121520 placed for execution in 8.287 ms
2017.02 . 17 16 : 20 : 47.307 Trades   '1007932' : sell limit 1.00 RTS- 3.17 at 121520
2017.02 . 17 16 : 20 : 47.315 Trades   '1007932' : accepted sell limit 1.00 RTS- 3.17 at 121520
2017.02 . 17 16 : 20 : 47.316 Trades   '1007932' : sell limit 1.00 RTS- 3.17 at 121520 placed for execution
2017.02 . 17 16 : 20 : 47.323 Trades   '1007932' : order # 54042531 sell limit 1.00 / 1.00 RTS- 3.17 at 121520 done in 15.978 ms


2017.02 . 17 16 : 17 : 57.121 Test_delay (RTS- 3.17 ,M1)        SetOrder: Async Order send to server...
2017.02 . 17 16 : 17 : 57.122 Test_delay (RTS- 3.17 ,M1)        SetOrder: Async Order got request ID.
2017.02 . 17 16 : 17 : 57.132 Test_delay (RTS- 3.17 ,M1)         OnTradeTransaction : TRADE_TRANSACTION_REQUEST --> Order got ticket.
2017.02 . 17 16 : 17 : 57.146 Test_delay (RTS- 3.17 ,M1)         OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Async Order place done.
2017.02 . 17 16 : 17 : 57.146 Test_delay (RTS- 3.17 ,M1)        SetSyncOrder: Sync Order send to server...
2017.02 . 17 16 : 17 : 57.161 Test_delay (RTS- 3.17 ,M1)        SetSyncOrder: Sync Order place done, but not found in terminal.
2017.02 . 17 16 : 17 : 57.161 Test_delay (RTS- 3.17 ,M1)         OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Sync order place done and found in terminal.
2017.02 . 17 16 : 20 : 47.291 Test_delay (RTS- 3.17 ,M1)        SetOrder: Async Order send to server...
2017.02 . 17 16 : 20 : 47.292 Test_delay (RTS- 3.17 ,M1)        SetOrder: Async Order got request ID.
2017.02 . 17 16 : 20 : 47.300 Test_delay (RTS- 3.17 ,M1)         8.305
2017.02 . 17 16 : 20 : 47.300 Test_delay (RTS- 3.17 ,M1)         OnTradeTransaction : TRADE_TRANSACTION_REQUEST --> Order got ticket.
2017.02 . 17 16 : 20 : 47.307 Test_delay (RTS- 3.17 ,M1)         15.644
2017.02 . 17 16 : 20 : 47.307 Test_delay (RTS- 3.17 ,M1)         OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Async Order place done.
2017.02 . 17 16 : 20 : 47.307 Test_delay (RTS- 3.17 ,M1)        SetSyncOrder: Sync Order send to server...
2017.02 . 17 16 : 20 : 47.323 Test_delay (RTS- 3.17 ,M1)        SetSyncOrder: Sync Order place done? but nof found in terminal.
2017.02 . 17 16 : 20 : 47.323 Test_delay (RTS- 3.17 ,M1)         16.033
2017.02 . 17 16 : 20 : 47.323 Test_delay (RTS- 3.17 ,M1)         OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Sync order place done. And found in terminal.

빌드 1533

:):):) 말도 안되는 소리 ....

추가됨

이렇게 짧은 시간에 현지 시간이 정확한데 추가로 시간을 표기하는 게 무슨 의미가 있겠습니까?

사유: