MT5와 속도 - 페이지 7

 
fxsaber :

당신은 아무것도 이해하지 못했습니다. 리턴을 할 때, 우리는 형성된 큐의 On-function으로 들어갑니다. 이로 인해 첫 번째 OrderSend가 올바른 두 번째 OrderSend를 보낸 후 즉시 중지되는 일시 중지가 발생할 수 있습니다 .

일시 중지/지연이란 무엇입니까? 3개의 구조를 복사할 때?

OnTradeTransaction( параметры )
{
        поместить параметры в очередь
        OnMain();
}

첫 번째 OrderSend의 완료에 대한 메시지를 포함할 On-function을 기다리는 반환 후 모든 On-function을 저장하여 대기열을 누적 할 것을 제안합니다. 그런 다음 두 번째 OrderSend만 보냅니다.

모든 이벤트 를 누적할 필요는 없습니다 . 다음 이벤트가 복사될 때까지 기다리지 마십시오. 반환 전에 이벤트를 처리하고 이에 대한 전제 조건이 발생하는 즉시 두 번째 OrderSend를 보낼 수 있습니다.

동시에, 첫 번째 OrderSend 동안 포지션 테이크가 실행될 수 있다는 것을 여전히 이해하지 못하지만 OnTradeTransaction 은 첫 번째 OrderSend의 최종 OnTradeTransaction보다 나중에(같은 마이크로초에서, 그러나 나중에) 대기열에 있을 것 입니다.

그러한 상황에서 어떻게 도울 수 있습니까?

 bool HandleNextEvent(ENUM_EVENT_TYPE);

여기가 마지막이 될거야 거기에 무엇이

 
fxsaber :

당신은 아무것도 이해하지 못했습니다. 리턴을 할 때, 우리는 형성된 큐의 On-function으로 들어갑니다. 이로 인해 첫 번째 OrderSend가 올바른 두 번째 OrderSend를 보낸 후 즉시 중지되는 일시 중지가 발생할 수 있습니다.

첫 번째 OrderSend의 완료에 대한 메시지를 포함할 On-function을 기다리는 반환 후 모든 On-function을 저장하여 대기열을 누적할 것을 제안합니다. 그런 다음 두 번째 OrderSend만 보냅니다.

동시에, 첫 번째 OrderSend 동안 포지션 테이크가 실행될 수 있다는 것을 여전히 이해하지 못하지만 OnTradeTransaction은 첫 번째 OrderSend의 최종 OnTradeTransaction보다 나중에(같은 마이크로초에서, 그러나 나중에) 대기열에 있을 것입니다.

대기열이 없습니다. 새 이벤트는 현재 이벤트 이후에 처리되며 이 기간 동안 발생한 모든 이벤트는 무시됩니다.

 
큐 또는 스택을 생성하지만 MQ는 생성하지 않습니다.
 

제 생각에는 문제에 대한 해결책은 모든 주문을 "구독"하는 기능일 것입니다. 저것들. 따라서 터미널은 주문에 대한 트랜잭션 발생 시 이벤트를 생성합니다.

그러나 이것은 우리가 아니라 개발자가 구현해야 합니다. 어떤 식으로든 우리의 모든 결정 은 거래 내역으로 돌아갑니다. 마이크로초 단위의 임계값은 없지만 실제

거래가 통과/실패했는지, 수준이 제대로 되었는지 또는 누군가 터미널에서 위치를 수정했는지 알아보기 위해 다양한 복잡성의 자전거를 작성하는 것은 성가신 일입니다.

단순한 일처럼 보이지만 - 포지션에 대한 거래를 위한 이벤트 - 모든 것이 훨씬 간단해질 것입니다.

 
Maksim Emeliashin :

그러나 이것은 우리가 아니라 개발자가 구현해야 합니다.

개발자는 도구만 제공하면 됩니다. MQL은 본질적으로 저수준 프로그래밍 언어(C++도 마찬가지)입니다. 그것에 대해 당신은 문제 측면에서가 아니라 계산 측면에서 주장합니다. 그리고 모든 높은 수준의 결정을 스스로 내립니다. 도구가 부족할 수 있지만 기성 솔루션은 아님

 
A100 :

일시 중지/지연이란 무엇입니까? 3 구조 복사에서?

다양한 이벤트 대기열을 처리합니다.

그러한 상황에서 어떻게 도울 수 있습니까?

여기가 마지막이 될거야 거기에 무엇이

휴관에 대해 테이크아웃에 대해 알려드리겠습니다.

 
Алексей Тарабанов :

대기열이 없습니다. 새 이벤트는 현재 이벤트 이후에 처리되며 이 기간 동안 발생한 모든 이벤트는 무시됩니다.

무능한.

 
fxsaber :

다양한 이벤트 대기열을 처리합니다.

휴관에 대해 알아보겠습니다.

내가 실제로 ( HandleNextEvent 가 있는 코드 없이) 기본 사항을 이해하지 못한다는 사실에 대해 생각해 보겠습니다.

마지막으로 제안된 HandleNextEvent 와 내가 작성한 것의 차이점은 재귀를 통한 것이고 내 것은 루프를 통한 것이라는 점입니다. 결국, 그것은 하나이며 동일 합니다. 또한 내 대기열은 처음에 명확하게 형성되어 관리할 수 있습니다. 일부 이벤트는 즉시 처리하고 일부는 나중에 연기합니다. - 완전한 자유와 제안된 HandleNextEvent 기능을 통해 - 손과 발이 묶입니다.

 
이 EA가 경고하지 않는 이유는 무엇입니까?
 const MqlTick GetMarketWatchTick( void )
{
   MqlTick Tick = { 0 };
  
  :: SymbolInfoTick ( _Symbol , Tick);
  
   return (Tick);
}

const MqlTick GetLastHistoryTick()
{
   MqlTick Tick[ 1 ];
  
  :: CopyTicks ( _Symbol , Tick, COPY_TICKS_ALL , 0 , 1 );
  
   return (Tick[ 0 ]);
}

void OnTick ()
{
   if (GetMarketWatchTick().time_msc > GetLastHistoryTick().time_msc) // Тик из Обзора рынка свежее, чем последний тик из истории.
     Alert ( "Hello!" );
}


동시에 같은 터미널의 전투 거래 고문에 연결된 같은 수표, Alert. 이유는 무엇입니까?

 

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

MT5와 속도

안톤 , 2020.05.29 16:21

최대 및 평균 시간을 확인하는 스크립트:

2474.

        Last tick time. Selected orders: 0 ; max time: 0.187 ms; avr time: 0.022 ms; 100000 iterations
        Last 3 days. Selected orders: 1956 ; max time: 1.832 ms; avr time: 0.301 ms; 100000 iterations
        Orders total: 56561

아주 좋아졌습니다. 변경된 경우 - 감사합니다. 전투 모드에서의 성능을 주시하겠습니다.


추신: 전투 모드에서 거래가 이루어지면 거의 항상 지연이 있습니다(5밀리초보다 긴 경우만 표시합니다).

 2020.06 . 03 13 : 57 : 27.895 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 14 ms.
2020.06 . 03 13 : 57 : 47.780 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 5 ms.
2020.06 . 03 14 : 03 : 49.844 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 9 ms.
2020.06 . 03 14 : 03 : 51.063 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 8 ms.
2020.06 . 03 14 : 03 : 55.115 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 12 ms.
2020.06 . 03 14 : 03 : 56.935 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 6 ms.

그렇지 않으면 2470보다 훨씬 나은 것 같습니다.