MetaTrader 5 Strategy Tester! - страница 76

 
Andrey Dik:

Не вопрос.

Только вижу, что Вы меня за идиота считаете, а зря. 

Я буду только рад, если своими руками и глазами разберётесь, что нет обмана.

Все гораздо хуже для вас. Особенно, зная предысторию вопроса и некоторых людей.
 
Renat Fatkhullin:

Какую фразу вы зашифровали?

"QbgpsGPELKivNySHxdBjAJKudnJtvQDXtBlfKQBuUjFyovbSejUiPaByUjmMWHEGIHRqDCHbMDPdnRRcEMuXzCoBvifSQAdcbopwGBiDbECxbrzJLZTkOYdWdEmUhnelievPauljpmAmvbUnDuBVPvejBBBTbmqLatRbuPgjUMNSQXBVviWULZjslNLgFKfINJFGzOOusXnBDeCpthgOmlTEUPxQyrUOTKhtySNODxsqEtLjPvxceGodZRqWqspsEUQXeaNPeEQJNmaVOoMzYGjfONlPPTEpUtqPbigcrPlpCBxUKLFnHgAENIzDExGCcBoKdkTKXQgorapGkuGPrzPWjsSjThwffRjOYxFyQCWZhytILMltScNKgSuZUVlgRdWyaLFLGEwHVHJiuqOgxblyTshFTLPOpJQFZKNpPmSPghRsKxZyYIjxzoxyCWEqRpylkGHLccmQoGGdqHyLkfNVrMHViujGBpBpzFWASkeuvHXINEnVyAKIzCRabWrELmTEknYoWHNFDkteLimAJVvgrlgMvnwkCTthjHMPPxZNmqFulCkmHSxqaAXRHfYetIpvQmQPkBxDcVXlCzqLmqzQUpIWBgfTuNmIYbyhKqJBcrVmkDJRuNsNIOYXUVHPaclvEVgqDGeZrYemBXMQBBaTMlBHfCZJUfIGCmOQsrzHcEmdcermCYDyqkQEcBnUzkrypSGMwGgXoUoIgfmatuMYTxnKeqiWcqxcQaxNtPDOkgMAsRdRBcXQHvIMHTDrBHFlCvngcvpnXWoLFPSnvGLbEmJNFcwMhbllYogKDmltLUNwymaJenKnYOVhviXqYFkEFkoTQlFxJEeWUFRoBeLLrdQICasUmgOiWoGgxZegCZVAaBCGmhkhYtmqWqGPBGFJBcHcWWmSCFwDmrkCPxnWvJxbDoNYFNKhtzanuEawUpeEPgpmLZGZaFezWCZwExZWfDbBrLlaTyrGGfLMehhrqbImcjiPOQPKmgIF";

За код отдельное спасибо - написан в чистом виде вредительски и с четкой позицией не дать никакой информации.
Это случайно генерированная фраза с буквами из алфавита, что бы обеспечит возможность 100% -ной рашифровки по просьбе FxSaber.
 
Andrey Dik:
Это случайно генерированная фраза с буквами из алфавита, что бы обеспечит возможность 100% -ной рашифровки по просьбе FxSaber.

Знаю, что рандом. Какая целевая строка?

Или вы это не понимаете? Вы куда фитнес вести собираетесь?

 
Renat Fatkhullin:
Все гораздо хуже для вас. Особенно, зная предысторию вопроса и некоторых людей.
Я уверен, что Вы человек чести и доведете эти вопросы до конца, не баньте меня по крайней мере до завершения тестов с Вашей ФФ.
 
Renat Fatkhullin:

Знаю, что рандом. Какая целевая строка?

Или вы это не понимаете? Вы куда фитнес вести собираетесь?

Фитнес - это количество совпавших букв. ФФ возвращает количество совпавших букв.

Алгоритм (или Ваш тестовый советник) отправляет массив с с порядковыми номерами из алфавита в ФФ, ФФ смотрит, сколько совпало букв и возвращает количество совпадений. В это и трудность этой задачи - известно количество совпадений но не известно места совпадений. 

 
Andrey Dik:
Фитнес - это количество совпавших букв.

Совпавших с чем?

Код, написанный вами - полный треш. Код вы упорно не представляли даже сейчас. Целевую строку вы типа не додумываетесь сообщить.

Ну должен же доблестный исследователь сам все перекопать в неких комментах в форуме и найти таки ту искомую строку?

Или все-таки автор реально почувствовал слив и теперь тянет время и не хочет открыто провести тесты?

 
Andrey Dik:

Алгоритм (или Ваш тестовый советник) отправляет массив с с порядковыми номерами из алфавита в ФФ, ФФ смотрит, сколько совпало букв и возвращает количество совпадений. В это и трудность этой задачи - известно количество совпадений но не известно места совпадений. 

Дайте целевую расшифрованную строку и не пытайтесь навертеть лишнего на столь простую задачу.

 
Renat Fatkhullin:

Дайте целевую расшифрованную строку и не пытайтесь навертеть лишнего на столь простую задачу.

zя же дал код ФФ несколько минут назад:

#property library
#property strict
//#include <Graphics/Graphic.mqh>

int    countRuns    = 0;
string Key      = "A;a;B;b;C;c;D;d;E;e;F;f;G;g;H;h;I;i;J;j;K;k;L;l;M;m;N;n;O;o;P;p;Q;q;R;r;S;s;T;t;U;u;V;v;W;w;X;x;Y;y;Z;z";
string KeyArray [];
int    KeyLen   = 0;
string Text     = "SptstmLEjXhdESqotbRQbmsYKkJTZiOHBEenIbGqLHwxqfWTok";
int    TextLen  = 0;

//+------------------------------------------------------------------+
int GetParamCount () export
{
  TextLen = StringLen (Text);
  KeyLen  = StringSplit (Key, StringGetCharacter (";", 0), KeyArray);
  return (TextLen);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void GetParamProperties (double &min, double &max, double &step) export
{
  min = 0.0;
  max = KeyLen - 1;
  step = 1.0;
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
double FF (double &param []) export
{
  countRuns++;
  
  int sizeArray = ArraySize (param);
  if(sizeArray != TextLen)
    return (0.0);
  
  int ffVolue = 0;
  
  for(int i = 0; i < TextLen; i++)
  {
    if(GetCode (param [i]) == StringSubstr (Text, i, 1))
      ffVolue++;
  }
  
  // сохранение результатов
  if(CompareBests (ffVolue))
    SaveResults (BestResults, ffVolue);
  SaveResults (AllResults, ffVolue);
  
  return (double(ffVolue));
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
int GetCountRunsFF () export
{
  return (countRuns);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void SaveResultsToFiles () export
{
  string str = "";
  int handle = FileOpen ("AllResults.csv", FILE_WRITE | FILE_CSV | FILE_ANSI, ";");
  
  if(handle != INVALID_HANDLE)
  {
    for(int i = 0; i < ArraySize (AllResults); i++)
      str += (string)AllResults [i] + ";" + "\n";
    
    FileWriteString (handle, str, -1);
    FileClose (handle);
  }
  else
  {
    Print ("Ошибка записи в файл AllResults.csv");
  }
  
  str = "";
  handle = FileOpen ("BestResults.csv", FILE_WRITE | FILE_CSV | FILE_ANSI, ";");
  
  if(handle != INVALID_HANDLE)
  {
    for(int i = 0; i < ArraySize (BestResults); i++)
      str += (string)BestResults [i] + ";" + "\n";
    
    FileWriteString (handle, str, -1);
    FileClose (handle);
  }
  else
  {
    Print ("Ошибка записи в файл BestResults.csv");
  }
  
  //ResourceSave(GraphPlot(AllResults, CURVE_LINES), "AllResults.bmp");
  //ResourceSave(GraphPlot(BestResults,CURVE_LINES), "BestResults.bmp");
}
//+------------------------------------------------------------------+

double AllResults  [];        // все результаты ФФ
double BestResults [];        // лучшие результаты ФФ
double BestResult = -DBL_MAX; //последний лучший результат

//+------------------------------------------------------------------+
bool CompareBests (double Res)
{
  if(Res > BestResult)
  {
    BestResult = Res;
    return (true);
  }
  
  return (false);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void SaveResults (double &SavedResults [], double Res)
{
  const int size = ArraySize (SavedResults);
  ArrayResize (SavedResults, size + 1, 10000);
  SavedResults [size] = Res;
  return;
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
string GetCode (double param)
{
  int p = (int)MathRound (param);
  if(p < 0)
    p = 0;
  if(p > KeyLen - 1)
    p = KeyLen - 1;
  
  return (KeyArray [p]);
}
//+------------------------------------------------------------------+

 

 

ключ

string Key      = "A;a;B;b;C;c;D;d;E;e;F;f;G;g;H;h;I;i;J;j;K;k;L;l;M;m;N;n;O;o;P;p;Q;q;R;r;S;s;T;t;U;u;V;v;W;w;X;x;Y;y;Z;z" 

 

Забудьте вы о своем коде и своей библиотеке. Она никому не нужна.  Ключ ваш тоже не нужен. Ваш код вообще отключен от обсуждения.

Дайте целевую расшифрованную строку. А уж исходник метода ее нахождения я вам тут опубликую без игрищ в десятки страниц.

Сейчас выясняется, что вы не только фитнес заведомо нерабочий представили, так еще и целевую строку прячете.