ParameterGetRange

Reçoit pour la variable inputl'information sur la gamme des valeurs et sur le pas du changement à l'optimisation de l'expert dans le testeur des stratégies.  Il y a 2 variantes de la fonction.

1. La réception de l'information pour le paramètre input du type entier

bool  ParameterGetRange(
   const string  name,          // le nom du paramètre (de la variable input)
   bool&         enable,        // l'optimisation du paramètre est autorisée
   long&         value,         // la valeur du paramètre
   long&         start,         //la valeur initiale
   long&         step,          // le pas du changement
   long&         stop           // la valeur finale
   );

2. La réception de l'information pour le paramètre input du type matériel

bool  ParameterGetRange(
   const string  name,          // le nom du paramètre (de la variable input)
   bool&         enable,        // l'optimisation du paramètre est autorisée
   double&       value,         // la valeur du paramètre
   double&       start,         // la valeur initiale
   double&       step,          // le pas du changement
   double&       stop           // la valeur finale
   );

Paramètres

name

[in]  L'identificateur de la variable input. Telles variables sont les paramètres extérieurs du programme, dont les valeurs on peut spécifier au lancement sur le graphique ou au test séparé.

enable

[out] Le signe de ce qu'on peut utiliser ce paramètre pour le balayge des valeurs en train de l'optimisation dans le testeur des stratégies.

value

[out] La valeur du paramètre.

start

[out] La valeur initiale du paramètre à l'optimisation.

step

[out]  Le pas du changement du paramètre au balayage de ses valeurs.

stop

[out] La valeur finale du paramètre à l'optimisation.

La valeur rendue

Rend true en cas de l'exécution réussie, autrement - false. Pour recevoir l'information sur l'erreur, utilisez la fonction GetLastError().

Note

La fonction peut être appelée seulement à partir de gestionnairesOnTesterInit(), OnTesterPass() etOnTesterDeinit(). Est destinée à la réception de la valeur et de la gamme du changement des paramètres d'entrée de l'expert en train de l'optimisation dans le testeur des stratégies.

A l'appel dans OnTesterInit() on peut utiliser l'information reçue pour la redéfinition de la règle du balayage de chaquevariable input à l'aide de la fonctionParameterSetRange(). Ainsi spécifier les nouvelles valeurs Start, Stop, Step et même exclure entièrement ce paramètre de l'optimisation malgré les réglages dans le testeur des stratégies. Cela permet de créer les scripts personnels pour la gestion de l'espace des paramètres d'entrée à l'optimisation, c'est-à-dire exclure de l'optimisation des paramètres en fonction des valeurs des paramètres clés de l'expert.

Exemple:

#property description "L'expert pour la démonstration de la fonction ParameterGetRange()."
#property description "Il est nécessaire de lancer dans le testeur des stratégies en mode de l'optimisation"
//--- input parameters
input int                 Input1=1;
input double              Input2=2.0;
input bool                Input3=false;
input ENUM_DAY_OF_WEEK    Input4=SUNDAY;
 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- l'expert est destiné seulement au travail dans le testeur des stratégies
   if(!MQL5InfoInteger(MQL5_OPTIMIZATION))
     {
      MessageBox("Il est nécessaire de lancer dans le testeur des stratégies en mode de l'optimisation!");
      //---terminons le travail de l'expert avant terme et retirons du graphique
      return(INIT_FAILED);
     }
//---l'achèvement réussi de l'initialisation
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| TesterInit function                                              |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
//--- l'exemple pour le paramètre input du type 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("Le premier paramètre");
   PrintFormat("%s=%d  enable=%s  from %d to %d with step=%d",
               name,par1,(string)enable,par1_start,par1_stop,par1_step);
//--- l'exemple pour le paramètre input du type double
   name="Input2";
   double par2,par2_start,par2_step,par2_stop;
   ParameterGetRange(name,enable,par2,par2_start,par2_step,par2_stop);
   Print("Le deuxième paramètre le paramètre");
   PrintFormat("%s=%G  enable=%s  from %G to %G with step=%G",
               name,par2,(string)enable,par2_start,par2_stop,par2_step);
 
//--- l'exemple pour le paramètre input du type bool
   name="Input3";
   long par3,par3_start,par3_step,par3_stop;
   ParameterGetRange(name,enable,par3,par3_start,par3_step,par3_stop);
   Print("Le troisième paramètre");
   PrintFormat("%s=%s  enable=%s  from %s to %s",
               name,(string)par3,(string)enable,
               (string)par3_start,(string)par3_stop);
//--- l'exemple pour le paramètre input du type l'énumération 
   name="Input4";
   long par4,par4_start,par4_step,par4_stop;
   ParameterGetRange(name,enable,par4,par4_start,par4_step,par4_stop);
   Print("Le quatrième paramètre");
   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()
  {
//--- ce message sortira à la fin de l'optimisation
   Print(__FUNCTION__," Optimisation completed");
  }