MT5와 속도 - 페이지 24

 
Artyom Trishkin :

가장 가능성 있음 - 다음 릴리스 버전(현재 베타) 릴리스 이후

감사해요
 
Artyom Trishkin :

가장 가능성 있음 - 다음 릴리스 버전(현재 베타) 릴리스 이후

그리고 트랜잭션의 배열은 되지 않습니다?

 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MT5와 속도

fxsaber , 2020.08.13 04:36

  1. 비교적 큰 거래 내역이 있는 MetaQuotes-Demo 데모 계정에 로그인하십시오.
    1. 데모 계정에 작은 거래 내역이 있는 경우 자동 거래를 활성화하고 OrderSend-Test2.ex5 스크립트를 병렬로 실행합니다(응용 프로그램에서 소스 ).

이 고대 스크립트는 하나의 MQ-Demo 차트에서 실행하고 Market Watch에 더 많은 거래 기호를 추가하면 많은 브레이크를 표시합니다(저는 100개를 가졌습니다).

터미널 로그.

2020.09.04 17:51:33.112 Trades  '34510052': cancel order #702851395 buy stop 0.01 EURCAD at 1.55852
2020.09.04 17:51:33.512 Trades  '34510052': accepted cancel order #702851395 buy stop 0.01 EURCAD at 1.55852
2020.09.04 17:51:33.514 Trades  '34510052': cancel #702851395 buy stop 0.01 EURCAD at market done in 401.845 ms

예금은 401ms에서 제거되었습니다. 개발자는 거래 서버 로그에 액세스할 수 있으며 실행에 걸린 시간을 확인할 수 있습니다. 예를 들어 .

누구나 재현할 수 있습니다.


만일을 대비하여 결과가 있는 거래 주문은 다음과 같습니다.

 2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Alert : EURCAD 702851395 Request executed 401.915 + 0.003 ( 0 ) ms.
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.action = TRADE_ACTION_REMOVE ( 8 )
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.magic = 0
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.order = 702851395
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.symbol = EURCAD
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.volume = 0.0
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.price = 0.0
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.stoplimit = 0.0
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.sl = 0.0
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.tp = 0.0
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.deviation = 0
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.type = ORDER_TYPE_BUY ( 0 )
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.type_filling = ORDER_FILLING_FOK ( 0 )
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.type_time = ORDER_TIME_GTC ( 0 )
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.expiration = 1970.01 . 01 00 : 00 : 00
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.comment = 
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.position = 0
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Request.position_by = 0
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Result.retcode = 10009
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Result.deal = 0
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Result.order = 702851395
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Result.volume = 0.0
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Result.price = 0.0
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Result.bid = 0.0
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Result.ask = 0.0
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Result.comment = Request executed 401.915 + 0.003 ( 0 ) ms.
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Result.request_id = 6133
2020.09 . 04 17 : 51 : 33.514 OrderSend -Test2 (EURUSD,M1)     Result.retcode_external = 0


핑.

 2020.09 . 04 17 : 51 : 57.567 AccountInfoString ( ACCOUNT_SERVER ) = MetaQuotes-Demo
2020.09 . 04 17 : 51 : 57.567 TerminalInfoInteger ( TERMINAL_PING_LAST ) = 74808


스크립트는 약 10분 동안 실행되었습니다.


이 브레이크는 나를 귀찮게하지 않습니다. 상황을 개선하기 위해 어디에서 무엇을 조정할 수 있는지 알고 싶습니다. 터미널입니까 아니면 거래 서버입니까? 일반적으로 개발자는 재현하고 원하는 경우 이해할 수 있는 모든 가능성이 있습니다.

Особенности исполнения торговых приказов MT5
Особенности исполнения торговых приказов MT5
  • 2020.02.06
  • www.mql5.com
Анализировал с владельцем MT5-сервера тормоза торговых приказов. Запускался OrderSend-Test2.mq5 в том же месте, где MT5-сервер стоит. Т.е. нулевой пинг. Демо, все внутри. Изучались логи MT5-сервера (2170) и MT5-клиента (2280). Логи сервера не буду приводить, просто словами опишу. Думаю, результаты буду интерсны всем, т.к. это поможет раскрыть...
 
fxsaber :

이 고대 스크립트는 하나의 MQ-Demo 차트에서 실행하고 Market Watch에 더 많은 거래 기호 를 추가하면 많은 브레이크를 표시합니다(저는 100개를 가졌습니다).

나는 그런 경우를 기억한다

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MetaTrader 5 플랫폼 빌드 1880의 새 버전: 합성 상품의 전체 역사 계산

A100 , 2018.07.25 21:55

어떤 경우에도 부하를 고려해야 합니다.

나는 느린 컴퓨터를 가지고 있고... 그리고 나는 매우 느린 컴퓨터를 가지고 있습니다... 그래서... 매우 느린 컴퓨터에서 Market Watch에 63개의 기호를 추가하고 그 후에 F10을 누르면 MetaTrader가 완전히 멈춥니다(재시작은 필수)... 다른 모든 모드에서는 잘 작동하지만.

그러나 적어도 1년 동안 중단되었습니다. 여전히 32비트 버전에 있었지만

 
A100 :

그런 경우가 생각난다

Market Watch의 문자 수는 브레이크 재생에 있어 근본적으로 중요하지 않습니다. 나는 그것을 스스로했다.

쉽게 재생됩니다.
 2020.09 . 04 18 : 25 : 06.131 Trades   '34510052' : buy limit 0.01 USDPLN at 3.77653
2020.09 . 04 18 : 25 : 06.202 Trades   '34510052' : accepted buy limit 0.01 USDPLN at 3.77653
2020.09 . 04 18 : 25 : 06.202 Trades   '34510052' : order # 702911224 buy limit 0.01 / 0.01 USDPLN at 3.77653 done in 70.966 ms
2020.09 . 04 18 : 25 : 06.202 Trades   '34510052' : cancel order # 702911224 buy limit 0.01 USDPLN at 3.77653
2020.09 . 04 18 : 25 : 06.274 Trades   '34510052' : accepted cancel order # 702911224 buy limit 0.01 USDPLN at 3.77653
2020.09 . 04 18 : 25 : 06.274 Trades   '34510052' : cancel # 702911224 buy limit 0.01 USDPLN at market done in 71.859 ms
2020.09 . 04 18 : 25 : 06.274 Trades   '34510052' : buy stop 0.01 USDPLN at 3.79653
2020.09 . 04 18 : 25 : 06.481 Trades   '34510052' : instant sell 0.1 NZDSGD at 0.91421 , close # 702903930 buy 0.1 NZDSGD 0.91462
2020.09 . 04 18 : 25 : 06.982 Trades   '34510052' : accepted buy stop 0.01 USDPLN at 3.79653
2020.09 . 04 18 : 25 : 07.030 Trades   '34510052' : order # 702911229 buy stop 0.01 / 0.01 USDPLN at 3.79653 done in 755.302 ms
2020.09 . 04 18 : 25 : 07.030 Trades   '34510052' : accepted instant sell 0.1 NZDSGD at 0.91421 , close # 702903930 buy 0.1 NZDSGD 0.91462
2020.09 . 04 18 : 25 : 07.030 Trades   '34510052' : deal # 681898561 sell 0.1 NZDSGD at 0.91421 done (based on order # 702911234 )
2020.09 . 04 18 : 25 : 07.031 Trades   '34510052' : cancel order # 702911229 buy stop 0.01 USDPLN at 3.79653
2020.09 . 04 18 : 25 : 07.031 Trades   '34510052' : order # 702911234 sell 0.1 / 0.1 NZDSGD at 0.91421 done in 550.273 ms
2020.09 . 04 18 : 25 : 07.103 Trades   '34510052' : accepted cancel order # 702911229 buy stop 0.01 USDPLN at 3.79653
2020.09 . 04 18 : 25 : 07.103 Trades   '34510052' : cancel # 702911229 buy stop 0.01 USDPLN at market done in 72.558 ms
2020.09 . 04 18 : 25 : 07.103 Trades   '34510052' : instant buy 0.01 USDHUF at 297.871 (deviation: 100 )
2020.09 . 04 18 : 25 : 07.130 Trades   '34510052' : instant sell 0.01 GBPCAD at 1.73255 , close # 702904086 buy 0.01 GBPCAD 1.73271
2020.09 . 04 18 : 25 : 07.174 Trades   '34510052' : accepted instant buy 0.01 USDHUF at 297.871 (deviation: 100 )
2020.09 . 04 18 : 25 : 07.174 Trades   '34510052' : deal # 681898572 buy 0.01 USDHUF at 297.871 done (based on order # 702911246 )
2020.09 . 04 18 : 25 : 07.175 Trades   '34510052' : order # 702911246 buy 0.01 / 0.01 USDHUF at 297.871 done in 72.051 ms
현지 시간의 두 빨간색 시간 사이에는 1ms만 있으며 실제로는 550ms(순차적 OrderSend)여야 합니다. 분명히 인쇄 스냅샷도 여기에 영향을 미칩니다.
 
Renat Fatkhullin :

당신의 입장을 위해, 주제에 석궁이 있습니까?

 // Демонстрация тормозов HistorySelect.
#include <fxsaber\Benchmark.mqh> // https://c.mql5.com/3/321/Benchmark.mqh

input int inAlertTime = 1 ; // Нижний порог в миллисекундах

#define _B2(A) _B(A, inAlertTime)

const bool Init = EventSetTimer ( 1 );

void OnTimer ()
{
   static MqlTradeRequest Request = { 0 };
   static MqlTradeResult Result = { 0 };

   if (Request.tp) // Если позиция выставлена - меняем тейк.
  {
     static bool Flag = false ;

    Request.action = TRADE_ACTION_SLTP ;
    Request.tp += ( 1 - ((Flag = !Flag) << 1 )) * _Point ;
        
     if (Result.order)
      Request.position = Result.order;
  }
   else // Иначе выставляем позицию.
  {
    Request.action = TRADE_ACTION_DEAL ;
    Request.symbol = _Symbol ;
    Request.volume = 0.1 ;
    Request.price = SymbolInfoDouble ( _Symbol , SYMBOL_ASK );
    Request.tp = Request.price + 1000 * _Point ;         
  }

   if ( OrderSend (Request, Result))
    _B2( HistorySelect ( 0 , INT_MAX )); // В каком месте самострел?
}


b2592 MQ-Demo에 대한 결과입니다.

 2020.09 . 04 23 : 30 : 32.661 Alert : Time[Test6.mq5 35 : HistorySelect ( 0 , INT_MAX )] = 5 ms.
2020.09 . 04 23 : 30 : 33.681 Alert : Time[Test6.mq5 35 : HistorySelect ( 0 , INT_MAX )] = 5 ms.
2020.09 . 04 23 : 30 : 34.655 Alert : Time[Test6.mq5 35 : HistorySelect ( 0 , INT_MAX )] = 5 ms.
2020.09 . 04 23 : 30 : 35.674 Alert : Time[Test6.mq5 35 : HistorySelect ( 0 , INT_MAX )] = 5 ms.
2020.09 . 04 23 : 30 : 36.657 Alert : Time[Test6.mq5 35 : HistorySelect ( 0 , INT_MAX )] = 5 ms.
2020.09 . 04 23 : 30 : 37.668 Alert : Time[Test6.mq5 35 : HistorySelect ( 0 , INT_MAX )] = 5 ms.
2020.09 . 04 23 : 30 : 38.661 Alert : Time[Test6.mq5 35 : HistorySelect ( 0 , INT_MAX )] = 5 ms.
2020.09 . 04 23 : 30 : 39.666 Alert : Time[Test6.mq5 35 : HistorySelect ( 0 , INT_MAX )] = 5 ms.

모든 통화에 지연이 발생합니다.

 
지연도 마찬가지입니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

A100 , 2020.08.31 15:55

월간 및 주간 시간대가 있는 차트(특히 EURUSD)에서 십자형은 커서 뒤에서 매우 느리게 이동합니다. 이를 재현하려면 커서를 대각선으로 부드럽게 이동하는 것으로 충분합니다. 다른 시간대에는 괜찮습니다. 지금까지 이런 지연은 없었다.

모든 수동 그래픽 구성(추세, 피보나치 등)도 느립니다.

설정은 모두 기본값입니다.

  • 서버: MetaQuotes-데모
  • 기록: 1971년 1월 1일부터 사용 가능
  • 정확한 시간 척도: 아니오
  • 창당 최대 막대: 100000
  • 차트 유형: 일본 촛대
  • 그래프 축소: 최대

기호, 마침표 지연
EURUSD 597 있다
EURUSD 주간
2590 있다
EURUSD 일일

12797

아니요

일종의 역 관계: 막대가 적을수록 느려짐

월별 및 주간 EURGBP 차트(깊은 기록이 없는 경우) - 지연 없음

 
A100 :

일종의 역 관계: 막대가 적을수록 느려짐

오히려 직선 - TF가 높을수록 지연이 커집니다.

분명히, 젊은 TF에 따른 정확한 좌표 계산 때문입니다. 어딘가에서 그들은 필요한 주간/월간 막대에 포함된 막대의 인덱스를 가져오는 것을 엉망으로 만들었습니다.

ps: 모든게 날 위해 날아가네, 바의 수는 똑같아

 
Andrey Khatimlianskii :

오히려 직접 - TF가 높을수록 지연이 커집니다.

분명히, 젊은 TF에 따른 정확한 좌표 계산 때문입니다. 어딘가에서 그들은 필요한 주간/월간 막대에 포함된 막대의 인덱스를 가져오는 것을 엉망으로 만들었습니다.

ps: 모든게 날 위해 날아가네, 바의 수는 똑같아

당연히 Expert Advisors\indicators\scripts는 실행되지 않고 수동 빌드만 실행됩니다. 지정된 지연은 모든 평균 최신 64비트 태블릿에서 재생됩니다. i7에 컴퓨터가 있다면 그러한 지연이 발생하지 않았음을 인정합니다.
 
A100 :
당연히 Expert Advisors\indicators\scripts는 실행되지 않고 수동 빌드만 실행됩니다. 지정된 지연은 모든 평균 최신 64비트 태블릿에서 재생됩니다. i7에 컴퓨터가 있다면 그러한 지연이 발생하지 않았음을 인정합니다.

아마도 태블릿이 사용 중임을 즉시 표시할 가치가 있었을 것입니다.

나는 i5가있다