//+------------------------------------------------------------------+//| заголовок кеша |//+------------------------------------------------------------------+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 - hedgingint 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_XXXint digits; // количество знаков после запятойint offset; // смещение в буфере параметровint size; // размер значения параметра в буфере//--- 0-start,1-step,2-stopunion { INT64 integers[ 3 ]; double numbers[ 3 ]; };
};
//--- кешируемая запись содержит номер прохода (при генетике - номер по порядку), структуру результатов тестирования (если математика, то 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; // максимальная просадка по equitydouble 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/inoutint 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; // среднее количество последовательных убыточных сделок
};
녹음에 더 관심이 많다. 형식을 알면 읽겠습니다.
추신. 형식이 변경될 수 있습니다. 이 형식은 버전 514에 해당합니다.
정말 감사합니다! 작업이 준비되면 opt로 게시하겠습니다.
위협 전문가 경로 길이는 64자에 불과합니다.아니다
그렇다면 그러한 상황에서 어떻게 행동해야 할까요?
소스에 까다로운 조건이 있습니다. 최적성은 탐색을 통해서만 계산할 수 있습니다. 변경하고 백테스트 후 파일에서 결과를 확인합니다.
조건이 다른 많은 파일을 가져와야 합니다. 그리고 비교해보세요.
소스가 변경된 경우 다른 파일 이름을 생성하는 방법은 무엇입니까?
PS 이거 없으면 어떻게 빠져나갈지 모르겠어
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
오류, 버그, 질문
슬라바 , 2019.04.19 15:11
이와 같은 결과
다음과 같은 방식으로 달성됩니다.
하나를 제외한 모든 에이전트가 비활성화됩니다. 그리고 5750개 옵션의 전체 목록이 시작됩니다. 그런 다음 다른 모든 로컬 에이전트가 켜집니다.
분명히 작업이 고르지 않게 분배되었습니다. 그리고 총 최적화 시간은 가능한 것보다 더 길어질 것입니다.
빌드 2025
도움말에 따르면 GlobalVariableDel() 함수 의 반환 유형은 bool입니다.
그러나 Ctrl+Shift+Space를 누를 때:
그리고 빌드할 때 경고가 발생합니다.
PS 이거 없으면 어떻게 빠져나갈지 모르겠어
ex5 파일의 MD5일까요?
아마도 ex5 파일이 내부에 저장되어있을 것입니다. 16 진수 편집기로보십시오 ...
초안 기사에서 "검토를 위해 제출" 버튼을 찾을 수 없습니다. 말해 주세요.
Artem 감사합니다.