[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 5. - 페이지 175

 
alsu :

아니요, 루프 전에 내가 가진 하나의 변수에서. 녹음

동일한

   int cnt,i;
 for  (cnt =  0 , i = index + g_center -  1 ; i >=  0  && cnt < g_center; i--) 

   

지금은 이해. 고맙습니다. 그러고 보니.. 출발점이 없었다. 이제 0 이 그려집니다..


흠. 예를 들어 index 는 값 1로 전달됩니다. 다음 코드를 살펴보겠습니다.

 int cnt = 0 , i = index + g_center - 1 ;
   for (; i >= 0 && cnt < g_center; i--)           // Справа от центрального бара должно
   {                                               // ..быть g_center-1 баров с большим..
       if (centerLow >= Low[i])                     // ..минимумом. Не позволяется..
         return ( false );                           // ..наличие баров с меньшим или..
      cnt++;                                       // .. равным минимумом
   }
   

도착 즉시 다음과 같을 것입니다: cnt = 0 , i = index + g_center - 1 = 1(index value) + 2( g_center value ) - 1 = 2

그러나 루프의 조건에 따라 i0 이 될 때까지 계속됩니다. 어떻게 될까요?

조건은 i 가 2(인덱스 = 1인 경우)에서 i >= 0 사이의 값을 갖고 cnt 가 0에서 cnt < g_center 사이의 값을 갖는 경우 중첩 조건이 충족된다는 것입니다.

여기 변수가 1 이면 루프에서 1 회만 반복하게 됩니다. 맞죠?

 
alsu :

"0 bar로 제한"의 개념 확장
즉, 2개의 프랙탈을 통해 선(선이 아님)을 그려야 하지만 0 bar에서 끝나야 합니다.
 
beginner :
즉, 2개의 프랙탈을 통해 선(선이 아님)을 그려야 하지만 0 bar에서 끝나야 합니다.


알고리즘은 다음과 같습니다.

1. 프랙탈의 좌표를 (i1; p1) 및 (i2; p2), i1<i2로 둡니다(즉, 첫 번째 프랙탈이 두 번째 것보다 0 bar에 더 가깝습니다).

2. 이 도형들을 지나는 직선의 방정식 p = (p1-p2)/(i1-i2) * i + (p2*i1 - p1*i2)/(i1-i2)

3. 따라서 끝의 다음 좌표로 세그먼트를 그려야 합니다. (0; (p2*i1 - p1*i2)/(i1-i2)) 및 (i2; p2)

4.객체 생성 (...)

5. ???

6. 이익!!!

 
Vinin :

새로운 날의 첫 번째 틱에 트리거되어야 합니다.

당신의 응답을 주셔서 감사합니다! 사실, 표시기 시작 부분에 삽입할 때까지 작동하지 않았습니다.

if(Hour() == 0 && Minute() == 0 && Seconds() == 0) { DeleteObject() 등

}

if(시() >= 0 && 분() >= 0 && 초() >= 1) { 표시 코드 ...

최근에 이것은 작동하지 않습니다! 나는 무엇을해야할지 모르겠다. 무엇을 계몽할 수 있습니까? 고맙습니다!

이제서야 글을 쓸 수 있었고 토요일에는 생계를 위해 돈을 벌었습니다.

 
hoz :


예, 보리스 , 그런데, 아주, 나타났습니다! 고맙습니다. 그게 내가 원했던거야. 트위스트 .. spun .. 하지만 그것을 보기 위해 트위스트 하지 않았다. 아직 경험이 많지 않고 뇌도 프로처럼 생각하지 않는다. 갑자기 뭉툭한 뭉치가 있습니다 .. :(

바로 묻고 싶지는 않았지만 물어볼 수밖에 없었다. 왜냐하면 그것은 바로 컷에서 작동하지 않았습니다.

유용하셨다니 다행입니다! 결국 나 자신도 당신처럼 2년 전에 시작했지만 어린 시절부터 항상 항상 혼자 모든 것에 도달하는 데 익숙해졌습니다, tk. 힌트를 통한 지식은 체계적으로 형성될 수 없습니다. 그리고 나는 절대적으로 필요할 때만 묻습니다. 이미 모든 것을 완료하고 모든 곳을 보았지만 작동하지 않습니다. 이곳의 많은 초보자들은 빠르게 엉뚱한 짓을 하고 돈을 펌핑하기를 원합니다. 경험이 그들을 가르칠 것입니다. 앞서서 이해가 되지 않는 복잡한 것보다 스스로에게 분명한 단순한 것이 낫다고 말했고, 그런 상황은 본론으로 들어갈 때까지 피하는 것이 낫다고 말씀드렸습니다. 코드는 다양한 방법으로 수행할 수 있지만 논리는 자신에게 2와 2만큼 명확해야 합니다. 따라서 나는 여전히 이해하지 못하는 사용을 피합니다. 코드는 시간이 지남에 따라 문제 없이 수정할 수 있도록 완벽하게 알고 숙달해야 하는 도구입니다. 행운을 빌어 요!
 
hoz :

지금은 이해. 고맙습니다. 그러고 보니.. 출발점이 없었다. 이제 0 이 그려집니다..


흠. 예를 들어 index 는 값 1로 전달됩니다. 다음 코드를 살펴보겠습니다.

도착 즉시 다음과 같을 것입니다: cnt = 0 , i = index + g_center - 1 = 1(index value) + 2( g_center value ) - 1 = 2

그러나 루프의 조건에 따라 i0 이 될 때까지 계속됩니다. 어떻게 될까요?

조건은 i 가 2(인덱스 = 1인 경우)에서 i >= 0 사이의 값을 갖고 cnt 가 0에서 cnt < g_center 사이의 값을 갖는 경우 중첩 조건이 충족된다는 것입니다.

여기 변수가 1 이면 루프에서 1 회만 반복하게 됩니다. 맞죠?


루프는 for() 문의 두 번째 위치에 작성된 조건이 참이 되지 않을 때, 즉 이 경우 i가 0보다 작거나 cnt가 g_center보다 크거나 같을 때 종료됩니다. 두 변수 모두 루프 전에 할당된 초기 값을 가지며 실행 중에 변경됩니다. i의 결과에서 변수 i--(for 문의 세 번째 부분, 루프가 닫는 대괄호 }에 도달할 때마다 실행됨), 그리고 cnt++ 의 결과에 있는 변수 cnt .
 

하이.

데모 계정에서 내 거래를 html 상태로 내보내려고 합니다. (alpari, 마지막 빌드). 보고서로 저장을 누르고 폴더 선택 창이 열리고 저장 버튼을 눌러도 아무 일도 일어나지 않습니다. 데모에 있는 모든 사람이 그런가요? 또 다른 요점은 내 MT4가 데스크탑에 설치되어 있다는 것입니다. 상관이 있나?

 
borilunad :
Hour(), Minute() 및 Seconds() 전역 변수를 만들어 자정(0.00)에 EA의 새 PP 수준 및 기타 행에 대한 DailyPivotPoints 표시기의 변경을 제어할 수 있는지 누가 알겠습니까? 나는 Hour(), Minute(), Seconds()를 사용하여 표시기에서 바로 수행했는데 매일 밤 컴파일하지 않고도 작동했습니다. 그리고 최근에 빌드 변경에서 자체 변경을 중지 했습니까? 고맙습니다!


:) 그리고 왜 이 순간을 새로운 막대 의 기능으로 구현하지 않습니까? 하루에 한 번, 즉. 칠면조가 다시 계산을 수행하는 시간 0.00부터 시작합니다. 그래서 우리는 쉽게 만듭니다. 처음에는 중요하지만:

 if (lastBarTime == время с ТФ Д 1 )
     return ( 0 );
// что-то тут ещё
// что-то тут ещё
// что-то тут ещё
if (lastBarTime != время с ТФ Д 1 )
{
    пересчитывает уровни пивотов...
    lastBarTime = время с ТФ Д 1 ;
}
내 생각에는 이것이 가장 올바른 방법이지만 원시적입니다!
 
alsu :

루프는 for() 문의 두 번째 위치에 작성된 조건이 참이 되지 않을 때, 즉 이 경우 i가 0보다 작거나 cnt가 g_center보다 크거나 같을 때 종료됩니다.


현재는 나도 아니고 나다. && 기호도 있다.

이해합니다. 그러나 여기서 요점은 다음과 같습니다.

 bool IsUpFractal( int index)
{
   double centerHigh = High[index + g_center];     // За точку отсчета берется средний..
                                                   // ..бар на участке из i_fractalPeriod
                                                   // ..баров
// - 1 - == Поиск максимумов справа от центрального бара ================================
   int cnt = 0 , i = index + g_center - 1 ;
   for (; i >= 0 && cnt < g_center; i--)           // Справа от центрального бара должно
   {                                               // ..быть g_center-1 баров с низшим..
       if (centerHigh <= High[i])                   // ..максимумом. Не позволяется..
         return ( false );                           // ..наличие баров с большим или..
      cnt++;                                       // ..равным максимумом.
   }
   
   if (i < 0 )                                       // g_center-1 низших максимумов не..
       return ( false );                               // ..найдено. Фрактала нет
// - 1 - == Окончание блока =============================================================

인덱스 변수에는 일반적으로 Bar - IndicatorCounted() 값이 있습니다.

저것들. 현재 막대에서는 1이고 새 막대에서는 2입니다.

값은 IsUpFractal() 함수에 하나씩 입력되거나 막대가 아직 새롭지 않은 경우 1입니다. 그렇죠?

그것은 변수 i 가 고정 값을 가질 것임을 의미합니다. 입력 매개변수 인덱스 도 고정됩니다. 따라서 루프는 첫 번째 반복 후에 항상 중단됩니다. 그렇다면 왜 순환합니까?

 

왜 사실이 아닌지 알려주세요..

 double IN[ 111 ];
double PERI= 33 ;
double KRIT;
int z;      
ArraySetAsSeries (IN, true );

   for (z= 0 ; z<=PERI; z++)  {
IN[z]=     iClose(Symbol1.Name, 0 ,iBarShift(Symbol1.Name, 0 ,Time[z], false )); }

   for (z= 0 ; z<=PERI; z++)  {
KRIT=IN[z]-iMAOnArray(IN, 0 ,PERI, 0 , MODE_SMA ,iBarShift(IN, 0 ,Time[z], false )); }

Print (KRIT);
return ;