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

 
Vitaly Muzichenko :

limit - 차트의 막대 수로 기록을 스크롤할 때 기록이 끝날 때까지 표시기가 표시됩니다.


정말 감사합니다! :)

 

좋은 시간입니다. Moveng이 제공하는 지표에서 매개 변수를 설정하는 방법을 알려주십시오 - 적용 대상 - 중앙값

작업을 설명하겠습니다. 표시기는 계산 데이터 MA를 기록하는 array[][]를 가지고 있습니다. - 작업은 기본이 아닌 HL/2 가격으로 데이터를 기록하는 것입니다.

 

안녕하세요, CDecisionForest 클래스의 객체를 bin 파일(Alglib 라이브러리에서 가져옴)에 쓰려고 하는데 방법을 모르겠습니다. FileWriteStruct를 통해 시도했지만 컴파일러에서 내 클래스의 인수에 오류가 발생했습니다.

'df' - structures containing objects are not allowed

일반적으로 이것을 어떻게든 기록할 수 있습니까? 아니면 개체 자체를 분해하고 부품으로 기록했다가 다시 조립해야 합니까?
 
Vitaly Muzichenko :

limit - 차트의 막대 수로 기록을 스크롤할 때 기록이 끝날 때까지 표시기가 표시됩니다.


친애하는, 설명하십시오.

귀하의 링크에 있는 정보를 사용하여 성공하지 못했습니다.

스스로 한계 값을 선언하면 "Array out of range" 창이 뜹니다.

디버거는 for 루프에서 배열이 있는 행을 가리킵니다.

 for ( int i= 0 ; i<limit; i++) {
    RSI[i] = iRSI ( Symbol (),TimeFrame, 14 , PRICE_CLOSE ,i);
  }

for ( int i= 0 ; i<limit; i++) {
    BandsMn[i]= iBandsOnArray (RSI, 0 ,BB_Period,BB_Dev, 0 , MODE_MAIN ,i);
    BandsUp[i]= iBandsOnArray (RSI, 0 ,BB_Period,BB_Dev, 0 , MODE_UPPER ,i);
    BandsDn[i]= iBandsOnArray (RSI, 0 ,BB_Period,BB_Dev, 0 , MODE_LOWER ,i);
  }

이 작업을 수행하는 더 쉬운 방법이 있습니까?
나는 그림이 필요하지 않습니다.

현재 및 이전 막대의 값만.

 
Ras al Ghul :

친애하는, 설명하십시오.

귀하의 링크에 있는 정보를 사용하여 성공하지 못했습니다.

스스로 한계 값을 선언하면 "Array out of range" 창이 뜹니다.

디버거는 for 루프에서 배열이 있는 행을 가리킵니다.

이 작업을 더 쉽게 수행할 수 있는 방법이 있습니까?
나는 그림이 필요하지 않습니다.

현재 및 이전 막대의 값만.

한도는 어떻게 계산합니까?

실제로 지표를 거꾸로 계산할 때 기록의 시작부터 끝까지(현재 데이터까지) 한계는 일반적으로 다음과 같이 계산됩니다.

   if (rates_total< нужное_количество_баров_для_верного_расчёта ) return ( 0 );
   int limit=rates_total-prev_calculated;
   if (limit> 1 ) {
      limit=rates_total- нужное_количество_баров_для_верного_расчёта - 1 ;
       // здесь, при необходимости очистки мусора в буферах, их инициализация пустыми значениями
      }
   //---
   for ( int i=limit; i>= 0 ; i--) {
       // тут цикл просчёта индикатора
      }
" required_number_of_bars_for_correct_calculation "이라는 용어는 지표가 올바르게 계산될 최소 막대 수를 의미합니다. 2X2 프랙탈의 경우 - 6개의 막대 - 왼쪽에 2개, 중앙에 1개, 오른쪽에 2개, 오른쪽에 1개, 프랙탈이 다시 그려지지 않도록 완전히 형성되어야 합니다.
 

안녕하세요 인디케이터에서 1차원 배열의 크기를 늘리는 방법을 알려주세요

호출할 버퍼 인덱스가 있는 경우

그리고 배열의 크기 가 막대의 수를 초과합니다.

 

그런 단순한 장소에 갇힌 것 같습니다. 전역 int checkcount=0 은 어떻습니까? 정수 수 = 0; 여러 counter() 함수 를 병렬로 실행하려는 경우?

 void OnTimer ()
  {
Print ( "counter(10)= " ,counter( 10 ));
Print ( "counter(14)= " ,counter( 14 )); // !!!
  }

int chekcount= 0 ; //???
int count= 0 ; //???

int counter( int Pause= 10 )
  {
   count++;
   if (count>=chekcount+Pause)
      chekcount=count;

   return (chekcount);
  }

 
Nauris Zukas :

그런 단순한 장소에 갇힌 것 같습니다. 전역 int checkcount=0 은 어떻습니까? 정수 수 = 0; 여러 counter() 함수 를 병렬로 실행하려는 경우를 대비하여?

클래스를 사용하거나 다른 이름으로 함수의 복사본을 만드십시오.

 
Vitaly Muzichenko :

클래스를 사용하거나 다른 이름으로 함수의 복사본을 만드십시오.

그래서 간단하지 않습니다 ... 감사합니다!

 

어렵지 않다면 누군가 클래스를 사용하여 이 함수를 다시 작성할 수 있습니까?

 void OnTimer ()
  {
Print ( "counter(10)= " ,counter( 10 ));
Print ( "counter(14)= " ,counter( 14 )); // !!!
  }

int chekcount= 0 ; //???
int count= 0 ; //???
int counter( int Pause= 10 )
  {
   count++;
   if (count>=chekcount+Pause)
      chekcount=count;
   return (chekcount);
  }