Optimizasyon Algoritmaları Şampiyonası. - sayfa 51

 

İkinci seçenek hakkında net değil, bir tür boş katılımcı komut dosyası örneğine ihtiyacınız var.

FF'yi içe aktardım, ancak üye işlevinde görünmeyecek ve MaxFFruns_P değişkeni görünmeyecek.

 
Dmitry Fedoseev :

İkinci seçenek hakkında net değil, bir tür boş katılımcı komut dosyası örneğine ihtiyacınız var.

FF'yi içe aktardım, ancak üye işlevinde görünmeyecek ve MaxFFruns_P değişkeni görünmeyecek.

Katılımcı algoritmasının bir örneğini mi kastediyorsunuz?

Algoritmaya, pek çok kez FF'yi aramadığını söylediler.

InitAO(paramCount, MaxFFruns_P);

İkinci seçeneğe göre, katılımcının algoritması da FF'yi içe aktarır. FF kitaplığının aynı kopyasının hem komut dosyasında hem de algoritmada kullanıldığını kontrol ettim. Yani algoritma, içe aktarılan işlevleriyle FF'ye ve kendi başına komut dosyasına hitap etti, ancak komut dosyası çağrı sayacını doğru gösterdi.

Andrey Dik :

Şimdi aynı, yerel ve sevilen RNG'de her iki tür FF çağrısının gerçek algoritmalarının örneklerini ekleyeceğim. Sizden özellikle yeni başlayanlar için sevgi ve iyilik rica ediyorum. Anlaşılması kolay, basit bir temel ve aynı zamanda çalışan bir optimizasyon algoritmasını nasıl oluşturabileceğinize dair bir örnek.

 

Andrey Dik :

Katılımcı algoritmasının bir örneğini mi kastediyorsunuz?

Algoritmaya, pek çok kez FF'yi aramadığını söylediler.

InitAO(paramCount, MaxFFruns_P);

İkinci seçeneğe göre, katılımcının algoritması da FF'yi içe aktarır. FF kitaplığının aynı kopyasının hem komut dosyasında hem de algoritmada kullanıldığını kontrol ettim.

Burada da katılımcıya bir şablon göstermek gerekir. Doğrulayıcı komut dosyası gösterilir.

Parametre sayısı hakkında açıktır. Ancak, en azından birkaç kelime olmak üzere talimatlar yazmanız gerekir.

 
Global değişkenleri olan hemoroidleri durdurmak için gerekli olmayacaktır. Fırlatma limiti aşıldığında FF'ye bir uyarı ekleyelim, böylece göğüs göğüse mücadele durdurulabilir. Algoritma, FF'yi kaç kez çağırdığını takip etmelidir.
 
Dmitry Fedoseev :

Burada da katılımcıya bir şablon göstermek gerekir. Doğrulayıcı komut dosyası gösterilir.

Parametre sayısı hakkında açıktır. Ancak, en azından birkaç kelime olmak üzere talimatlar yazmanız gerekir.

Gerekli. Elbette talimatlar olacak.

Ancak her şey çok basit, katılmak için OOP'ye ihtiyacınız yok ve muhtemelen 20 satırlık koddaki katılımcılar yeşillerin şampiyonaya gelip gelmediğini anlayabilecekler.)

 
Andrey Dik :

Gerekli. Elbette talimatlar olacak.

Ancak her şey çok basit, katılmak için OOP'ye ihtiyacınız yok ve muhtemelen 20 satırlık koddaki katılımcılar yeşillerin şampiyonaya gelip gelmediğini anlayabilecekler.)

Belki basit, ama sadece tahmin etmeniz gerekiyorsa, bir şekilde prezentabl değil
 

İlk FF arama seçeneği için katılımcının algoritmasına bir örnek:

 #property library
#property strict

//+------------------------------------------------------------------+
void InitAO ( int paramCount, int maxFFruns) export
{ 
}
//+------------------------------------------------------------------+
//
//+------------------------------------------------------------------+
void ServiceFunc1 () export
{ 
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void ServiceFunc2 () export
{ 
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void ServiceFunc3 () export
{ 
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
int GetReplaysCount () export
{ 
   return ( 1 );
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void GetOptParam ( double &param []) export
{ 
  GenerateParam (param);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void    SendFFvolue ( double volue) export
{ 
   if (volue > maxFFvolue) 
    maxFFvolue = volue;
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
double GetMaxFF () export
{ 
   return (maxFFvolue);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
bool StopAlgo () export
{ 
   return ( false );
}
//+------------------------------------------------------------------+

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Все функции выше этой строки - обязательны! Именно они будут импортированы 
// и использованы тестовым скриптом. Они нужны для доступа к алгоритму оптимизации.
// Содержимое - произвольное, на усмотрение участника
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Ниже этой строки пример алгоритма оптимизации участника
//————————————————————————————————————————————————————————————————————
double maxFFvolue = - DBL_MAX ;
double minParam   = - 10.0 ;
double maxParam   = 10.0 ;
double stepParam  = 0.1 ;
//————————————————————————————————————————————————————————————————————

//————————————————————————————————————————————————————————————————————
// Генерация значений оптимизируемых параметров
void GenerateParam ( double &param[])
{
   int size = ArraySize (param);
   double paramVolue = 0.0 ;
   for ( int i = 0 ; i < size; i++) 
  {
    paramVolue = RNDfromCI (minParam, maxParam);
    param [i] = SeInDiSp (paramVolue, minParam, maxParam, stepParam);
  }
}
//————————————————————————————————————————————————————————————————————

//————————————————————————————————————————————————————————————————————
// Выбор в дискретном пространстве
double SeInDiSp ( double in, double inMin, double inMax, double step) 
{ 
   if (in <= inMin) 
     return (inMin); 
   if (in >= inMax) 
     return (inMax); 
   if (step == 0.0 ) 
     return (in); 
   else 
     return (inMin + step * ( double ) MathRound ((in - inMin) / step));
}
//————————————————————————————————————————————————————————————————————

//————————————————————————————————————————————————————————————————————
// ГСЧ в заданном интервале
double RNDfromCI ( double min, double max) 
{ 
   if (min == max) 
     return (min); 
   double Min, Max; 
   if (min > max) 
  {
    Min = max; 
    Max = min;
  }
   else 
  {
    Min = min; 
    Max = max;
  }
   return ( double (Min + ((Max - Min) * ( double ) MathRand () / 32767.0 )));
}
//————————————————————————————————————————————————————————————————————

Algoritma yürütme sonuçları:

2016.06.22 03:25:25.777 OAC varyantı 1 (GBPUSD,H1) ---------------------------------

2016.06.22 03:25:25.777 OAC varyantı 1 (GBPUSD,H1) Süre: 146 µs; 0.00014600 sn

2016.06.22 03:25:25.777 OAC varyantı 1 (GBPUSD,H1) FF başlar: 1000

2016.06.22 03:25:25.777 OAC varyantı 1 (GBPUSD,H1) Maks: 3.14159260

2016.06.22 03:25:21.874 OAC varyantı 1 (GBPUSD,H1) ---------------------------------

2016.06.22 03:25:21.874 OAC varyantı 1 (GBPUSD,H1) Süre: 148 µs; 0.00014800 sn

2016.06.22 03:25:21.874 OAC varyantı 1 (GBPUSD,H1) FF başlar: 1000

2016.06.22 03:25:21.874 OAC varyantı 1 (GBPUSD,H1) Maks: 3.10159260

2016.06.22 03:20:32.249 OAC varyantı 1 (GBPUSD,H1) ---------------------------------

2016.06.22 03:20:32.249 OAC varyantı 1 (GBPUSD,H1) Süre: 149 µs; 0.00014900 sn

2016.06.22 03:20:32.249 OAC varyantı 1 (GBPUSD,H1) FF başlar: 1000

2016.06.22 03:20:32.249 OAC varyantı 1 (GBPUSD,H1) Maks: 3.06159260

2016.06.22 03:20:26.626 OAC varyantı 1 (GBPUSD,H1) ---------------------------------

2016.06.22 03:20:26.626 OAC varyantı 1 (GBPUSD,H1) Süre: 153 µs; 0.00015300 sn

2016.06.22 03:20:26.626 OAC varyantı 1 (GBPUSD,H1) FF başlar: 1000

2016.06.22 03:20:26.626 OAC varyantı 1 (GBPUSD,H1) Maks: 3.09159260

2016.06.22 03:20:19.071 OAC varyantı 1 (GBPUSD,H1) ---------------------------------

2016.06.22 03:20:19.071 OAC varyantı 1 (GBPUSD,H1) Süre: 154 µs; 0.00015400 sn

2016.06.22 03:20:19.071 OAC varyantı 1 (GBPUSD,H1) FF başlar: 1000

2016.06.22 03:20:19.071 OAC varyantı 1 (GBPUSD,H1) Maks: 3.14159260

2016.06.22 03:20:13.407 OAC varyantı 1 (GBPUSD,H1) ---------------------------------

2016.06.22 03:20:13.407 OAC varyantı 1 (GBPUSD,H1) Süre: 152 µs; 0.00015200 sn

2016.06.22 03:20:13.407 OAC varyantı 1 (GBPUSD,H1) FF başlar: 1000

2016.06.22 03:20:13.407 OAC varyantı 1 (GBPUSD,H1) Maks: 2.64159260

Bir RNG algoritması için fena değil! Değil mi?

 

Başka ne açıklanacak - bilmiyorum. Her şey net gibi görünüyor, fonksiyonlar kısa, söz verildiği gibi OOP yok. Yorumlar mevcut.

Ve ayrıca, Morpheus üstesinden gelmezse, FF çağırmanın ikinci varyantı için bir örnek.

 
Andrey Dik :

Başka ne açıklanacak - bilmiyorum. Her şey net gibi görünüyor, fonksiyonlar kısa, söz verildiği gibi OOP yok. Yorumlar mevcut.

Ve ayrıca, Morpheus üstesinden gelmezse, FF çağırmanın ikinci varyantı için bir örnek.

Ben de böyle yazabilirim - sorumda net olmayan ne var?

 
Neden bir soru 10 kere sorulmalı?