오류, 버그, 질문 - 페이지 951

 
MQL5에서 가변 매개변수 수로 함수를 작성할 수 있습니까? 예를 들어 StringConcatenate (...) 또는 Print(...)?
 
skteks :

전략 테스터에서 MT5와 함께 제공되는 표준 ExpertMACD Expert Advisor를 테스트했는데 오류가 발생합니다.

2013.03.30 19:18:09 46ms 동안 "OnInit 실패" 오류와 함께 코어 2 유전자 통과(0, 15) 테스트

2013.03.30 19:18:08 32ms 동안 "OnInit 실패" 오류와 함께 코어 1 유전자 통과(0, 13) 테스트

2013.03.30 19:18:07 코어 2 유전자 패스(0, 5)가 0ms 동안 "OnInit 실패" 오류로 테스트됨

선택 방법에 의해 MACD의 고속 및 저속 기간을 최적화할 때 "SignalMACD" 모듈에 오류가 있음을 발견했습니다(전략 테스터 매개변수의 확인란을 선택할 때).

누구든지이 문제가 발생했으며이 문제를 해결하는 방법은 무엇입니까? (체크 표시가 하나만 있을 때는 그래도 어떻게든 작동하지만 두 개를 넣으면 바로 오류)

느림 및 빠름에 대해 다른 변경 범위를 설정합니다. 오류가 사라집니다. 그냥 무시하셔도 됩니다.

 
w1sp :
MQL5에서 가변 매개변수 수로 함수를 작성할 수 있습니까? 예를 들어 StringConcatenate(...) 또는 Print(...)?
예, 할 수 있습니다. 함수 오버로딩 이라고 합니다.
 
w1sp :
MQL5에서 가변 매개변수 수로 함수를 작성할 수 있습니까? 예를 들어 StringConcatenate(...) 또는 Print(...)?

예를 들어, 배열을 매개변수로 만들 수 있으며, 그 크기는 매개변수의 수와 같습니다.

 
StringConcatenate 에서와 같이 관심 있는 매개변수의 가변 수입니다. 다음과 같이: string Concatenate(string s, ...); 이게 가능해?
 
w1sp :
StringConcatenate 관심에서와 같이 매개변수의 가변 수. 다음과 같이: string Concatenate(string s, ...); 이게 가능해?

유사 가능합니다. 최대 64개의 매개변수를 함수에 전달할 수 있습니다.

 void OnStart ()
  {
string s1=Foo( "5" );
string s2=Foo( "5" , "t" );

// string s=Foo(,"5"); // Ошибка
   
  }
//+------------------------------------------------------------------+
string Foo( string i0= "" , string i1= "" , string i2= "" )
{

string rez=i0+i1+i2;

return rez;
} 
 
Snaf :

유사 가능합니다. 최대 64개의 매개변수를 함수에 전달할 수 있습니다.

그리고 모든 인수에 대한 임의 유형은 오버로딩을 통해서만 달성할 수 있습니까? 즉, string 뿐만 아니라 double도 함수에 전달할 수 있습니다. 문자열 s = 연결("abc",2.0,"def");  

 
w1sp :

그리고 모든 인수에 대한 임의 유형은 오버로딩을 통해서만 달성할 수 있습니까? 즉, string 뿐만 아니라 double도 함수에 전달할 수 있습니다. 문자열 s = 연결("abc",2.0,"def");  

 void OnStart ()
  {
//string s1=Foo("5");  // Это теперь ошибка. Компилятор не знаек какой функцией из двух пользоваться
string s2=Foo( "5" , 3.0 );

// string s=Foo(,"5"); // Ошибка
   
  }
//+------------------------------------------------------------------+
string Foo( string i0= "" , string i1= "" , string i2= "" )
{

string rez=i0+i1+i2;

return rez;
}

string Foo( string i0= "" , double i1= 2.0 , string i2= "" )
{
string rez;
if (i1> 2.0 ) {rez=i0+i2;} else rez=i0+ "99" +i2;

return rez;
}  
 
Snaf :
고맙습니다. 이해했다. 문자열 타입의 64개의 인자로 함수를 만들고 첫 번째 인자를 제외한 모든 것에 기본값을 추가하는 것으로 충분합니다.
Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
안녕하세요. MT5 빌드를 업데이트한 후 표시기가 더 이상 테스터에 정상적으로 표시되지 않고 터미널 자체에 정상적으로 표시됩니다. 표시기는 상당히 복잡하고 리소스 집약적(ZUP)이므로 MT4에서 MT5로 전송합니다. Build 756 테스터에서는 ZigZag 라인이 정상적으로 표시되고 Build 770 이후 테스터에서는 ZigZag 가격 값이 정확하지만 시간대가 정확하지 않습니다(이동되고 고르지 않음) ZigZag 는 출력 버퍼입니다. 동시에 그래픽 개체(삼각형, 선 등, 그런데 출력 버퍼(ZigZag 포함)의 데이터를 기반으로 구축됨)는 정상적으로 표시됩니다. 도와주세요, 이해해 주세요.