ParameterGetRange

Bir Uzman Danışmanın sınayıcıdaki optimizasyonu sırasında girdi değişkeni için, veri aralığı ve değişim birimi hakkında bilgi alır. Fonksiyonun iki çeşidi vardır.

1. Tamsayı tipli giriş parametresi için veri alır

bool  ParameterGetRange(
   const string  name,          // parametre (girdi değişkeni) ismi
   bool&         enable,        // parametre optimizasyonu devrede
   long&         value,         // parametre değeri
   long&         start,         // başlangıç değeri
   long&         step,          // değişim birimi (adım)
   long&         stop           // son değer
   );

2. Reel tipli giriş parametresi için veri alır

bool  ParameterGetRange(
   const string  name,          // parametre (girdi değişkeni) ismi
   bool&         enable,        // parametre optimizasyonu devrede
   double&       value,         // parametre değeri
   double&       start,         // başlangıç değeri
   double&       step,          // değişim birimi
   double&       stop           // son değer
   );

Parametreler

name

[in] girdi değişkeni tanımlayıcısı. Bu değişkenler bir uygulamanın dışsal parametreleridir. Değerleri, bir çizelge üzerinde çalıştırıldıklarında veya tekil bir sınama sırasında belirlenebilir.

enable

[out]  Bu parametrenin, Strateji Sınama aracındaki optimizasyon sırasında, değerlerin listelenmesi için kullanılabilirliğini belirleyen bayrak.

value

[out]  Parametre değeri.

start

[out]  Parametrenin optimizasyonda kullanılacak başlangıç değeri.

step

[out]  Parametre değerlerinin listelenmesi sırasındaki değişim birimi.

stop

[out]  Parametrenin optimizasyonda kullanılacak son değer.

Dönüş değeri

Başarılı ise 'true' değerine, aksi durumda 'false' değerine dönüş yapar. Hata hakkında bilgi almak için GetLastError() fonksiyonunu kullanın.

Not

Bu fonksiyon sadece OnTesterInit(), OnTesterPass() ve OnTesterDeinit() işleyicilerinden çağrılabilir. Bu, Strateji Sınama Aracında optimizasyon sırasında Uzman Danışmanın giriş parametrelerinin değerlerini ve değişim aralıklarını almak için tasarlanmıştır.

OnTesterInit() içerisinde çağrıldığı zaman, elde edilen veriler, herhangi bir girdi değişkeninin listelenmesi için gereken kuralların yeniden tanımlanması için ParameterSetRange() fonksiyonu ile birlikte kullanılabilir. Böylece, yeni Start, Stop ve Step değerleri ayarlanabilir ve giriş parametresi, Strateji Sınama aracının ayarlarına bakılmaksızın optimizasyon sürecinden çıkarılabilir. Bu, Uzman Danışmanın anahtar parametrelerinin dışındaki bazı parametreleri optimizasyondan dışlayarak, optimizasyon sürecinde giriş parametreleri alanını yönetebilmenizi sağlar.

Örnek:

#property description "ParameterGetRange() fonksiyonunun uygulama örneği için bir Uzman danışman."
#property description "Strateji Sınama aracının optimizasyon modunda çalıştırılmalıdır"
//--- giriş parametreleri
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()
  {
//--- Sadece Strateji Sınama aracında çalıştırılmak üzere tasarlanmış bir Uzman Danışman
   if(!MQL5InfoInteger(MQL5_OPTIMIZATION))
     {
      MessageBox("Strateji Sınama aracının optimizasyon modunda çalıştırılmalıdır!");
      //--- Uzman Danışman işlemini önceden sonlandır ve çizelgeden kaldır
      return(INIT_FAILED);
     }
//--- Başlatma başarıyla tamamlandı
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| TesterInit function                                              |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
//--- long tipi giriş parametresi örneği
   string name="Input1";
   bool enable;
   long par1,par1_start,par1_step,par1_stop;
   ParameterGetRange(name,enable,par1,par1_start,par1_step,par1_stop);
   Print("İlk parametre");
   PrintFormat("%s=%d  enable=%s  den %d to %d'ye, adım=%d",
               name,par1,(string)enable,par1_start,par1_stop,par1_step);
//--- double tipi giriş parametresi örneği
   name="Input2";
   double par2,par2_start,par2_step,par2_stop;
   ParameterGetRange(name,enable,par2,par2_start,par2_step,par2_stop);
   Print("İkinci parametre");
   PrintFormat("%s=%G  enable=%s  from %G den %G'ye, adım=%G",
               name,par2,(string)enable,par2_start,par2_stop,par2_step);
 
//--- bool tipi giriş parametresi örneği
   name="Input3";
   long par3,par3_start,par3_step,par3_stop;
   ParameterGetRange(name,enable,par3,par3_start,par3_step,par3_stop);
   Print("Üçüncü parametre");
   PrintFormat("%s=%s  enable=%s'den %s'ye %s",
               name,(string)par3,(string)enable,
               (string)par3_start,(string)par3_stop);
//--- sayım tipi giriş parametresi örneği
   name="Input4";
   long par4,par4_start,par4_step,par4_stop;
   ParameterGetRange(name,enable,par4,par4_start,par4_step,par4_stop);
   Print("Dördüncü parametre");
   PrintFormat("%s=%s  enable=%s'den %s'ye %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()
  {
//--- bu mesaj optimizasyon tamamlandıktan sonra görüntülenecek
   Print(__FUNCTION__," Optimizasyon tamamlandı");
  }