기고글 토론 "가격 히스토그램 (시장 프로필) 및 MQL5에서 구현" - 페이지 10

 
안녕하세요, 주간 또는 월간 시장 프로필을 작성하기 위해 'ClassExpert' 코드를 수정하는 방법을 아는 사람이 있나요? 도움을 요청합니다.
 
안녕하세요, 첨부 파일을 찾을 수 없습니다! 가격 히스토그램만 있습니다.
 
Thiago Duarte:

"삭제()" 명령을제거하면 작동합니다.

실제로 삭제 함수는 타입 없이 선언되었으므로 "무효"로 설정하면 다시 올바르게 작동합니다.
 

안녕하세요, 저는이 지표가 정말 마음에 들었습니다. 저는 한동안 시장 프로필에 대해 배우고 있었는데 이것이 제가 찾은 최고입니다.


방금 프로필을 계산하는 방법을 변경하여 가격이 지점을 지나쳤는지 확인하는 대신 볼륨 틱을 사용했습니다. 거래와 다른 시간에 다른 파운드가 있으면 거래량 히스토그램에서 볼 수 있기 때문에 이렇게했습니다. 따라서 가격이 1을 더하면 바로 계산할 수 없습니다.


동의하시나요?


제가 변경한 결과 두 가지 방법에서 차이가 나타났습니다.

 
안녕하세요 누구든지 로봇을 POC의이 라인에서만 배신하게 만들 수 있는지 알고 있습니까? 그렇다면 어떻게 할 수 있습니까? ClassPriceHistogram 파일의 모든 변수를 테스트하고 있고 값이 모두 0이기 때문에 누군가 나를 도울 수 있습니까?
 
안녕하세요 루이스@루이스 비니시우스 페레이라 로차 - 저는 프로그래밍을 처음 접했고, POC, 고평가 및 저평가 만 추적하는 EA를 작업하고 있었는데이 지표를 찾게되었습니다. 그러나 다음과 같은 일부 작성자의 변수에 인쇄 기능을 사용하면 Poc_value와 같은 0 값이 나타나면 Poc 포인트를 저장하는 위치를 찾을 수 없습니다. 도와 주시겠습니까?
 

안녕하세요 드미트리,

우선 안녕하세요: 훌륭한 글과 작업에 감사드립니다!

오래 전에 게시했지만 잘 작동합니다.

볼륨이 거의 0에 가까운 시간 영역에서 가격 행동 만 사용하는 것은 그다지 도움이되지 않기 때문에 히스토그램이 틱 볼륨을 사용하도록 업데이트했습니다.

클래스프라이스히스토그램.mqh 파일에서 해당 코드를 교체하세요.


bool CPriceHistogram::calculationPOCs()
  {
   int rates_total,rates_high,rates_time,rates_tv,index;
   double iHigh[],iLow[];
   long iTV[];
   datetime iTime[];
// 시간_시작에서 시간_끝까지 데이터를 가져옵니다 / 시간_시작에서 시간_끝까지 데이터를 가져옵니다.
   int err=0;
   do
     {
      rates_time=CopyTime(NULL,PERIOD_M1,time_start,time_end,iTime);
      rates_high=CopyHigh(NULL,PERIOD_M1,time_start,time_end,iHigh);
      rates_total=CopyLow(NULL,PERIOD_M1,time_start,time_end,iLow);
      
      rates_tv=CopyTickVolume(NULL,PERIOD_M1,time_start,time_end,iTV);
      
      err++;
     }
   while((rates_time<=0 || (rates_total!=rates_high || rates_total!=rates_time || rates_tv!=rates_time)) && err<AMOUNT_OF_ATTEMPTS);
   if(err>=AMOUNT_OF_ATTEMPTS)
     {
      return(false);
     }
   poc_start_time=iTime[0];
   high_day=iHigh[ArrayMaximum(iHigh,0,rates_total)];
   low_day=iLow[ArrayMinimum(iLow,0,rates_total)];
   int count=int((high_day-low_day)/_Point)+1;
// 각 레벨에서 가격을 찾은 기간의 개수 / 각 레벨에서 가격을 찾은 기간의 개수
   int ThicknessOfLevel[];    // 틱 개수에 대한 배열을 생성합니다.
   ArrayResize(ThicknessOfLevel,count);
   ArrayInitialize(ThicknessOfLevel,0);
   for(int i=0;i<rates_total;i++)
     {
      double C=iLow[i];
      long CTV=iTV[i];
      // 분 막대의 틱 볼륨을 막대의 모든 가능한 지점에 배포합니다.
      // 따라서 포인트당 증분은 이렇게 됩니다 ...
      int CInc=int(((iHigh[i]-iLow[i])/_Point));  
      while(C<iHigh[i])
        {
         int Index=int((C-low_day)/_Point);
         ThicknessOfLevel[Index]+=CInc;
         C+=_Point;
        }
     }


빠른 해킹이며 모든 코드를 테스트하지는 않았지만 지금까지는 잘 작동합니다.

다음은 SP500 지수를 사용한 샘플입니다:


왼쪽 원본 코드. 틱 볼륨이 있는 오른쪽

 

친애하는 드미트리

나는 당신이 잘 지내길 바랍니다.

라인에 버퍼를 구현할 수 있을까요?

각 POC에 대해 Vwap과 Median을 구현할 수 있을까요?


미리 감사드립니다.

 
미리 알려드립니다... 모든 파일을 해당 디렉토리에 다운로드하고 컴파일한 후 ClassPriceHistogram.mqh와 관련된 오류가 발생했습니다. 그 중 375번째 줄에서
CPriceHistogram::Delete()

void CPriceHistogram::Delete()

이제 AMP 선물의 MT5 버전 5.00 빌드 3661에서 정상적으로 작동합니다.

올렉산드르님, 이 "인디케이터"는 엄밀히 말하면 전문가입니다. 인디케이터 버퍼는 전문가에서 사용할 수 없습니다. 전문가에서 배열을 사용하여 버퍼를 효과적으로 다시 만들 수 있지만 실제 인디케이터 버퍼만 iCustom에서 호출할 수 있으므로 이를 위해서는 새 사용자 지정 인디케이터를 처음부터 코딩해야 합니다. 안타깝게도 두 옵션 모두 제 코딩 능력 수준을 벗어납니다. 더 나은 도움을 찾을 수 있기를 바랍니다.

 
현재 시점을 표시할 수 있는 방법이 있나요?


감사합니다.