기고글 토론 "여러 중간 인디케이터 버퍼들을 통해 다중 화폐 인디케이터 만들기"

 

새로운 기고글 여러 중간 인디케이터 버퍼들을 통해 다중 화폐 인디케이터 만들기 가 게재되었습니다:

최근 FOREX 시장의 클러스터 분석에 대한 관심이 높아지고 있습니다. MQL5는 통화 쌍의 이동 동향을 조사할 수 있는 새로운 가능성을 열어줍니다. MQL4와 차별화되는 MQL5의 주요 기능은 인디케이터 버퍼를 무제한으로 사용할 수 있다는 것입니다. 이 문서에서 그러한 다중 화폐 인디케이터를 만드는 예시에 대해 다뤄보겠습니다.

이걸로 인디케이터 계산이 마무리됩니다. 4-6번 그림에서 각기 다른 타입의 인디케이터의 사진 몇개를 볼 수 있습니다.

4번 그림. 인덱스에 따른 RSI

작성자: Alexey Klenov

 

값에 따라 이 지표도 정렬하는 것이 유용할 것입니다.

를 정렬하는 것도 유용할 것 같습니다. 그런 기능이 있다면 자전거를 발명하지 않도록 공유해 주세요.

 
Prival:

이러한 지표에서도 이를 정렬하는 것이 유용할 것입니다.

같은 지표로 정렬하는 것도 유용할 것 같습니다. 그런 기능이 있다면 자전거를 발명하지 않도록 공유해 주세요.

준비된 기능은 없지만 스케치하는 것은 어렵지 않을 것 같습니다.

19.05.2010

여기에 실현되었습니다.

파일:
 

감사합니다.

한 가지 지적하고 싶은 것은 동기화 방법이 항상 작동하는 것은 아니라는 점입니다. 여기 그림이 있습니다. 24시간 동안 따옴표 안에 구멍이 있지만 모든 것이 동기화되어 있습니다 (((.

이것은 매우 나쁩니다. 왜 그렇게 이해할 수 없으며 가장 중요한 것은 어떻게해야합니까?

 
Prival:

감사합니다.

한 가지 지적하고 싶은 것은 동기화 방법이 항상 작동하는 것은 아니라는 점입니다. 여기 그림이 있습니다. 24시간 동안 따옴표 안에 구멍이 있지만 모든 것이 동기화되어 있습니다 (((.

이것은 매우 나쁩니다. 왜 그렇게 이해할 수 없으며 가장 중요한 것은 어떻게해야합니까?


인디케이터는 두 가지 유형의 동기화를 사용합니다.

1 막대 (차트에 기본적으로 필요한 기록보다 더 많은 막대가 있어야 함) 이 조건은 분명히 충족됩니다.

2 각 통화 쌍에서 제로 바가 열리는 시점까지 -이 조건도 분명히 충족됩니다.

두 번째 동기화 유형과 유사하게 각 쌍의 각 막대의 시작 시간을 확인하기 위해 세 번째 유형의 동기화를 추가 할 가치가 있다고 생각합니다.

조금 더 여유가 생기면 이 유형도 만들 것입니다.

 
olyakish:

....

두 번째 동기화 유형과 유사하게 각 쌍에서 각 막대의 시작 시간을 확인하기 위해 세 번째 유형의 동기화를 추가 할 가치가 있다고 생각합니다.

귀하의 이미지와 유사성에서 저는 bool init_tf(...) 함수를 만들었습니다.

//+------------------------------------------------------------------+
//| 관련 통화 쌍의 차트 초기화 ||
//| 및 데이터 동기화 확인|
//+------------------------------------------------------------------+
//| in.|
//| mas[]는 필수 문자의 이름 배열입니다.
//| time_0 - 현재 바 시간[0]|
//| count_Bars - 필요한 막대 개수 |
//+------------------------------------------------------------------+
bool init_tf(string &mas[], datetime time_0, int count_Bars) { 
   bool     rez=false;              // 성공 플래그
   int      copied=0,               // 복사된 데이터 수
            counter=0,              // 오류 카운터
            tmp_bars=0;             //를 입력하여 사용 가능한 막대 수를 확인합니다.
   datetime tmp_time[1];            // 배열을 사용하여 바 시간을 확인합니다.
   
   f_comment("동기화가 진행 중입니다.");
     
   for(int i=0; i<count_symbol; i++)  {
      //Print("i=",i," ",count_symbol," ",mas[i]);
      tmp_bars=Bars(mas[i],PERIOD_CURRENT);
      if(tmp_bars<count_Bars) { // 막대 개수 확인
         Print("i=",i," 막대가 충분하지 않습니다 (", mas[i],"-",fTimeFrameName(_Period),") MaxBars=",MaxBars," > Bars=",tmp_bars);
         counter++;
      }
      ResetLastError();
      copied = CopyTime(mas[i],PERIOD_CURRENT,0,1,tmp_time);
      if(copied < 1) { // 복사 오류
         Print("i=",i," 복사 오류 (", mas[i],"-",fTimeFrameName(_Period),") №",_LastError," (",ErrorDescription(_LastError),")");
         counter++;
      }
      if(tmp_time[0]!=time_0) { // 시간이 일치하지 않습니다.
         Print("i=",i," 시간 동기화 없음 (", mas[i],"-",fTimeFrameName(_Period),") 델타 ="",(long)(time_0-tmp_time[0])/60," 최소");
         counter++;
      }
   }// end for(int i=0; i<k; i++)
   
   if(counter==0) {  // 모든 것이 정상입니다. 오류 없음
      rez=true;
      f_comment("전부 다. 알았어.");
   } 
   else f_comment("동기화가 되지 않습니다."+(string)counter);

   ChartRedraw( );
   return(rez);
}

챔피언십에 참가할 12쌍을 선택했습니다. 동기화를 연구하기 위한 목적으로만 RVI_ALL 지표를 만들었습니다. 시작했습니다. 결과.

2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 10 시간 동기화 없음 ( GBPJPY - M1 ) 델타 = 1

2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 5 시간 동기화 없음 ( AUDUSD - M1 ) 델타 = 1

2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 1 시간 동기화 없음 ( GBPUSD - M1 ) 델타 = 1

일요일이므로 이 기호에는 막대(마지막 막대)가 없습니다. 다음 틱은 월요일에만 있습니다. 그런 다음 구멍이 없는 이 기사 차트를 기억했습니다 https://www.mql5.com/ko/articles/1407.

그리고 구멍이있을 것입니다. 있을 것입니다. 우리는 어떻게 든 그들과 싸워야합니다. 원칙적으로 기사에서 설명한 것과 동일하게 할 수 있습니다. 하지만 한 가지 질문이 있습니다.

지표가 단일 차트에 매달려 있습니다. 그리고이 기호에 히스토리 스왑이 있으면이를 알아낼 수 있으며 prev_calculated는 0으로 재설정됩니다.

하지만 다른 심볼에 히스토리 스왑이 있었는지 아니면 데이터가 오래 지연된 것인지 어떻게 알 수 있나요?

 
Prival:

그리고 구멍이 생길 것입니다. 구멍은 생길 거야 어떻게든 처리해야 합니다. 원칙적으로 기사에서 설명한 것과 동일하게 할 수 있습니다. 하지만 한 가지 질문이 있습니다.

인디케이터가 단일 차트에 매달려 있습니다. 그리고이 기호에 대한 히스토리 스왑이 있었다면, 나는 그것에 대해 알아낼 수 있으며, prev_calculated는 0으로 재설정됩니다.

하지만 다른 심볼에 히스토리 스왑이 있었는지 아니면 데이터가 오래 지연된 것인지 어떻게 알 수 있나요?


1 히스토리에 구멍이 있는 경우 인디케이터가 그려지지 않도록 하고 구멍을 "패치"하는 순간에 주기적으로 히스토리를 폴링합니다. (현재 차트에 새 틱 또는 타이머).

2. 또는 히스토리의 구멍이 충분히 멀다면 구멍까지만 인디케이터를 그립니다.

이 함수를 약간 수정합니다.

bool init_tf(string &mas[], datetime time_0, int count_Bars, int shift) 
и далее по тексту 
copied = CopyTime(mas[i],PERIOD_CURRENT,shift,1,tmp_time);


그런 다음 이 함수를 루프(0에서 시프트바까지)로 호출합니다.

이 경우

shift

현재 상품 및 TF의 바 위치가 되며, 다른 상품과의 동기화 여부를 확인합니다.

 

이야기에 구멍이 있다는 것을 알 방법이 없습니다.

https://www.mql5.com/ru/forum/1111/8747#comment_8747

유일한 방법은 시간을 복사하여 전체 배열을 반복하는 것이지만, 이 역시 악순환의 고리가 될 수 있습니다 (((

개발자가 https://www.mql5.com/ko/articles/1407 의 개념을 변경하여 구멍이 없는 차트를 만들지 않으면 모든 것을 동기화하는 것이 불가능하다는 것이 밝혀질 수 있습니다.

 
Prival:

이야기에 구멍이 있다는 것을 알 방법이 없습니다.

https://www.mql5.com/ru/forum/1111/8747#comment_8747

유일한 방법은 시간을 복사하여 전체 배열을 반복하는 것이지만, 이 역시 악순환의 고리가 될 수 있습니다 (((

개발자가 https://www.mql5.com/ko/articles/1407 의 개념을 변경하여 구멍이 없는 차트를 만들지 않으면 모든 것을 동기화하는 것이 불가능하다는 것이 밝혀질 수 있습니다.

시간[] 버퍼에 의한 동기화를 사용하면 혼동이 없을 것입니다.

견적 호출에 시간별 사전 확인이 수반되어야 하며, 그러면 모든 것이 동기화됩니다.

방법이 쉽지 않고 오류가 많을 수 있다는 점에 동의하지만.

 

안녕하세요!

달러 지수 공식의 정확성에 대해 의문이 있습니다. 아마도 거짓 일 수 있습니다.

이 공식이 어떻게 만들어졌는지 좀 더 자세히 설명해 주실 수 있나요?

 


"달러 지수는 Neutron에서 친절하게 제공한 공식을 사용하여 계산한 더블 타입의 값입니다."

왜 공식을 인용하고 다른 사람의 이름을 언급할까요? 머리에 눈이 일곱 개나 있는 건가요? 먼저 기사를 읽은 다음 공식의 작성자에게 물어봐야한다는 것이 밝혀졌습니다. 그가 저자라면 어디서 구했는지 링크를 알려주세요.