초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 374

 
Vitalii Ananev :
그런 다음 주어진 시간 후에 iHigh(Symbol(), PERIOD_D1 ,0); 값을 취하면 됩니다. 아직 완전히 형성되지 않은 일일 양초에 대해서만 이것을하는 것이 합리적입니다. 그러나 과거의 값을 취하면 주어진 시간에 동일할 것입니다.
그게 문제야 이 사건을 돌이켜 봐야지....
 
-Aleks- :
그게 문제야 이 사건을 돌이켜 봐야지....

분명한. 모든 일중 가격 극단값을 고정해야 합니다. 여기서 나는 과거 데이터에서 그것을 수행하는 방법을 너무 빨리 알아낼 수 없습니다.

가장 먼저 떠오르는 것은 일중 시간 간격으로 형성된 프랙탈을 분석하는 것입니다.

 

일반적으로 배열 이름을 변수로 설정하는 방법을 더 명확하게 설명하는 방법을 모르겠습니다.

예를 들어, Mass1과 Mass2의 2개의 배열이 있고 동일한 함수가 실행되는지 확인해야 하지만 조건에 따라 두 개의 다른 배열이 있습니다.

 if (условие== true )

	И мя_массива=Mass1

else 

	Имя_массива=Mass2

기능 유형:

A=Имя_массива[ 123 ];
 
VANDER :

일반적으로 배열 이름을 변수로 설정하는 방법을 더 명확하게 설명하는 방법을 모르겠습니다.

예를 들어, Mass1과 Mass2의 2개의 배열이 있고 동일한 함수가 실행되는지 확인해야 하지만 조건에 따라 두 개의 다른 배열이 있습니다.

기능 유형:

그리고 두 개의 배열을 선언하기 위해 어떤 믿음이 방해가 될까요?
 
VANDER :

일반적으로 배열 이름을 변수로 설정하는 방법을 더 명확하게 설명하는 방법을 모르겠습니다.

예를 들어, Mass1과 Mass2의 2개의 배열이 있고 동일한 함수가 실행되는지 확인해야 하지만 조건에 따라 두 개의 다른 배열이 있습니다.

기능 유형:

안 돼요. 배열은 숫자가 지정된 변수 집합 이기 때문입니다.

 
VANDER :

일반적으로 배열 이름을 변수로 설정하는 방법을 더 명확하게 설명하는 방법을 모르겠습니다.

예를 들어, Mass1과 Mass2의 2개의 배열이 있고 동일한 함수가 실행되는지 확인해야 하지만 조건에 따라 두 개의 다른 배열이 있습니다.

기능 유형:

배열에서 작업을 수행하는 함수를 만듭니다. 그리고 조건에 따라 다른 배열을 함수에 전달합니다.

 //+------------------------------------------------------------------+
double massive_a[];
int a, massive_b[];
//+------------------------------------------------------------------+
void OnTick () {
   if (a== 1 ) WorkWithMassive(massive_a);
   else WorkWithMassive(massive_b);
}
//+------------------------------------------------------------------+
void WorkWithMassive( double &massive[]) {
   // работаем с массивом а
   }
//+------------------------------------------------------------------+
void WorkWithMassive( int &massive[]) {
   // работаем с массивом b
   }
//+------------------------------------------------------------------+
 
Vitalie Postolache :
그리고 두 개의 배열을 선언하기 위해 어떤 믿음이 방해가 될까요?
둘 다 선언되었지만 함수가 크고 모든 배열에 대해 동일하기 때문에 선택할 필요가 있습니다.
 
Artyom Trishkin :

배열에서 작업을 수행하는 함수를 만듭니다. 그리고 조건에 따라 다른 배열을 함수에 전달합니다.

ATP, 하지만 WorkWithMassive 함수 내부에서 이 배열에 액세스하는 방법은 무엇입니까?
 
VANDER :
ATP, 하지만 WorkWithMassive 함수 내부에서 이 배열에 액세스하는 방법은 무엇입니까?

배열은 참조로 전달되며 입력 매개변수를 통해 함수에 전달하는 배열을 참조합니다. 예를 들어 (순전히 가상으로)

 //+------------------------------------------------------------------+
void WorkWithMassive( double &massive[]) {
   int a= 20 ;
   ArrayResize (massive,a);
   for ( int i=a-1; i>= 0 ; i--) {
      massive[i]=iOpen( Symbol (), Period (),a);
      }
   }
//+------------------------------------------------------------------+

물론 필요한 모든 매개변수를 함수에 전달하는 것이 좋습니다.

 //+------------------------------------------------------------------+
void WorkWithMassive( string symbol, int timeframe, double &massive[]) {
   int a= 20 ;
   ArrayResize (massive,a);
   for ( int i=a; i>= 0 ; i--) {
      massive[i]=iOpen(symbol,timeframe,a);
      }
   }
//+------------------------------------------------------------------+

글쎄, 당신은 함수 오버로딩 을 사용할 수 있습니다 - 같은 이름을 가진 함수는 입력 매개변수와 유형에 따라 다른 일을 합니다:

 //+------------------------------------------------------------------+
void WorkWithMassive( string symbol, int timeframe, double &massive[]) {
   int a= 20 ;
   ArrayResize (massive,a);
   for ( int i=a; i>= 0 ; i--) massive[i]=iOpen(symbol,timeframe,a);
   }
//+------------------------------------------------------------------+
int WorkWithMassive( int inp_value, int array_size, int &massive[]) {
   ArrayResize (massive,array_size);
   massive[array_size- 1 ]=inp_value* 2 ;
   return (massive[array_size- 1 ]+massive[ 0 ]);
   }
//+------------------------------------------------------------------+
 
-Aleks- :
권리.

1. 매일 양초의 시작 시간을 결정하십시오.

2. 필요한 시간대 에 막대 수를 결정합니다 (15분마다 하루의 극한값을 확인하려는 경우 - M15 막대).

3. 숫자 막대에 대한 높은 데이터를 가져옵니다.

3. 루프에서 모든 높은 막대 값을 원하는 데이 캔들에 대한 dayHigh 변수와 비교합니다(초기 dayHigh = 0).

4. high > dayHigh인 경우 - dayHigh 변수에 새 값을 저장합니다.

사유: