MetaTrader 4 클라이언트 터미널 387 및 MetaTrader 4 데이터 센터 빌드 387의 새 버전 - 페이지 3

 
AlexSTAL :

당신의 문제는 정확히 무엇입니까? 나는 모든 것을 그대로 가지고 있으며 남아 있습니다 ... 각 틱마다 재계산이 없습니다 ....


나는 Zhunko와 마찬가지로 모든 지표에 최적화가 있습니다. 그리고 각 틱마다 전체 버퍼가 다시 계산되지 않습니다. 각 틱에서 강제로 재초기화되는 경우 모든 지표를 다시 작성해야 합니다. 문제가 아닌가요? 그건 그렇고, 반복적으로 음성.

그리고 저는 제 자신에 대해 걱정하지 않습니다. 엄청난 수의 사람들이 이러한 지표를 사용하게 되었습니다. 그러나 그들은 실제적인 문제를 겪을 것입니다.

예를 들어, http://ruforum.mt5.com/showthread.php?t=374

많은 링크가 주어질 수 있습니다.

 
AlexSTAL :

그의 설명을 읽어보니....

이것을 직접 테스트 했습니까?

당신의 문제는 정확히 무엇입니까? 나는 모든 것을 그대로 가지고 있으며 남아 있습니다 ... 각 틱마다 재계산이 없습니다 ....

변경 조건에 따라 표시기 버퍼를 채웠습니다. 변경 사항이 있습니다. 작성하지 않습니다. 작성하지 않습니다. 이것은 387에서 작동하지 않습니다.

조건 제거 - 획득. 작동하지 않을 때는 버퍼가 기본값(초기화)으로 채워져 있는 것을 보았습니다.

아마도 그들은 그렇게 보이지 않았습니까? 눈치채지 못했거나 지표에 중요하지 않습니까?

Metaquote의 설명을 기다려야 합니다.

 

다음은 표시기의 일부입니다.

 // Если произошёл первый пуск индикатора или предыдущим блоком разрешена развёртка или изменились параметры окна.
if (gl_nCounterTeak == 1 || st_bRecalculation == true || st_nWBarsPerChart != tmp_nBarsPerChart || st_nWFirstVisiblBar != tmp_nFirstVisiblBar)
 { // Закрепляем значок вызова свойств индикатора.
  st_nWBeginSearch = st_nWFirstVisiblBar - st_nWBarsPerChart;
   if (st_nWBeginSearch < - 1 ) // Если справа есть свободное пространство, закрепляем значок вызова свойств индикатора.
   {
    GetClientRect(gl_hWindow, st_aiRect); // Расчёт размеров окна.
    gl_adBufIndicator2[ 0 ] = 0.35 * (gl_dMaxPositionMark - gl_dMinPositionMark) + gl_dMinPositionMark;
    SetIndexShift( 1 , - st_nWBeginSearch - 0.5 * (( 36 * st_nWBarsPerChart) / st_aiRect[ 2 ] - 1 ));
    SetIndexDrawBegin( 1 , 0 );
   }
   // Устанавливаем развёртку.
   if (st_nWBeginSearch <= 0 ) st_nWBeginSearch = 0 ;
   for (i = st_nWFirstVisiblBar; i >= st_nWBeginSearch; i--)
   { // Очищаем буфер от лишних значков для вызова окна свойств индикатора.
     if (i > 0 ) gl_adBufIndicator2[i] = EMPTY_VALUE;
    // Закрепление вертикальной развёртки графика с помощью индикаторного буфера.
     if (i % 2 == 0 ) gl_adBufIndicator1[i] = gl_dMaxPositionMark; // Для фиксации верхней координаты дополнительного окна.
     else gl_adBufIndicator1[i] = gl_dMinPositionMark;             // Для фиксации нижней координаты дополнительного окна.
   }
   // Расчёт и создание горизонтальных линий разметки. Создаём один раз и отслеживаем через заданный уровень при увеличениях максимальных уровней.
  // Установка вертикальной развёртки, расчёт и создание горизонтальных линий разметки.
   if ((gl_dMaxPositionMark - gl_dMinPositionMark) != tmp_dDifferPosMark)
   {
    MakingHorizontalSectoring(AutoStep, Color_LNH, Color_LN0, gl_dMaxPositionMark, gl_dMinPositionMark, Step_LNH, 15 , Style_LNH, Width_LNH, st_nWindow, gl_sFullNameObject);
   }
 }
 
nen :

개인에서 서신을 삭제하지 않은 경우 최적화의 예를 들었습니다. 그런 다음 당신은 그것을 이해한다고 썼습니다.

나는 서신을 삭제했지만 그것이 없어도 최적화가 무엇인지 완벽하게 이해합니다 ...

분명히, 최소한의 코드의 도움으로 두려운 것을 공식화하지만 현실에서 재현하지 못한 것을 ...

대화는 완전히 어리석은 것으로 판명되었습니다 ... 표시기 중 어느 것도 각 틱 에서 버퍼를 다시 초기화하도록 요구하지 않습니다 ...

그래서 무슨 내용인지 알아보려고 하는데....


Zhunko에게: 나중에 내가 쓴 것을 피우려고 할 것입니다.

 

여기에서 테스트 표시기에서 몇 줄을 변경했습니다(오류를 찾기 위해 게시함)...

모든 틱에서 버퍼가 다시 계산되지 않습니다!

전혀 변한게 없다

파일:
 
AlexSTAL :

여기에서 테스트 표시기에서 몇 줄을 변경했습니다(오류를 찾기 위해 게시함)...

모든 틱에서 버퍼가 다시 계산되지 않습니다!

전혀 변한게 없다

코드를 살펴보았습니다. 진드기가 없습니다. 여기서는 변경되지 않습니다. 차트를 업데이트하려면 틱이 필요합니다.
 
Zhunko :
코드를 살펴보았습니다. 진드기가 없습니다. 여기서는 변경되지 않습니다. 차트를 업데이트하려면 틱이 필요합니다.
"차트 업데이트의 틱"이란 무엇입니까? 인위적으로 발생하거나 무엇입니까? API를 사용하여?
 

여기에 마지막 틱 메시지가 있습니다.

버퍼가 업데이트되지 않았습니다.

숫자 2147483647은 새 막대의 버퍼 값입니다.

파일:
 
AlexSTAL :
"차트 업데이트의 틱"이란 무엇입니까? 인위적으로 발생하거나 무엇입니까? API를 사용하여?

네. 이것이 우리 조건의 유일한 차이점입니다.

표시기가 아니라 반복 스크립트에서 업데이트하는 것이 좋습니다.

 
Zhunko :

네. 이것이 우리 조건의 유일한 차이점입니다.

6페이지에서 해결했습니다...

이제 매우 흥미 롭습니다. 넨을 부르는 인공 진드기는 어디에 있습니까?