오류, 버그, 질문 - 페이지 2222

 
Alexander :

안정적으로 재생되나요? 무슨 빌드?

예, 문제를 재현할 수 있습니다. 버전 1870.
 

문제.

내가 Expert Advisor 또는 표시기의 여러 기호, 보다 정확하게는 "시장 조사" 창에 표시되는 모든 기호에 대해 작업하고 있다고 가정해 보겠습니다.

임무는 기호에 대한 새로운 틱의 순간을 포착하는 것입니다.

지금까지 몇 가지 옵션만 표시됩니다.
  1. 모든 문자에 대한 투표가 있는 타이머를 통해 (물론 TimeCurrent() 함수의 새 값만 쿼리할 수 있지만 이 경우 오류는 1초가 됩니다. 이 함수는 초 단위로 값을 반환하기 때문입니다)
  2. OnTick(또는 OnCalculate)의 각 기호에서 EventChartCustom을 통해 사용자 정의 이벤트 생성

첫 번째 옵션의 단점은 리소스 및 데이터 관련성 측면에서 최적이 아니라는 것입니다. OnTimer는 기본적으로 유휴 상태이며 새로운 견적을 포착하면 도착 시간 오류가 타이머 빈도와 동일합니다.

두 번째 옵션의 단점은 특히 수십 개의 문자가 있는 경우 부피가 크다는 것입니다.

다른 옵션(더 간단하고 우아함)이 없다는 것을 올바르게 이해하고 있습니까? 아니면 (잘하면) 내가 틀렸습니까?

 
Nikolai Semko :

문제.

내가 Expert Advisor 또는 표시기의 여러 기호, 보다 정확하게는 "시장 조사" 창에 표시되는 모든 기호에 대해 작업하고 있다고 가정해 보겠습니다.

임무는 기호에 대한 새로운 틱의 순간을 포착하는 것입니다.

지금까지 몇 가지 옵션만 표시됩니다.
  1. 모든 문자에 대한 투표가 있는 타이머를 통해 (물론 TimeCurrent() 함수의 새 값만 폴링할 수 있지만 이 함수는 초 단위로 값을 반환하기 때문에 이 경우 오류는 1초가 됩니다)
  2. OnTick(또는 OnCalculate)의 각 기호에서 EventChartCustom을 통해 사용자 정의 이벤트 생성

첫 번째 옵션의 단점은 리소스 및 데이터 관련성 측면에서 최적이 아니라는 것입니다. OnTimer는 기본적으로 유휴 상태이며 새로운 견적을 포착하면 도착 시간 오류가 타이머 빈도와 동일합니다.

두 번째 옵션의 단점은 특히 수십 개의 문자가 있는 경우 부피가 크다는 것입니다.

다른 옵션(더 간단하고 우아함)이 없다는 것을 올바르게 이해하고 있습니까? 아니면 (잘하면) 내가 틀렸습니까?

이게 도움이 될까요? https://www.metatrader5.com/ru/terminal/help/trading_advanced/custom_instruments

실시간 견적이 포함된 합성 기기

거래 플랫폼을 사용하면 하나 이상의 기존 금융 상품을 기반으로 하는 합성 금융 상품을 만들 수 있습니다. 견적 계산을 위한 공식을 설정하기만 하면 플랫폼이 실시간으로 합성 악기의 눈금을 생성하고 분 내역을 생성합니다.
어떻게 이런 일이 일어납니까?

합성 악기를 만들고 공식을 설정합니다.
플랫폼은 초당 10번의 빈도로 틱을 계산합니다(공식에 포함된 하나 이상의 상품 가격이 변경된 경우에만).
 
SEM :

이게 도움이 될까요? https://www.metatrader5.com/ru/terminal/help/trading_advanced/custom_instruments

실시간 견적이 포함된 합성 기기

거래 플랫폼을 사용하면 하나 이상의 기존 금융 상품을 기반으로 하는 합성 금융 상품을 만들 수 있습니다. 견적 계산을 위한 공식을 설정하기만 하면 플랫폼이 실시간으로 합성 악기의 눈금을 생성하고 분 내역을 생성합니다.
어떻게 이런 일이 일어납니까?

합성 악기를 만들고 공식을 설정합니다.
플랫폼은 초당 10번의 빈도로 틱을 계산합니다(공식에 포함된 하나 이상의 상품 가격이 변경된 경우에만).

예, 물론이 옵션에는 생명권이 있습니다. 고맙습니다!
그러나 실제로 이것은 타이머 주파수가 100ms이고 동일한 단점이 있는 내 옵션 번호 1과 동일합니다.

그래도 2번 옵션이 더 합리적으로 보입니다.

그건 그렇고, 나는 두 번째 옵션이 이미 여기 에서 논의되었다는 것을 기억했습니다.


 
Nikolai Semko :

예, 물론이 옵션에는 생명권이 있습니다. 고맙습니다!
그러나 실제로 이것은 타이머 주파수가 100ms인 1번에서 내 옵션과 동일합니다.

그리고 그것이 작동하는 기호를 참조하여 Expert Advisor를 만드는 것은 쉽지 않습니다. 그런 다음 모든 기호를 열고 이 Expert Advisor가 있는 템플릿을 각 차트에 적용합니다 .

 for ( int i= PositionsTotal ()- 1 ;i>= 0 ;i--)
     {
       if ( PositionGetSymbol (i)== Symbol ())
        {
         //Код
        };

     }
 
SEM :
그리고 그것이 작동하는 기호를 참조하여 Expert Advisor를 만드는 것은 쉽지 않습니다. 그런 다음 모든 기호를 열고 이 Expert Advisor가 있는 템플릿을 각 차트에 적용합니다 .

예, 이것이 가능하다는 것은 분명합니다. 문제는 제가 모르는 것이 있는데, 하나의 다중 통화 Expert Advisor의 코드를 사용하여 다른 기호의 견적이 정확히 도착하는 순간을 포착할 수 있다는 것입니다.
그러나 사용자 인터럽트를 통한 옵션 2 가 유일한 합리적인 솔루션인 것 같습니다.

 
Nikolai Semko :

예, 이것이 가능하다는 것은 분명합니다. 문제는 제가 모르는 것이 있는데, 하나의 다중 통화 Expert Advisor의 코드를 사용하여 다른 기호의 견적이 정확히 도착하는 순간을 포착할 수 있다는 것입니다.
그러나 사용자 인터럽트를 통한 옵션 2 가 유일한 합리적인 솔루션인 것 같습니다.

구현.

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2018.01.28
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Nikolai Semko :
  1. 모든 문자에 대한 투표가 있는 타이머를 통해 (물론 TimeCurrent() 함수의 새 값만 폴링할 수 있지만 이 함수는 초 단위로 값을 반환하기 때문에 이 경우 오류는 1초가 됩니다)

다른 옵션(더 간단하고 우아함)이 없다는 것을 올바르게 이해하고 있습니까? 아니면 (잘하면) 내가 틀렸습니까?

밀리초 타이머 + SymbolInfoTick()은 시간을 밀리초 단위로 가져옵니다.

 
fxsaber :

구현.

예, 이미 메시지 22214에서 구현에 대한 이 링크를 제공했습니다. 반복합니다 - 이 옵션이 지금까지 가장 합리적이라고 생각합니다. 그리고 프로세서의 최소 부하와 새로운 틱의 수신 순간의 관련성 측면에서 더 나은 구현이 없는 것 같습니다.
 
Nikolai Semko :
  1. через таймер c опросом всех символов. (можно, конечно, только опрашивать новое значение функции  TimeCurrent() , но в этом случае погрешность будет равна 1 секунде, т.к. эта функция возвращает значение в секундах)

Я правильно понимаю, что других вариантов (более простых и изящных) не существует? Или (надеюсь) я не прав?

밀리초 타이머 + SymbolInfoTick()은 시간을 밀리초 단위로 가져옵니다.

알렉세이 코지친 :

밀리초 타이머 + SymbolInfoTick()은 시간을 밀리초 단위로 가져옵니다.

이것은 모두 옵션 1입니다. 그런 구성을 의미했습니다(밀리초 타이머 + SymbolInfoTick() 루프). 기능   TimeCurrent() 만졌으니까. 현재 기호뿐만 아니라 Market Watch 창에서 사용할 수 있는 모든 기호에 대한 " 마지막 견적 도착 시간 "을 반환 하지만 불행히도 초만 반환하므로 틱에 매우 어렵습니다.
객관적으로 사용자 인터럽트 옵션이 훨씬 더 합리적이기 때문입니다. 값비싼 SymbolInfoTick 기능을 사용하여 주기를 구성할 필요가 없으며 따옴표가 잠자기 상태인 경우에도 계속해서 프로세서를 유휴 상태로 로드합니다. 또한 새 틱의 도착을 계산할 때 오류가 타이머 빈도와 같을 수 있기 때문에 1개 이상의 틱이 있는 경우 OnTimer 실행 사이의 모든 틱이 손실됩니다.
ZY mql5에 관한 것입니다. mql4에서 사용자 인터럽트가 제대로 작동하지 않습니다. 따라서 mql4의 경우 옵션은 타이머를 통해서만 가능합니다.