찻주전자의 질문 - 페이지 65

 
x100intraday :

내 함수를 호출할 때 포인터를 통해 참조로 배열을 전달하거나 다른 것을 전달하시겠습니까?

값 및 참조에 의한 매개변수 전달 에 대한 핸드북 섹션을 읽으십시오.

MQL5 참조 / 언어 기본 / 기능 / 매개변수 전달

Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5
 
Yedelkin :

값 및 참조에 의한 매개변수 전달 에 대한 핸드북 섹션을 읽으십시오.

MQL5 참조 / 언어 기본 / 기능 / 매개변수 전달

일반적으로 나는 방금 거기에서 왔으며 이전 메시지에 표시된 컴파일 오류는 섹션을 읽은 직후였습니다.

이제 나는 그것을 더 주의 깊게 다시 읽었습니다. 그것은 모두 const와 그것을 붙일 위치에 관한 것입니다.

감사합니다.

 
x100intraday :

OnCalculate에서는 높은 인덱스와 같은 배열 요소를 쉽게 사용할 수 있습니다 . ExtFunc에서 이 배열의 인덱스 요소에 액세스할 수도 있습니까? 내 함수를 호출할 때 포인터 또는 다른 것을 통해 참조로 배열 인수를 전달하시겠습니까? 지금까지 오류 메시지 를 최소화할 수 있었습니다. "'높은' - 매개변수 변환이 허용되지 않습니다." 및 "'높은' - 상수 변수를 참조로 전달할 수 없습니다." 배열로 내 함수를 호출하는 동일한 줄에서 OnCalculate의 인수. 희망이 없거나 해결책이 있습니까?

OnCalculate에 있는 동안 다른 배열에 high를 복사하는 데 의존합니다.

그런 다음 높은 배열을 직접 사용하는 대신 ExtFunc에서 CopyOfHigh를 사용하십시오.

참조로 함수에 배열을 전달하기만 하면 됩니다.

 bool ExtFunc ( string str, int P, int i, double & high[] )
  {
   if (high[i] < high[i- 1 ]) return ( false );
   return ( true );   
  }

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
   int i= 0 ;
   if ExtFunc( "s" , 60 ,i, high ) == 1 )
     Buffer[i] = high[i];
  }
 

모두를 환영합니다!

경고의 의미:

유형 변환 전문가로 인한 데이터 손실 가능성 .mq5

컴파일할 때??? 이에 맹세합니다.

   string Symb= "EURJPY" ;
   int DIGITS = SymbolInfoInteger (Symb, SYMBOL_DIGITS );

뭐가 문제 야?

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
sergey1294 :

참조로 함수에 배열을 전달하기만 하면 됩니다.

확실히 그런 식으로:

 bool ExtFunc ( string str, int P, int i, const double & high[])
  {
   if (high[i] < high[i- 1 ]) return ( false );
   return ( true );   
  }

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
   int i= 0 ;
   if ExtFunc( "s" , 60 ,i,high) == 1 )
     Buffer[i] = high[i];
  }
 
RomanS :

모두를 환영합니다!

경고의 의미:

유형 변환 전문가로 인한 데이터 손실 가능성 .mq5

컴파일할 때??? 이에 맹세합니다.

뭐가 문제 야?

SymbolInfoInteger () 함수는 long 유형의 값을 반환하고(참조 참조) DIGITS는 int로 선언됩니다. 여기서 암시적 유형 변환이 발생합니다. "유형 캐스팅" 섹션을 참조하십시오.
 
RomanS :

경고의 의미:

유형 변환으로 인한 데이터 손실 가능성

이 메시지의 의미는 메시지가 표시되는 컨텍스트에 따라 다릅니다.

예를 들어:

1. "노골 캐스팅을 하라!"

   int DIGITS = (int) SymbolInfoInteger (Symb, SYMBOL_DIGITS );

2. "암시적 유형 캐스팅으로 데이터가 손실될 수 있습니다." // 이것은 리터럴 번역입니다.

함수에 의해 반환된 long 유형이 더 크고 더 넓은 범위의 값을 포함하기 때문에 이는 이해할 수 있습니다.

대부분의 시간에 내 마음에 오는 또 다른 옵션은 다음과 같습니다.

3. "MetaQuotes 직원들은 mql5 컴파일러의 오류 메시지와 경고가 사용자의 모국어로 발행된다면 연구하는 것이 얼마나 멋지고 매력적이며 효과적인지 이해하지 못합니다."

 
MetaDriver :

... mql5 컴파일러 오류 메시지와 경고 가 사용자의 모국어로 발행된다면 얼마나 멋지고 매력적이며 효과적인 공부가 될까요?"

예, 좋을 것입니다. 나는 개인적으로 이미 영어에 약간 능통하고 번역가는 이제 10센트이지만 이것은 다시 그 소중한 시간을 차지하는데 그렇게 많지는 않습니다. 그들 중 일부는 금융 시장 거래 + 프로그래밍과 관련된 이미 매우 복잡한 주제로 번역가를 만나기 위해 그 중 일부가 거의 없습니다. MetaTrader 5는 다국어 플랫폼입니다. 도움말 예제의 메시지와 설명(때로는 접하게 됨)은 터미널에서 선택한 언어로 표시됩니다.
 

표시기가 iCustom을 통해 활성화되면 각 눈금 에서 계산된다는 의혹이 있었습니다. 그리고 CopyBuffer를 통한 호출에 의존하지 않습니다. 맞아요?

true인 경우 표시기 재계산을 끄고 CopyBuffer를 호출하기 전에만 켤 수 있습니까?

 
masharov :

표시기가 iCustom을 통해 활성화되면 각 틱에서 계산된다는 의혹이 있었습니다. 그리고 CopyBuffer를 통한 호출에 의존하지 않습니다. 맞아요?

그것은 모두 사용자 지정 표시기 에 포함된 논리에 따라 다릅니다. 원칙적으로 다른 모든 틱은 건너뛰고 하루에 한 번 값을 다시 계산할 수 있습니다. 말하자면 작가의 의지로 말이다.

마샤로프 :

true인 경우 표시기 재계산을 끄고 CopyBuffer를 호출하기 전에만 켤 수 있습니까?

원칙적으로 일부 사람들은 iCustom을 통해 표시기의 사본을 만들고 필요한 데이터를 복사하고 표시기의 사본을 파괴하는 것과 같은 괴물 같은 접근 방식을 사용하려고 시도합니다. 절차는 필요에 따라 반복됩니다.

..OnTimer() 함수도 있습니다. 나는 그것을 직접 사용하지 않았지만 아마도 당신이 당신의 작업을 위해 그것을 구성 할 수있을 것입니다.