2017.02 . 1713 : 45 : 27.132 trader (RTS- 3.17 ,M1) COrder::Place: Order sent to server... 2017.02 . 1713 : 45 : 27.141 trader (RTS- 3.17 ,M1) OnTradeTransaction : TRADE_TRANSACTION_REQUEST --> Order got ticket. 2017.02 . 1713 : 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 동안 무언가를 하고 있었을 가능성이 있습니다. 이것이 지연이 발생하는 이유입니다. 출처 없이는 말할 수 없습니다.
동일한 이벤트를 하나의 색상으로 표시했습니다. 어떤 이유로 터미널 로그에서 두 줄 모두 27.141.141을 가지고 있습니다.
전문가의 로그 - 27.141 및 27.421. OnTradeTransaction 이 여전히 느려지는 것 같습니다. 이벤트가 터미널에 도착했지만 >200ms 후에야 OnTradeTransaction으로 전송되었습니다. EA가 이 200ms 동안 무언가를 하고 있었을 가능성이 있습니다. 이것이 지연이 발생하는 이유입니다. 출처 없이는 말할 수 없습니다.
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 014 : 59 : 53.942 Test (MIX- 3.17 ,M1) SetOrder: Async Order send to server... PP 014 : 59 : 53.943 Test (MIX- 3.17 ,M1) SetOrder: Async Order got request ID. JF 014 : 59 : 54.025 Test (MIX- 3.17 ,M1) OnTradeTransaction : TRADE_TRANSACTION_REQUEST --> Order got ticket. GP 014 : 59 : 54.026 Test (MIX- 3.17 ,M1) OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Async Order place done. KD 014 : 59 : 54.026 Test (MIX- 3.17 ,M1) SetSyncOrder: Sync Order send to server... JM 014 : 59 : 54.082 Test (MIX- 3.17 ,M1) SetSyncOrder: Sync Order place done? but nof found in terminal. DE 014 : 59 : 54.082 Test (MIX- 3.17 ,M1) OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Sync order place done. And found in terminal.
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 014 : 59 : 53.942 Test (MIX- 3.17 ,M1) SetOrder: Async Order send to server... PP 014 : 59 : 53.943 Test (MIX- 3.17 ,M1) SetOrder: Async Order got request ID. JF 014 : 59 : 54.025 Test (MIX- 3.17 ,M1) OnTradeTransaction : TRADE_TRANSACTION_REQUEST --> Order got ticket. GP 014 : 59 : 54.026 Test (MIX- 3.17 ,M1) OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Async Order place done. KD 014 : 59 : 54.026 Test (MIX- 3.17 ,M1) SetSyncOrder: Sync Order send to server... JM 014 : 59 : 54.082 Test (MIX- 3.17 ,M1) SetSyncOrder: Sync Order place done? but nof found in terminal. DE 014 : 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 014 : 59 : 54.025 Test (MIX- 3.17 ,M1) OnTradeTransaction : TRADE_TRANSACTION_REQUEST --> Order got ticket. GP 014 : 59 : 54.026 Test (MIX- 3.17 ,M1) OnTradeTransaction : TRADE_TRANSACTION_ORDER_UPDATE --> ORDER_STATE_PLACED --> Async Order place done.
제 경우는 그렇지 않습니다. 모든 사용자에게 동일한 터미널 로그가 있습니다.
좋아요, 로그는 동일하지만 불행히도 결과는 다릅니다...
289ms와 9ms의 차이를 완고하게 보지 못합니다.
여기가 신선합니다(리얼 1531)
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)
그래서 아마도 더 명확 할 것입니다
전문가 로그
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.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 동안 무언가를 하고 있었을 가능성이 있습니다. 이것이 지연이 발생하는 이유입니다. 출처 없이는 말할 수 없습니다.
동일한 이벤트를 하나의 색상으로 표시했습니다. 어떤 이유로 터미널 로그에서 두 줄 모두 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.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.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.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 서버 --> 브로커 네트워크 --> 인터넷 - 터미널
개발자 자신이 지연을 처리하고 싶지 않다면 모든 것이 그렇게 될 것입니다.
이제 작업을 복잡하게 만들고 동기식 주문 배치를 추가해 보겠습니다.
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
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 데모.
우리는 지연의 이유를 결코 알 수 없을 것입니다,
FORTS에 대한 링크는 다음과 같기 때문입니다.
터미널 --> 인터넷 --> 브로커 네트워크 --> MT5 서버 --> 브로커 네트워크 --> 인터넷 - 터미널
개발자 자신이 지연을 처리하고 싶지 않다면 모든 것이 그렇게 될 것입니다.
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
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 데모.
그러나 이것은 의심의 여지가 없습니까?
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 빌드에서 테스트했습니다.
그러나 이것은 의심의 여지가 없습니까?
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." );}
}
//+------------------------------------------------------------------+
무엇을 제공합니까?
무엇을 제공합니까?
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.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
:):):) 말도 안되는 소리 ....
추가됨
이렇게 짧은 시간에 현지 시간이 정확한데 추가로 시간을 표기하는 게 무슨 의미가 있겠습니까?