Скачать MetaTrader 5

Результаты оптимизации отличаются от одиночных тестирований по ним - страница 6

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Candid
1630
Candid  

Смотрю тут вопрос о спреде при тестировании в который раз затрагивается. Я вот недавно вроде пришёл к системе, выглядящей более или менее серьёзно (с точки зрения реальной торговли) и, соответственно, требующей тщательного тестирования. И тоже озаботился этим вопросом. В результате написал простой скрипт, устанавливающий нужный спред для оффлайнового тестирования.

Принцип известный, в файле symbols.sel переписывается Ask. То есть нужно в оффлайновом терминале скопировать его из папки истории в папку experts/files, запустить скрипт, потом закрыть терминал, скопировать symbols.sel обратно и снова запустить терминал.

P.S. Заменил скрипт, мелкая описка была, если кто вдруг успел взять SetSpread а не SetSpread_1, нужно повторно скачать.

Файлы:
Basil Pushkarev
138
Basil Pushkarev  
Та же самая проблема. При оптимизации одни результаты, при одиночных прогонах-перепроверках - кардинально другие. Спасибо Mathemat подсказал куда копать.

Mathemat:
С объектами надо быть поосторожнее при тестировании. Лучше их вообще не использовать.

Поделюсь что было и как разрешилось, может кому-то пригодиться. Вообщем, написал свой индикатор, используя трендовые линии. Для советника индикатор передавал в глобальную переменную терминала номер пробитой трендовой линии. Вот таким образом:

GlobalVariableSet("GV_name", number);

а в советнике принимал значение

int dc = GlobalVariableGet("GV_name");

В визуализаторе и одиночных тестах все было нормально. Т.е. я решил сэкономить на объявлении "лишней" переменной, чтоб код поменьше был. После того как подправил код следующим образом, все стало работать с ОДИНАКОВЫМИ результатами и при оптимазации и при одиночных прогонах.

string GlobVar = "GV_name";  // объявил переменную в индикаторе на глобальном уровне программы

int start(){
  GlobalVariableSet(GlobVar, number);
}
string GlobVar;  // объявил переменную в советнике на глобальном уровне программы
int dc;

int start(){
  dc = GlobalVariableGet(GlobVar);
}

Т.о. обявление глобальных переменных в индикаторе и в советнике заставило все заработать правильно.

123456
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий