Исследуем MFE
В 7 номере журнала «Современный трейдинг» за 2001 год опубликована статья Тома Хартла (Tom Hartle) «Нацеленный трейдинг». В этой статье описана элегантная методика улучшения результатов торговой системы с помощью техники MFE (Maximum Favorable Excursion). Не буду вдаваться в подробности этой техники и полученных результатов, т.к. с ними можно познакомиться на страницах журнала.
Однако меня заинтересовала возможность частичной автоматизации процесса расчета MFE в торговых системах Омеги и вывод желаемых данных в том виде, как описано в статье. С этой целью я закодировал функцию Easy Language, которая производит расчет MFE и прибыли в процентах по каждой сделке торговой системы и выводит результаты в файл CSV, который затем можно удобно анализировать в Экселе.
$MFE_Report (функция)
{***************************************
Written by: Konstantin
Kopyrkin (aka konkop) 29.08.2001
Description: This function calculate and output strategy
percentage Profits and MFE trade by trade.
Copyright(c) konkop, 2001
****************************************}
Vars: Trades(0), Pprofit(0),
HHigh(H),LLow(L), MFE(0);
Trades = TotalTrades;
If Trades<>Trades[1] Then
begin
If
MarketPosition(1) = 1 Then begin
Pprofit
= (ExitPrice(1) - EntryPrice(1))/EntryPrice(1)*100;
HHigh
= Highest(High,BarssinceEntry(1));
If
HHigh >= EntryPrice(1) Then MFE = (HHigh-EntryPrice(1))/EntryPrice(1)*100
else MFE = 0;
End;
If
MarketPosition(1) = -1 Then Begin
Pprofit
= (EntryPrice(1) - ExitPrice(1))/EntryPrice(1)*100;
LLow
= Lowest(Low,BarssinceEntry(1));
If
LLow <= EntryPrice(1) Then MFE = (EntryPrice(1)-LLow)/EntryPrice(1)*100 else
MFE = 0;
End;
End;
$MFE_report = 1;
If BarNumber=1 Then
Print(File("C:\MFE_report.csv"),"Symbol",",","Strategy",",","Date",",","Time",",",
"Trades",",","MP",",","Profit(%)",",","MFE(%)");
If Trades<>Trades[1] then
Print(File("C:\MFE_report.csv"),GetSymbolName+","+GetStrategyName+","+ELDateToString(Date)+","+
NumToStr(ExitTime(1),0)+","+NumToStr(Trades,0)+","+NumToStr(MarketPosition(1),0)+","+NumToStr(Pprofit,2)+","+NumToStr(MFE,2));
{***************************************}
Функция считает прибыль и MFE как по длинным, так и по коротким сделкам. MFE для длинных позиций – разница в процентах между ценой входа
и максимальным High, достигнутым в процессе сделки. MFE для коротких позиций – разница в процентах между ценой
входа и наименьшим Low, возникшим на протяжении сделки.
Если система имеет только длинные или только короткие сделки, соответственно MFE будет посчитан только по ним.
Теперь, если в конце кода стратегии
поместить строчку:
Value10 = $MFE_report;
То после нанесения стратегии на
график, необходимая информация будет выведена в файл C:\MFE_report.csv,
который в экселе будет выглядеть следующим образом:
Следующие действия: Выделяем
столбец «Н», затем меню «Данные» à «Сортировка». Необходимо
указать сортировку всех данных в порядке увеличения MFE.
Теперь достаточно выделить столбцы «G» и «Н» и построить
по ним диаграмму значений.
В результате, наглядно видно, какая
величина MFE (красные столбцы) соответствовала каждой прибыльной или
убыточной сделке (синие столбцы) в порядке возрастания MFE.
Дальнейшая методика работы с полученными данными подробно описана в статье Тома
Хартла.
Я проверял технику частичной
фиксации прибыли в нескольких системах с одним и с двумя уровнями MFE выбранными по описанной схеме. Результаты весьма
положительные. Во-первых, достигается заметное «сглаживание» кривой эквити по
сравнению с базовой системой. Во-вторых, что особенно приятно, значительно
повышается процент прибыльных сделок.
(с) konkop, 2001.