ParameterGetRange

Strategy Tester에서 Expert Advisor를 최적화할 때 입력 변수의 값 범위 및 변경 단계에 대한 데이터를 수신합니다. 이 함수에는 두 가지 변수가 있습니다.

1. 정수 유형 입력 매개 변수에 대한 데이터 수신

bool  ParameterGetRange(
   const string  name,          // 매개 변수 (입력 변수) 명
   bool&         enable,        // 매개 변수 최적화 사용
   long&         value,         // 매개 변수 값
   long&         start,         // 초기 값
   long&         step,          // 단계 변경
   long&         stop           // 최종 값
   );

2. 실제 유형 입력 매개 변수에 대한 데이터 수신

bool  ParameterGetRange(
   const string  name,          // 매개 변수 (입력 변수) 명
   bool&         enable,        // 매개 변수 최적화 사용
   double&       value,         // 매개 변수 값
   double&       start,         // 초기 값
   double&       step,          // 단계 변경
   double&       stop           // 최종 값
   );

Parameter

name

[in] 입력 변수 ID. 이러한 변수는 응용프로그램의 외부 매개 변수입니다. 이 값은 차트에서 시작하거나 단일 테스트 중에 지정할 수 있습니다.

enable

[out]  Strategy Tester에서 최적화 중 값을 열거하는 데 이 매개 변수를 사용할 수 있다는 플래그.

value

[out]  매개 변수 값.

start

[out]  최적화 중 초기 매개 변수 값.

step

[out]  값을 열거할 때 매개 변수 변경 단계.

stop

[out]  최적화 중 최종 매개 변수 값.

반환값

성공하면 true를 반환하고 그렇지 않으면 false를 반환합니다. 오류에 대한 자세한 내용은 GetLastError() 함수를 사용하십시오.

참고

이 함수는 OnTesterInit(), OnTesterPass()OnTesterDeinit() 핸들러에서만 호출할 수 있습니다. 이것은 Strategy Tester에서 최적화하는 동안 Expert Advisor의 입력 매개 변수 값과 변동 범위를 수신하기 위해 도입되었습니다.

OnTesterInit()에서 호출될 때, 가져온 데이터를 사용해 모든 입력 변수의 열거 규칙을 ParameterSetRange() 함수를 사용하여 재정의할 수 있습니다. 따라서 Strategy Tester 설정에 관계없이 새로운 Start, Stop 및 Step 값을 설정하고 입력 매개 변수를 최적화에서 완전히 제외할 수도 있습니다. 이를 통해 Expert Advisor의 주요 매개 변수 값에 따라 일부 매개 변수를 최적화에서 제외함으로써 최적화 중에 입력 매개 변수의 영역을 관리할 수 있습니다.

예:

#property description "ParameterGetRange() 함수 데모를 위한 Expert Advisor."
#property description "Strategy Tester의 최적화 모드에서 실행되어야 함"
//--- 입력 매개 변수
input int                 Input1=1;
input double              Input2=2.0;
input bool                Input3=false;
input ENUM_DAY_OF_WEEK    Input4=SUNDAY;
 
//+------------------------------------------------------------------+
//| Expert 초기화 함수                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Expert Advisor는 Strategy Tester에서만 작동하도록 설계되었습니다
   if(!MQL5InfoInteger(MQL5_OPTIMIZATION))
     {
      MessageBox("Strategy Tester의 최적화 모드에서 실행되어야 함!");
      //--- Expert Advisor 작업을 미리 완료하고 차트에서 제거합니다.
      return(INIT_FAILED);
     }
//--- 초기화의 성공적 완료
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| TesterInit function                                              |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
//--- long 유형 입력 매개 변수 예제
   string name="Input1";
   bool enable;
   long par1,par1_start,par1_step,par1_stop;
   ParameterGetRange(name,enable,par1,par1_start,par1_step,par1_stop);
   Print("첫번째 매개변수");
   PrintFormat("%s=%d  enable=%s  from %d to %d with step=%d",
               name,par1,(string)enable,par1_start,par1_stop,par1_step);
//--- double 유형 입력 매개 변수 예제
   name="Input2";
   double par2,par2_start,par2_step,par2_stop;
   ParameterGetRange(name,enable,par2,par2_start,par2_step,par2_stop);
   Print("두번째 매개변수");
   PrintFormat("%s=%G  enable=%s  from %G to %G with step=%G",
               name,par2,(string)enable,par2_start,par2_stop,par2_step);
 
//--- example for bool type input parameter
   name="Input3";
   long par3,par3_start,par3_step,par3_stop;
   ParameterGetRange(name,enable,par3,par3_start,par3_step,par3_stop);
   Print("세번째 매개변수");
   PrintFormat("%s=%s  enable=%s  from %s to %s",
               name,(string)par3,(string)enable,
               (string)par3_start,(string)par3_stop);
//--- 열거형 입력 매개 변수 예제
   name="Input4";
   long par4,par4_start,par4_step,par4_stop;
   ParameterGetRange(name,enable,par4,par4_start,par4_step,par4_stop);
   Print("네번째 매개변수");
   PrintFormat("%s=%s  enable=%s  from %s to %s",
               name,EnumToString((ENUM_DAY_OF_WEEK)par4),(string)enable,
               EnumToString((ENUM_DAY_OF_WEEK)par4_start),
               EnumToString((ENUM_DAY_OF_WEEK)par4_stop));
  }
//+------------------------------------------------------------------+
//| TesterDeinit function                                            |
//+------------------------------------------------------------------+
void OnTesterDeinit()
  {
//--- 최적화 완료 후 이 메시지가 표시됩니다.
   Print(__FUNCTION__," Optimization completed");
  }