MT5와 속도 - 페이지 13

 
Dmi3 :

나는 맨눈으로 내 터미널에서 보는 상인이며 그것에 대해 노래합니다. fxsaber 또는 MQ 모델의 직원들은 그러한 작업에 대해 더 많은 지식과 기술을 보유하고 있습니다.

물론 이론적으로는 집에 있는 노트북에 조언자를 넣어두고 그 행동을 관찰할 수 있습니다.

히스토리 딥이 요청되면 문제가 서버 측에 있을 수 있다고 생각했습니다.

 
Aleksey Vyazmikin :

히스토리 딥이 요청되면 문제가 서버 측에 있을 수 있다고 생각했습니다.

모든 Expert Advisors의 기록은 지난 120초 동안 요청됩니다. 하루 10,000건 이상의 주문.

 
Dmi3 :

모든 Expert Advisors의 기록은 지난 120초 동안 요청됩니다. 하루 10,000건 이상의 주문.

그런 다음 아이디어에 따르면 모든 것이 메모리에 있어야합니다.

 

약 100개의 독립적인 거래 로직을 거래해야 합니다. 동시에 12개 이상의 거래 기호가 있습니다.

지연으로 인해 이 모든 것을 하나의 비동기식 Expert Advisor에 집어넣는 것은 불가능합니다. 여러 개의 Expert Advisor를 생성하고 병렬로 실행해야 합니다.

 
fxsaber :

약 100개의 독립적인 거래 로직을 거래해야 합니다. 동시에 12개 이상의 거래 기호가 있습니다.

지연으로 인해 이 모든 것을 하나의 비동기식 Expert Advisor에 집어넣는 것은 불가능합니다. 여러 개의 Expert Advisor를 생성하고 병렬로 실행해야 합니다.

그러다가 100명 이상의 어드바이저를 하나의 터미널에 채울 수 없고 여러 개의 병렬 터미널을 실행해야 한다는 것이 밝혀졌습니다. 그리고....

 
Dmi3 :

그러다가 100명 이상의 어드바이저를 하나의 터미널에 채울 수 없고 여러 개의 병렬 터미널을 실행해야 한다는 것이 밝혀졌습니다. 그리고....

지연이 제거되는 즉시 한 명의 고문에게 밀어 넣을 수 있습니다. 이렇게 하면 VPS의 부담이 크게 줄어듭니다.

 
OnTick에서는 이전 틱의 틱 이력을 요청합니다.
 2020.08 . 17 21 : 26 : 45.729 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 26 : 47.848 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 26 : 47.848 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 26 : 49.959 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 26 : 53.135 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 26 : 54.199 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 6 ms.
2020.08 . 17 21 : 26 : 54.199 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 26 : 54.199 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 26 : 54.199 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 27 : 00.525 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 27 : 08.956 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 27 : 13.173 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 27 : 27.931 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 27 : 30.048 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 27 : 30.048 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 27 : 42.669 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.
2020.08 . 17 21 : 27 : 43.726 Alert : Time[NewTicks.mqh 208 : :: CopyTicksRange ( _Symbol ,Ticks, COPY_TICKS_INFO ,LastTime)] = 5 ms.

매우 안정적인 결과.

 

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

라이브러리: MT4Orders

fxsaber , 2020.08.18 08:49

30ms 이상의 지연을 출력할 때도 비슷한 결과를 볼 수 있습니다.

 2020.08 . 18 05 : 12 : 20.760 Alert : Time[MT4Orders.mqh 1746 : :: PositionGetTicket (Index)] = 45 ms.
2020.08 . 18 06 : 08 : 07.116 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 38 ms.
2020.08 . 18 06 : 44 : 57.080 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 59 ms.
2020.08 . 18 07 : 01 : 37.171 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 33 ms.
2020.08 . 18 07 : 04 : 19.996 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 34 ms.
2020.08 . 18 07 : 04 : 55.020 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 43 ms.
2020.08 . 18 07 : 30 : 07.414 Alert : Time[MT4Orders.mqh 1746 : :: PositionGetTicket (Index)] = 37 ms.
2020.08 . 18 07 : 38 : 31.913 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 40 ms.
2020.08 . 18 07 : 44 : 08.415 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 36 ms.
2020.08 . 18 07 : 45 : 22.918 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 38 ms.
2020.08 . 18 08 : 00 : 37.016 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 40 ms.
2020.08 . 18 08 : 01 : 36.007 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 33 ms.
2020.08 . 18 08 : 08 : 26.948 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 34 ms.
2020.08 . 18 08 : 18 : 41.664 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 33 ms.
2020.08 . 18 08 : 48 : 51.114 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 32 ms.
2020.08 . 18 09 : 12 : 33.762 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 49 ms.
2020.08 . 18 09 : 28 : 42.364 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 47 ms.
2020.08 . 18 09 : 28 : 42.364 Alert : Time[MT4Orders.mqh 1808 : :: PositionSelectByTicket (Ticket)] = 38 ms.
2020.08 . 18 09 : 30 : 30.665 Alert : Time[MT4Orders.mqh 1746 : :: PositionGetTicket (Index)] = 40 ms.
2020.08 . 18 09 : 33 : 50.114 Alert : Time[MT4Orders.mqh 1746 : :: PositionGetTicket (Index)] = 44 ms.
2020.08 . 18 09 : 38 : 41.204 Alert : Time[MT4Orders.mqh 1675 : :: PositionSelectByTicket (:: OrderGetInteger ( ORDER_TICKET ))] = 77 ms.

거래 내역이 없는 적절한 지연.

 
여전히 이것을 모니터링하는 방법을 알아냈습니다.
 2020.08 . 18 11 : 14 : 05.072 MarketWatchTick:  time = 2020.08 . 18 11 : 14 : 00.674
2020.08 . 18 11 : 14 : 05.195 MarketWatchTick:  time = 2020.08 . 18 11 : 14 : 05.929

왼쪽은 현지 시간이고 오른쪽은 기호 의 마지막 인용 시간입니다 .

두 줄의 출력(OnTick으로 제작) 사이에 100ms가 경과한 것을 알 수 있습니다. 동시에 기호 시간이 5초로 변경되었습니다!


이는 5초 동안 심볼 가격을 수신하는 데 랙이 있었다는 것을 의미합니다. 동시에(여기에 게시하지 않았지만 내 로그에 기록했습니다) 실시간으로 CopyTicksRange는 이 두 이벤트 사이에 35개의 틱을 발행했습니다.


우연히 이웃 OnTick 호출 사이에 많은 틱이 왔다는 것을 알아차렸습니다.

 

개발자들에게 HFT에 대한 컴퓨터의 준비 상태를 확인하기 위한 일련의 작업을 권장하도록 요청합니다.

동일한 LCH에 대해 적절한 기계를 준비해야 합니다. 이 문제에 대한 공식 권장 사항(일부 테스트 통과)을 갖는 것이 옳을 것입니다.

사유: