#property description "Expert Advisor for ParameterGetRange() function demonstration." #property description "Should be launched in the optimization mode of the Strategy Tester" //--- 入力パラメータ input int Input1=1; input double Input2=2.0; input bool Input3=false; input ENUM_DAY_OF_WEEK Input4=SUNDAY; //+------------------------------------------------------------------+ //| エキスパート初期化に使用される関数 | //+------------------------------------------------------------------+ int OnInit() { //--- エキスパートアドバイザーはストラテジーテスター内のみで動作するように設計されている if(!MQL5InfoInteger(MQL5_OPTIMIZATION)) { MessageBox("Should be launched in the optimization mode of the Strategy Tester!"); //--- 事前にエキスパートアドバイザー操作を終了してチャートから削除する return(INIT_FAILED); } //--- 初期化が正常に完了した return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| TesterInit 関数 | //+------------------------------------------------------------------+ 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("First parameter"); 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("Second parameter"); PrintFormat("%s=%G enable=%s from %G to %G with step=%G", パブリック name,par2,(string)enable,par2_start,par2_stop,par2_step); //--- bool 型入力パラメータの例 name="Input3"; long par3,par3_start,par3_step,par3_stop; ParameterGetRange(name,enable,par3,par3_start,par3_step,par3_stop); Print("Third parameter"); 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("Fourth parameter"); 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 関数 | //+------------------------------------------------------------------+ void OnTesterDeinit() { //--- このメッセージは最適化が完了した後に表示されます Print(__FUNCTION__," Optimization completed"); } |