최적화 알고리즘 챔피언십. - 페이지 51

 

두 번째 옵션에 대해서는 명확하지 않습니다. 참가자 스크립트의 예가 필요하며 일부는 비어 있습니다.

FF를 가져 왔지만 멤버 함수에 표시되지 않고 MaxFFruns_P 변수가 표시되지 않습니다.

 
Dmitry Fedoseev :

두 번째 옵션에 대해서는 명확하지 않습니다. 일종의 공백인 참가자 스크립트의 예가 필요합니다.

FF를 가져왔지만 멤버 함수에 표시되지 않고 MaxFFruns_P 변수가 표시되지 않습니다.

참가자 알고리즘의 예를 의미합니까?

글쎄, 그들은 알고리즘에 FF를 호출하는 횟수가 많지 않다고 말했습니다.

InitAO(paramCount, MaxFFruns_P);

두 번째 옵션에 따르면 참가자의 알고리즘도 FF를 가져옵니다. FF 라이브러리의 동일한 복사본이 스크립트와 알고리즘 모두에서 사용되는 것을 확인했습니다. 즉, 알고리즘은 가져온 함수 로 FF를 처리하고 스크립트 자체로 스크립트를 처리했지만 스크립트는 호출 카운터를 올바르게 표시했습니다.

안드레이 딕 :

이제 동일한 기본 및 사랑받는 RNG에서 두 가지 유형의 FF 호출에 대한 실제 알고리즘의 예를 추가하겠습니다. 특히 초보자 분들에게 많은 사랑 부탁드립니다. 그것들은 이해하기 쉽고, 기본적으로 간단하고 동시에 작동하는 최적화 알고리즘을 구축하는 방법의 예입니다.

 

Andrey Dik :

참가자 알고리즘의 예를 의미합니까?

글쎄, 그들은 알고리즘에 FF를 호출하는 횟수가 많지 않다고 말했습니다.

InitAO(paramCount, MaxFFruns_P);

두 번째 옵션에 따르면 참가자의 알고리즘도 FF를 가져옵니다. FF 라이브러리의 동일한 복사본이 스크립트와 알고리즘 모두에서 사용되는 것을 확인했습니다.

여기에서도 참가자를 위한 템플릿을 보여줘야 합니다. 검증자 스크립트가 표시됩니다.

매개변수의 수에 대해 명확합니다. 그러나 최소한 몇 단어의 지침을 작성해야합니다.

 
전역 변수 가 있는 치질은 중지할 필요가 없습니다. 발사 제한을 초과했을 때 FF에 경고를 추가하여 백병전을 멈출 수 있도록 합시다. 알고리즘은 FF를 호출한 횟수를 추적해야 합니다.
 
Dmitry Fedoseev :

여기에서도 참가자를 위한 템플릿을 보여줘야 합니다. 검증자 스크립트가 표시됩니다.

매개 변수의 수에 대해 명확합니다. 그러나 최소한 몇 단어의 지침을 작성해야합니다.

필요한. 물론 지침이 있을 것입니다.

그러나 모든 것이 너무 간단하여 참여하는 데 OOP가 필요하지 않으며 참가자는 아마도 20줄의 코드에서 그린이 챔피언십에 오지 않았는지 알아낼 수 있을 것입니다.)

 
Andrey Dik :

필요한. 물론 지시가 있을 것이다.

그러나 모든 것이 너무 간단하여 참여하는 데 OOP가 필요하지 않으며 참가자는 아마도 20줄의 코드에서 그린이 챔피언십에 오지 않았는지 알아낼 수 있을 것입니다.)

간단할 수도 있지만 추측해야 하는 경우에만 어떻게든 표시할 수 없습니다.
 

첫 번째 FF 콜 옵션에 대한 참가자 알고리즘의 예:

 #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 )));
}
//————————————————————————————————————————————————————————————————————

알고리즘 실행 결과:

2016.06.22 03:25:25.777 OAC 변형 1(GBPUSD,H1) ----------------------------------

2016.06.22 03:25:25.777 OAC 변형 1(GBPUSD,H1) 시간: 146 µs; 0.00014600초

2016.06.22 03:25:25.777 OAC 변형 1(GBPUSD,H1) FF 시작: 1000

2016.06.22 03:25:25.777 OAC 변형 1(GBPUSD,H1) 최대: 3.14159260

2016.06.22 03:25:21.874 OAC 변형 1(GBPUSD,H1) ----------------------------------

2016.06.22 03:25:21.874 OAC 변형 1(GBPUSD,H1) 시간: 148μs; 0.00014800초

2016.06.22 03:25:21.874 OAC 변형 1(GBPUSD,H1) FF 시작: 1000

2016.06.22 03:25:21.874 OAC 변형 1(GBPUSD,H1) 최대: 3.10159260

2016.06.22 03:20:32.249 OAC 변형 1(GBPUSD,H1) ----------------------------------

2016.06.22 03:20:32.249 OAC 변형 1(GBPUSD,H1) 시간: 149µs; 0.00014900초

2016.06.22 03:20:32.249 OAC 변형 1(GBPUSD,H1) FF 시작: 1000

2016.06.22 03:20:32.249 OAC 변형 1(GBPUSD,H1) 최대: 3.06159260

2016.06.22 03:20:26.626 OAC 변형 1(GBPUSD,H1) ----------------------------------

2016.06.22 03:20:26.626 OAC 변형 1(GBPUSD,H1) 시간: 153 µs; 0.00015300초

2016.06.22 03:20:26.626 OAC 변형 1(GBPUSD,H1) FF 시작: 1000

2016.06.22 03:20:26.626 OAC 변형 1(GBPUSD,H1) 최대: 3.09159260

2016.06.22 03:20:19.071 OAC 변형 1(GBPUSD,H1) ----------------------------------

2016.06.22 03:20:19.071 OAC 변형 1(GBPUSD,H1) 시간: 154μs; 0.00015400초

2016.06.22 03:20:19.071 OAC 변형 1(GBPUSD,H1) FF 시작: 1000

2016.06.22 03:20:19.071 OAC 변형 1(GBPUSD,H1) 최대: 3.14159260

2016.06.22 03:20:13.407 OAC 변형 1(GBPUSD,H1) ----------------------------------

2016.06.22 03:20:13.407 OAC 변형 1(GBPUSD,H1) 시간: 152 µs; 0.00015200초

2016.06.22 03:20:13.407 OAC 변형 1(GBPUSD,H1) FF 시작: 1000

2016.06.22 03:20:13.407 OAC 변형 1(GBPUSD,H1) 최대: 2.64159260

RNG 알고리즘에는 나쁘지 않습니다! 안 그래?

 

그 밖에 설명할 사항 - 모르겠습니다. 모든 것이 명확하고 기능이 짧고 약속대로 OOP가 없습니다. 댓글이 있습니다.

그리고 추가로 FF를 호출하는 두 번째 변형의 예입니다. Morpheus가 극복하지 못하면 그는 할 것입니다.

 
Andrey Dik :

또 무엇을 설명할 것인가 - 모르겠다. 모든 것이 명확하고 기능이 짧고 약속대로 OOP가 없습니다. 댓글이 있습니다.

그리고 추가로 FF를 호출하는 두 번째 변형의 예입니다. Morpheus가 극복하지 못하면 그는 할 것입니다.

글쎄, 나도 이렇게 쓸 수 있다 - 내 질문에서 명확하지 않은 것은 무엇인가?

 
하나의 질문에 10번을 물어야 하는 이유는 무엇입니까?