MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1283

 
MakarFX :

Expert Advisor가 서버에서 생성 하는 로드를 결정하는 방법은 무엇입니까?

각 틱에서 Ask, Bid, Spread, TICKVALUE 요청

내가 올바르게 이해하면 프로파일러가 도움이 될 것입니다. 그러나 우리는 부하 부하가 다르다는 것을 이해해야 합니다. 이것은 요청을 실행하거나 시스템의 프로세서를 로드하는 데 소요된 시간입니다. 하나의 창에 심볼당 하나의 어드바이저가 있으면 정상입니다. 그리고 한 기계에 10개의 터미널에 40자 등이 120개의 창이 있으면 기계가 정지될 수 있음)

 
Aleksei Stepanenko :

잘 모르겠습니다. 전투에 참가할 수 있습니다. 아니면 INT_MAX의 변형으로 ?


예, 이것이 제가 계산하는 것입니다.

그리고 주말을 포함하여 지금까지 이것은 옳지 않은 것입니다.

초당 포인트, 예, 읽을 수 있습니다. 그리고 낮은 TF에서는 더 많은 속도가 있고 범위는 더 작습니다.

_     ;qstr7_41;_;EURUSD;_TF_; 1 ; Имя файла ;QstrV.csv; Локальное время ; 2020.10 . 23 15 : 34 : 25
2020.10 . 23 14 : 34 : 20 ; [i]= ; 13 ; VTrend[i] = ; 25 ; SumVTrend= ; 97 ; AbsVTrend= ; 341 ; pos= ; 8 ;SumVTrendPos= ; 339 ; neg= ; 7 ; SumVTrendNeg= ;- 345
2020.10 . 23 14 : 34 : 20 ; [i]= ; 2 ; VTrend1[i] = ; 272 ; SumVTrend1= ; 17 ; AbsVTrend1= ; 137 ; pos1= ; 2 ;SumVTrendPos1= ;- 84 ; neg1= ; 2 ; SumVTrendNeg1= ;- 84
_     ;qstr7_41;_;EURUSD;_TF_; 5 ; Имя файла ;QstrV.csv; Локальное время ; 2020.10 . 23 15 : 34 : 36 ;
 2020.10 . 23 14 : 34 : 31 ; [i]= ; 15 ; VTrend[i] = ; 414 ; SumVTrend= ; 47 ; AbsVTrend= ; 124 ; pos= ; 9 ;SumVTrendPos= ; 160 ; neg= ; 8 ; SumVTrendNeg= ;- 82
2020.10 . 23 14 : 34 : 31 ; [i]= ; 2 ; VTrend1[i] = ;- 32 ; SumVTrend1= ; 63 ; AbsVTrend1= ; 83 ; pos1= ; 2 ;SumVTrendPos1= ; 37 ; neg1= ; 2 ; SumVTrendNeg1= ;- 32
_     ;qstr7_41;_;EURUSD;_TF_; 1440 ; Имя файла ;QstrV.csv; Локальное время ; 2020.10 . 26 15 : 42 : 42 ;
2020.10 . 26 14 : 42 : 42 ; [i]= ; 14 ; VTrend[i] = ;- 26 ; SumVTrend= ; 3 ; AbsVTrend= ; 9 ; pos= ; 9 ;SumVTrendPos= ; 9 ; neg= ; 7 ; SumVTrendNeg= ;- 11
2020.10 . 26 14 : 42 : 42 ; [i]= ; 1 ; VTrend1[i] = ;- 7 ; SumVTrend1= ;- 7 ; AbsVTrend1= ; 7 ; pos1= ; 1 ;SumVTrendPos1= ; 0 ; neg1= ; 2 ; SumVTrendNeg1= ;- 7
 
Valeriy Yastremskiy :

내가 올바르게 이해하면 프로파일러가 도움이 될 것입니다. 그러나 우리는 부하 부하가 다르다는 것을 이해해야 합니다. 이것은 요청을 실행하거나 시스템의 프로세서를 로드하는 데 소요된 시간입니다. 하나의 창에 심볼당 하나의 어드바이저가 있으면 정상입니다. 그리고 한 기계에 10개의 터미널에 40자 등이 120개의 창이 있으면 기계가 정지될 수 있음)

우리는 이미 MQL4에서 터미널 데이터에 여러 번 액세스할 가치가 있는지 여부를 논의한 다음 OrderSelect https://www.mql5.com/en/forum/342989#comment_16743716 에 대해 논의했습니다.

현재 가격을 테스트 할 수도 있습니다. 한 틱에 100500 번 사용할 수도 있다고 생각합니다. 왜냐하면 초당 수백만 번 성능이 될 것입니다


유일한 것입니다. 예 - 시장 개요 창에 더 많은 기호가 있을수록 터미널 자체가 더 많이 로드되므로 여러 다른 기호에서 데이터를 호출하면 지연도 발생합니다.

저것들. 터미널을 현명하게 사용하면 아무 것도 걸리지 않을 것입니다. 시장 개요 창에는 10개의 문자가 있습니다.


한 번에 몇 개의 차트를 열 수 있는지는 확인하지 못했지만, 히스토리가 1000개 막대로 제한되면 터미널에서 문제 없이 수십 개의 차트 창을 끌어올 가능성이 높다고 생각합니다.

 

모두에게 좋은 하루!

mql5 학습을 시작했습니다(mql4 이후). 쿼드에는 날짜 및 시간이라는 기능 그룹이 있습니다. 같은 그룹이 상위 5위 안에 있습니다. 그러나 이 기능 그룹의 상위 5개에는 4개보다 훨씬 적은 기능이 있습니다. 현재 시, 분 ... 및 기타 함수의 값을 반환하는 함수는 5개에 없습니다.
예를 들어, 4개에는 현재 시간 값을 반환하는 Hour() 함수가 포함되어 있습니다. Five에는 이 기능이 없습니다.
문제

5개의 함수 중 Hour()와 유사한 함수 및 5개의 유사한 그룹에 없는 날짜 및 시간 함수의 4중 그룹에 있는 다른 함수.

도와 주셔서 감사합니다.

 
Igor Makanu :

우리는 이미 MQL4에서 터미널 데이터에 여러 번 액세스할 가치가 있는지 여부를 논의한 다음 OrderSelect https://www.mql5.com/ru/forum/342989#comment_16743716 에 대해 논의했습니다.

현재 가격을 테스트 할 수도 있습니다. 한 틱에 100500 번 사용할 수도 있다고 생각합니다. 왜냐하면 초당 수백만 번 성능이 될 것입니다.


유일한 것입니다. 예 - 시장 개요 창에 더 많은 기호가 있을수록 터미널 자체가 더 많이 로드되므로 여러 다른 기호에서 데이터를 호출하면 지연도 발생합니다.

저것들. 터미널을 현명하게 사용하면 아무 것도 걸리지 않을 것입니다. 시장 개요 창에는 10개의 문자가 있습니다.


한 번에 몇 개의 차트를 열 수 있는지는 확인하지 못했지만, 히스토리가 1000개 막대로 제한되면 터미널에서 문제 없이 수십 개의 차트 창을 끌어올 가능성이 높다고 생각합니다.

감사합니다, 다시 상기시켰습니다))) 네, 그때는 많이 이해하지 못했습니다.) 합리적인 요청이 있으면 모든 것이 제대로 작동해야 한다는 말을 하고 싶었습니다. 비용(실행 시간 및 프로세서 부하) 면에서 저렴한 요청입니다.)

 
ANDREY :

모두에게 좋은 하루!

mql5 학습을 시작했습니다(mql4 이후). 쿼드에는 날짜 및 시간이라는 기능 그룹이 있습니다. 같은 그룹이 상위 5위 안에 있습니다. 그러나 이 기능 그룹의 상위 5개에는 4개보다 훨씬 적은 기능이 있습니다. 현재 시, 분 ... 및 기타 함수의 값을 반환하는 함수는 5개에 없습니다.
예를 들어, 4개에는 현재 시간 값을 반환하는 Hour() 함수가 포함되어 있습니다. Five에는 이 기능이 없습니다.
문제

5개의 함수 중 Hour()와 유사한 함수 및 5개의 유사한 그룹에 없는 날짜 및 시간 함수의 4중 그룹에 있는 다른 함수.

도와 주셔서 감사합니다.

https://www.mql5.com/ru/docs/dateandtime/timecurrent 사용

두 번째 함수 호출

 datetime    TimeCurrent (
   MqlDateTime &  dt_struct       // переменная типа структуры
   );
일반적으로 https://www.mql5.com/ru/docs/dateandtime/timetostruct 입니다.
 
4ki를 요청합니다. 차트에서 마우스 클릭 좌표를 반환하는 방법(바람직하게는 막대 번호). 스크립트가 던져진 좌표만 찾습니다.
 
Valeriy Yastremskiy :

감사합니다, 다시 상기시켰습니다))) 네, 그때는 많이 이해하지 못했습니다.) 합리적인 요청이 있으면 모든 것이 제대로 작동해야 한다는 말을 하고 싶었습니다. 비용(실행 시간 및 프로세서 부하) 면에서 저렴한 요청입니다.)

코드가 "더티"인 경우 모든 시스템을 수행할 수 있습니다.

Ask / Bid price가 액세스되는 합리적인 사용이라면 틱당 수십 번 하게 하면 어떤 식으로든 EA의 성능에 영향을 미치지 않을 것입니다(글쎄, 최대 1-2%)

저것들. 리소스(또는 시스템 기능/터미널 환경에 대한 호출)를 사용하는 논리는 알고리즘이 한 틱에서 수천 번 Ask/Bid 가격에 액세스하는 것을 포함하는 경우 .... 대부분의 경우 알고리즘 자체를 수정해야 합니다. 또는 옵션으로 알고리즘 계산 전에 Ask/Bid 값을 한 번 기억하십시오.




발레리 야스트렘스키 :
4ki를 요청합니다. 차트에서 마우스 클릭 좌표를 반환하는 방법(바람직하게는 막대 번호). 스크립트가 던져진 좌표만 찾습니다.

아마도 ChartXYToTimePrice https://docs.mql4.com/en/chart_operations/chartxytotimeprice 를 찾으십시오.

https://www.mql5.com/ru/forum/353726 만 논의됨

여기에 https://www.mql5.com/ru/forum/344607 클릭으로도 논의되는 또 다른 주제가 있습니다.

 
Igor Makanu :

알고리즘이 매 틱당 수천 번 Ask/Bid 가격에 액세스하는 것을 포함하는 경우 .... 대부분의 경우 알고리즘 자체를 수정하거나 옵션으로 Ask/Bid 값을 한 번 기억한 다음 연산




아마도 ChartXYToTimePrice https://docs.mql4.com/en/chart_operations/chartxytotimeprice 를 찾으십시오.

https://www.mql5.com/ru/forum/353726 만 논의됨

여기에 https://www.mql5.com/ru/forum/344607 클릭으로도 논의되는 또 다른 주제가 있습니다.

일반적으로 틱에 가격이 있으면 OnTick이 끝날 때까지 중요하지 않은 경우 해당 가격과 함께 작업할 수 있습니다. 미끄럼 방지를 위한 리미터)

정확히는 아니지만 기성품 솔루션 ...)) 코드를 직접 이해해야합니다. 나는 양초를 클릭하고 그 값을 파일에 쓰고 싶었습니다.

CHARTEVENT_MOUSE_MOVE

 
Valeriy Yastremskiy :

일반적으로 틱에 가격이 있으면 OnTick이 끝날 때까지 중요하지 않은 경우 해당 가격과 함께 작업할 수 있습니다. 미끄럼 방지를 위한 리미터)

정확히는 아니지만 기성품 솔루션 ...)) 코드를 직접 이해해야합니다. 나는 양초를 클릭하고 그 값을 파일에 쓰고 싶었습니다.

CHARTEVENT_MOUSE_MOVE

아마도 다음과 같이 바의 가격과 시간을 결정하고 싶을 것입니다.

 void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
{
   if (id == CHARTEVENT_CLICK )
   {
       int window = 0 ;
       datetime time;
       double    price;
       if ( ChartXYToTimePrice ( 0 , ( int )lparam, ( int )dparam, window, time, price))
      {
         Print ( "time = " , time, " ,price = " , price);
      }
   }
}
오히려 이들은 차트의 시간 + 가격 값에서 마우스 클릭의 좌표이며 막대는 iBarShift() 를 사용하여 결정해야 합니다.