Erros, bugs, perguntas - página 2440

 
fxsaber:

Estou ainda mais interessado na gravação. A leitura serve, se o formato for conhecido.

//+------------------------------------------------------------------+
//| заголовок кеша                                                   |
//+------------------------------------------------------------------+
struct TestCacheHeader
  {
   UINT              version;                // версия кеша
   wchar_t           copyright[64];          // копирайт
   UINT              header_size;            // размер заголовка
   UINT              record_size;            // размер кешируемой записи (TestCacheRecord с буфером параметров)
   //---
   wchar_t           expert_name[64];        // имя эксперта
   wchar_t           expert_path[128];       // имя эксперта с путём от MQL5
   wchar_t           server[64];             // источник истории (торговый сервер)
   wchar_t           symbol[32];             // символ тестирования
   UINT16            period;                 // период чарта
   INT64             date_from;              // дата начала данных в настройках тестирования
   INT64             date_to;                // конечная дата в настройках тестирования
   INT64             date_forward;           // конечная дата соответствующего форварда
   int               opt_mode;               // режим оптимизации (0-полная оптимизация, 1-генетика, 2 или 3-форвард)
   int               ticks_mode;             // режим генерации тиков
   int               last_criterion;         // критерий оптимизации при последнем сеансе
   DWORD             msc_min;                // минимальное время выполнения в миллисекундах
   DWORD             msc_max;                // максимальное время выполнения в миллисекундах
   DWORD             msc_avg;                // среднее время выполнения в миллисекундах
   int               common_reserve[16];
   //---
   wchar_t           group[80];              // имя группы + hedging/netting
   wchar_t           trade_currency[32];     // валюта депозита
   int               trade_deposit;          // начальный депозит
   int               trade_condition;        // режим работы торговли (0-без задержек, -1-произвольная задержка, nnn-количество миллисекунд)
   int               trade_leverage;         // плечо
   int               trade_hedging;          // 1 - netting, 2 - hedging
   int               trade_currency_digits;
   int               trade_reserve[6];
   //---
   char              hash_ex5[16];           // контрольная сумма скомпилированного эксперта
   UINT              parameters_size;        // размер буфера параметров эксперта
   UINT              parameters_total;       // количество параметров
   UINT              opt_params_size;        // размер буфера оптимизируемых параметров эксперта
   UINT              opt_params_total;       // количество оптимизируемых параметров
   UINT              dwords_cnt;             // размер номера прохода большой генетики
   UINT              snapshot_size;          // размер снапшота для тотальной оптимизации и для форварда после тотальной оптимизации
   UINT              passes_total;           // общее количество проходов оптимизации (для генетической оптимизации 0)
   UINT              passes_passed;          // количество пройденных проходов
   // далее следуют выставленные параметры эксперта (в т.ч. строковые) в структуре TestCacheInput
   //--- конец заголовка. далее следуют записи о каждом проходе
  };
//+------------------------------------------------------------------+
//| входные параметры тестирования                                   |
//+------------------------------------------------------------------+
struct TestCacheInput
  {
   wchar_t           name[64];
   int               flag;                    // оптимизируемый параметр
   int               type;                    // тип TYPE_XXX
   int               digits;                  // количество знаков после запятой
   int               offset;                  // смещение в буфере параметров
   int               size;                    // размер значения параметра в буфере
   //--- 0-start,1-step,2-stop
   union { INT64 integers[3]; double numbers[3]; };
  };
   m_header.header_size=sizeof(TestCacheHeader)+m_inputs.Total()*sizeof(TestCacheInput)+m_header.parameters_size;
//--- кешируемая запись содержит номер прохода (при генетике - номер по порядку), структуру результатов тестирования (если математика, то 1 double), буфер оптимизируемых параметров и генетический проход
   m_header.record_size=sizeof(INT64)+m_header.opt_params_size;
   if(m_mathematics)
      m_header.record_size+=sizeof(double);
   else
      m_header.record_size+=sizeof(ExpTradeSummary);
   if(m_header.dwords_cnt>1)
      m_header.record_size+=m_header.dwords_cnt*sizeof(DWORD);
   else
     {
      if(m_genetics)
         m_header.record_size+=sizeof(INT64);
     }
//+------------------------------------------------------------------+
//| Структура для статистики торговли                                |
//+------------------------------------------------------------------+
struct ExpTradeSummary
  {
   double            initial_deposit;     // начальный депозит
   double            withdrawal;          // снято средств
   double            profit;              // общая прибыль (+)
   double            grossprofit;         // общий плюс
   double            grossloss;           // общий минус
   double            maxprofit;           // максимально прибыльная сделка
   double            minprofit;           // максимально убыточная сделка
   double            conprofitmax;        // прибыль максимальной последовательности прибыльных сделок
   double            maxconprofit;        // максимальная прибыль среди последовательностей
   double            conlossmax;          // убыток максимальной последовательности убыточных сделок
   double            maxconloss;          // максимальный убыток среди последовательностей
   double            balance_min;         // минимальное значение баланса (для расчёта абсолютной просадки)
   double            maxdrawdown;         // максимальная просадка по балансу
   double            drawdownpercent;     // отношение максимальной просадки по балансу к её пику
   double            reldrawdown;         // максимальная относительная просадка по балансу в деньгах
   double            reldrawdownpercent;  // максимальная относительная просадка по балансу в процентах
   double            equity_min;          // минимальное значение equity (для расчёта абсолютной просадки по equity)
   double            maxdrawdown_e;       // максимальная просадка по equity
   double            drawdownpercent_e;   // отношение максимальной просадки по equity к её пику (+)
   double            reldrawdown_e;       // максимальная относительная просадка по equity в деньгах
   double            reldrawdownpercnt_e; // максимальная относительная просадка по equity в процентах
   double            expected_payoff;     // матожидание выигрыша (+)
   double            profit_factor;       // показатель прибыльности (+)
   double            recovery_factor;     // фактор восстановления (+)
   double            sharpe_ratio;        // коэффициент Шарпа (+)
   double            margin_level;        // минимальный уровень маржи
   double            custom_fitness;      // пользовательский фитнесс - результат OnTester (+)
   int               deals;               // общее количество сделок
   int               trades;              // количество сделок out/inout
   int               profittrades;        // количество прибыльных
   int               losstrades;          // количество убыточных
   int               shorttrades;         // количество шортов
   int               longtrades;          // количество лонгов
   int               winshorttrades;      // количество прибыльных шортов
   int               winlongtrades;       // количество прибыльных лонгов
   int               conprofitmax_trades; // максимальная последовательность прибыльных сделок
   int               maxconprofit_trades; // последовательность максимальной прибыли
   int               conlossmax_trades;   // максимальная последовательность убыточных сделок
   int               maxconloss_trades;   // последовательность максимального убытка
   int               avgconwinners;       // среднее количество последовательных прибыльных сделок
   int               avgconloosers;       // среднее количество последовательных убыточных сделок
  };
PS. O formato pode mudar. Este formato corresponde à versão 514
 
Slava:
PS. O formato pode mudar. Este formato corresponde à versão 514

Muito obrigado! Publicarei o trabalho de opt quando estiver pronto.

HH Apenas 64 caracteres por comprimento do caminho para o Expert Advisor - não muito poucos?
 
Slava:
Não

Como agir então em tal situação?

Há uma condição complicada na fonte, cuja optimização só pode ser calculada por apalpação - eu mudo-a e após o backtest eu vejo o resultado no ficheiro.

Quero obter muitos ficheiros com condições diferentes. E depois comparar.

Como formar outro nome de ficheiro, se a fonte mudou?


Não sei como sair de tais situações sem ele.

Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais

Insectos, insectos, perguntas

Slava, 2019.04.19 15:11

   char              hash_ex5[16];           // контрольная сумма скомпилированного эксперта
 
Por que razão as mensagens do fórum dos próximos três dias não aparecem na pesquisa do site?
 

Este resultado

é alcançado da seguinte forma.

Todos os agentes, excepto um, estão desactivados. E são executadas 5.750 variações completas. Depois, todos os outros agentes locais são ligados.

Parece que as tarefas estão distribuídas de forma desigual. E o tempo total de optimização será maior do que poderia ser.

 

Construir 2025.

De acordo com a ajuda, a função GlobalVariableDel() tem o tipo de retorno bool

Mas quando se pressiona Ctrl+Shift+Space:

E emite uma mensagem de aviso durante a montagem:


 
Não consigo encontrar o botão "Enviar para verificar" do projecto de artigo. Pode dar-me uma dica?
 
fxsaber:

Não sei como sair de situações como esta

Talvez MD5 do ficheiro ex5?
Talvez guardado dentro do ficheiro ex5, pesquisar com o editor hexadecimal...

 
Yousufkhodja Sultonov:
Não consigo encontrar o botão "Enviar para verificar" do projecto de artigo. Pode dar-me uma dica, por favor?
 
Artyom Trishkin:

Obrigado, Artem.

Razão: