Библиотека пошаговой форвард-оптимизации для МетаТрейдер 4: Функции

15 августа 2016, 19:41
Stanislav Korotky
0
38

Это часть документации библиотеки WalkForwardOptimizer для МетаТрейдер 4 - оглавление.

Функции

void wfo_setEstimationMethod(WFO_ESTIMATION_METHOD estimation, string formula)

выбирает метод оценки эффективности советника (возвращается из OnTester для оптимизации); доступные варианты: wfo_built_in_loose (по молчанию) и wfo_built_in_strict - комплексные индикаторы, составленные из коэффициента Шарпа, фактора прибыли, размера прибыли и количества сделок, wfo_profit - прибыль, wfo_sharpe - Шарп, wfo_pf - фактор прибыли, wfo_drawdown - инвертированная относительная просадка  (100 - DD), рассчитываемая на кривой баланса,wfo_profit_by_drawdown - прибыль, деленная на относительную просадку, wfo_profit_trades_by_drawdown - прибыль умноженная на количество сделок и деленная на относительную просадку, wfo_average - средняя прибыль сделки, wfo_expression - пользовательская формула показателя, задается в formula; функция опциональная, должна вызываться в OnInit;

void wfo_setHeader(string s)

задает строку, которая выводится в результирующий CSV-файл в качестве концовки заголовка над рабочими параметрами советника; по уолчанию - "Payload"; функция опциональная, должна вызываться в OnInit;

void wfo_setPFmax(double max)

задает максимальный фактор прибыли для случаев, когда проигрышные сделки отсутствуют; по умолчанию - DBL_MAX; функция опциональная, должна вызываться в OnInit;

void wfo_setGVAutomaticCleanup(bool b)

устанавливает флаг режима автоматического удаления глобальных переменных с префиксом "WF_" при старте новой оптимизации; по умолчанию - false; может устанавливаться в  true, только если не используется генетический алгоритм; функция опциональная, должна вызываться в OnInit;

int wfo_OnInit(WFO_TIME_PERIOD optimizeOn, WFO_TIME_PERIOD optimizeStep, int optimizeStepOffset, int optimizeCustomW, int optimizeCustomS, string optimizeLog)

передает все необходимые данные в библиотеку: размер окна, размер шага, номер шага, пользовательский размер окна в днях, пользовательских размер шага в процентах от окна, имя csv-файла для записи результатов; должна вызываться в OnInit; возвращает 0 в случае успеха или код ошибки, например, INIT_PARAMETERS_INCORRECT, если были переданы неверные параметры;

int wfo_OnTick()

управляет оптимизацией советника внутри окна оптимизации и форвард-теста; должна вызываться в OnTick; возвращает 0, если текущий тик попадает внутрь движущегося окна оптимизации, где советнику разрешено торговать; возвращает -1 или +1, если тик находится вне окна, и торговля должна быть временно отключена; - 1 означает, что окно еще не наступило, а +1 - что окно уже прошло;

double wfo_OnTester(string payload = "")

управляет оптимизацией советника с помощью заданного показателя эффективности; должна вызываться в OnTester; опциональный параметр позволяет передать произвольные параметры советника в виде строки в библиотеку, так что они будут сохранены в csv-файле в колонках, соответствующих заголовкам, установленным с помощью функции wfo_setHeader; возвращает значение показателя для передачи его в тестер;

void wfo_setCloseTradesOnSeparationLine(bool b)

устанавливает флаг режима закрытия всех рыночных ордеров и удаления отложенных в момент пересечения границы между окном оптимизации и форвард-тестом; по умолчанию - false; функция опциональная, должна вызываться в OnInit;

void wfo_setCleanUpTimeout(int seconds); (вер.1.2+)

устанавливает таймаут автоочистки в секундах; когда запускается новая оптимизация и csv-файл с указанным именем уже существует, причем время его модификации старше указанных секунд, файл удаляется; если WF_-глобальные переменные помечены временем, которое больше чем на указанное количество секунд в прошлом, переменные тоже удаляются; по-умолчанию (если функция не вызывалась), таймаут равен 0, и данная возможность отключена; следует ставить значение, которое явно превышает среднее время одного прогона тестера для вашего советника в выбранном режиме (по ценам открытия, по тикам и т.д.). Обычно подходит значение 60 секунд, но при этом функция будет работать только если между последовательными оптимизациями прошло более 1 минуты. Функцию следует вызывать из обработчика OnInit.

Поделитесь с друзьями: