Forex Форум MT5 | Форум трейдеров рынка Форекс

анализ работы функций

Недавно, общаясь на форуме http://forexsystems.ru/ пришлось проводить небольшой анализ работы советника, точнее влияния включённых функций на его работу. 


Полученные результаты, на мой взгляд, довольно интересные и дают повод для размышлений при проектировании других торговых систем.

Поэтому результаты решил выложить здесь в блоге.
Для начала в советнике установил "средне потолочные" настройки, т.к. в данном случае будем сравнивать влияние некоторых функций на работу системы и её прибыльность.
«Средне потолочные» настройки — это не оптимальные настройки, значения выбирались эмпирическим путём, чтобы исключить вероятность подгонки результатов.
Базовый результат — первый прогон советника со "средне потолочными" настройками все дополнительные функции ОТКЛЮЧЕНЫ.

1--контрольный прогон...

Символ
GBPUSD (Great Britain Pound vs US Dollar)
Период
30 Минут (M30) 2011.01.03 00:00 - 2011.06.24 22:30 (2011.01.03 - 2011.06.25)
Модель
Все тики (наиболее точный метод на основе всех наименьших доступных таймфреймов)
Параметры
block_01=" блок ОСНОВНЫХ настроек "; SL=380; TP=20; lot=0.05;
muv_poz=true; dubl_muv=false; muv_level=150; zone=11; pips_prof=0; enlarge_lot=5;
block_02=" блок ДОПОЛНИТЕЛЬНЫХ настроек "; mm=false; flet_lev=7; flet_delta=2;


Баров в истории
6960
Смоделировано тиков
8234136
Качество моделирования
90.00%
Ошибки рассогласования графиков
0








Начальный депозит
10000.00








Чистая прибыль
-759.96
Общая прибыль
17326.30
Общий убыток
-18086.26
Прибыльность
0.96
Матожидание выигрыша
-0.59




Абсолютная просадка
1377.24
Максимальная просадка
4888.95 (35.46%)
Относительная просадка
35.46% (4888.95)
Всего сделок
1297
Короткие позиции (% выигравших)
627 (89.31%)
Длинные позиции (% выигравших)
670 (87.31%)

Прибыльные сделки (% от всех)
1145 (88.28%)
Убыточные сделки (% от всех)
152 (11.72%)
Самая большая
прибыльная сделка
62.50
убыточная сделка
-583.89
Средняя
прибыльная сделка
15.13
убыточная сделка
-118.99
Максимальное количество
непрерывных выигрышей (прибыль)
55 (598.93)
непрерывных проигрышей (убыток)
10 (-1242.54)
Максимальная
непрерывная прибыль (число выигрышей)
598.93 (55)
непрерывный убыток (число проигрышей)
-1724.22 (5)
Средний
непрерывный выигрыш
9
непрерывный проигрыш
1


В дальнейшем настройки не менялись, а только подключались функции.

2--теперь включим только "управление капиталом"
Ну тут хотя бы без убытков ....

3--теперь попробуем только "Двойное усреднение"
картинка намного веселее..

4--попробуем включить сразу две функции "Двойное усреднение" и "Управление капиталом"

Символ
GBPUSD (Great Britain Pound vs US Dollar)
Период
30 Минут (M30) 2011.01.03 00:00 - 2011.06.24 22:30 (2011.01.03 - 2011.06.25)
Модель
Все тики (наиболее точный метод на основе всех наименьших доступных таймфреймов)
Параметры
block_01=" блок ОСНОВНЫХ настроек "; SL=380; TP=20; lot=0.05;
muv_poz=true; dubl_muv=true; muv_level=150; zone=11; pips_prof=0; enlarge_lot=5;
block_02=" блок ДОПОЛНИТЕЛЬНЫХ настроек "; mm=true; flet_lev=7; flet_delta=2;
Баров в истории
6960
Смоделировано тиков
8234136
Качество моделирования
90.00%
Ошибки рассогласования графиков
0








Начальный депозит
10000.00








Чистая прибыль
15369.71
Общая прибыль
54881.22
Общий убыток
-39511.51
Прибыльность
1.39
Матожидание выигрыша
11.67




Абсолютная просадка
4634.31
Максимальная просадка
11772.99 (47.65%)
Относительная просадка
49.81% (5325.02)
Всего сделок
1317
Короткие позиции (% выигравших)
640 (88.91%)
Длинные позиции (% выигравших)
677 (87.44%)


Прибыльные сделки (% от всех)
1161 (88.15%)
Убыточные сделки (% от всех)
156 (11.85%)
Самая большая
прибыльная сделка
937.50
убыточная сделка
-1029.45
Средняя
прибыльная сделка
47.27
убыточная сделка
-253.28
Максимальное количество
непрерывных выигрышей (прибыль)
55 (1624.84)
непрерывных проигрышей (убыток)
10 (-3727.62)
Максимальная
непрерывная прибыль (число выигрышей)
1624.84 (55)
непрерывный убыток (число проигрышей)
-3727.62 (10)
Средний
непрерывный выигрыш
8
непрерывный проигрыш
1

КАК БЫ УПРАВЛЕНИЕ КАПИТАЛОМ...

В этом месяце я уже писал о попытке добавить  в советник функцию управления капиталом  "новые функции..." Но мне показалось, что я не  совсем корректно пытаюсь определять  состояние флета.













       Первоначально я учитывал только колличество открытых рыночных ордеров, но мне кажется, что более правильно будет считать все открытые советником ордера.
Поэтому немного изменил блок программы...

extern int flet_lev = 7;             // Минимальное колличество ордеров для определения флета
extern int flet_delta = 2;         // Приращение ордеров до максимума флета
//+------------------------------------------------------------------+
//|     ========================================================     |
//|     ========== ФУНКЦИЯ УПРАВЛЕНИЯ КАПИТАЛОМ ============     |
//|     ========================================================     |
//+------------------------------------------------------------------+                
void mm_lots() {
ml = 0;
for (z=0; z<=OrdersTotal(); z++) {
                if (OrderSelect(z, SELECT_BY_POS, MODE_TRADES)) {
//              if (OrderSymbol()==Symbol() && (OrderType()==OP_SELL || OrderType()==OP_BUY)) ml = ml+1;
                if (OrderSymbol()==Symbol()) ml = ml+1;
                }              }             
if (ml <= flet_lev) lots = lot;   

if (ml > flet_lev && ml < (flet_lev+flet_delta)) lots = lot*2;

if (ml >= (flet_lev+flet_delta)) lots = lot*3;
return(lots);
}
Для кого MQL не родной язык, переведу выше написанное.
В процессе работы советника, пока общее колличество ордеров меньше flet_lev открываются позиции с начально заданным объёмом. Но когда колличество открытых ордеров становится больше значения flet_lev – тогда объём вновь открываемых ордеров увеличивается в двое. Если флет продолжается и колличество открытых ордеров превысит значение flet_lev+ flet_delta тогда новые ордера будут открываться с утроенным объемом.
Когда начнётся движение и начнут срабатывать «стопы» и «тейки» (второе предпочтительнее...) соответственно колличество открытых ордеров уменьшится и новые позиции советник будет открывать с начально заданным объёмом.

            Но это всё теория, а хочется посмотреть как будет вести себя советник в деле, но пока только в тестере стратегий терминала.
            Для сравнения, сделал прогон советника за период  03.01.2011 года по 10.06.2011 года без управления капиталом...

  
Баров в истории
6484
Смоделировано тиков
8114756
Качество моделирования
90.00%
Ошибки рассогласования графиков
0





Начальный депозит
10000.00




Чистая прибыль
3427.64
Общая прибыль
23053.47
Общий убыток
-19625.83
Прибыльность
1.17
Матожидание выигрыша
3.12


Абсолютная просадка
2902.31
Максимальная просадка
5180.52 (42.19%)
Относительная просадка
42.19% (5180.52)

Потом не меняя настроек, только включил функцию управления капиталом, значения для неё взял на основе логических рассуждений и наблюдений... 
extern int flet_lev = 7;            // Минимальное колличество ордеров для определения флета
extern int flet_delta = 3;         // Приращение ордеров до максимума флета

получил следующий результат...
   
Баров в истории
6484
Смоделировано тиков
8114756
Качество моделирования
90.00%
Ошибки рассогласования графиков
0





Начальный депозит
10000.00




Чистая прибыль
13783.92
Общая прибыль
44922.06
Общий убыток
-31138.14
Прибыльность
1.44
Матожидание выигрыша
12.53


Абсолютная просадка
1678.46
Максимальная просадка
7404.88 (28.54%)
Относительная просадка
33.93% (4274.12)

Довольно существенно увеличилась прибыль и что ещё порадовало – уменьшение просадки....

Экспериментируя дальше, решил провести оптимизацию. Для оптимизации выбрал только параметры управления капиталом и запустил в тестере на всём отрезке с 03.01.2011 года по 10.06.2011 года. И вот результаты.


И весьма забавный график результатов.


Естественно попробывал работу советника с оптимальными настройками. 
extern int flet_lev = 5;            // Минимальное колличество ордеров для определения флета
extern int flet_delta = 4;         // Приращение ордеров до максимума флета


Баров в истории
6484
Смоделировано тиков
8114756
Качество моделирования
90.00%
Ошибки рассогласования графиков
0





Начальный депозит
10000.00




Чистая прибыль
17111.93
Общая прибыль
52934.35
Общий убыток
-35822.43
Прибыльность
1.48
Матожидание выигрыша
15.56


Абсолютная просадка
2569.68
Максимальная просадка
8877.86 (29.35%)
Относительная просадка
43.31% (5676.33)

НОВЫЙ ВЗГЛЯД НА СТАРЫЕ ВЕЩИ


Сразу хочу определиться, я НЕ фанат «гридеров» и «мартинов». Но справедливости ради должен признаться, что когдато был грешок, писал и юзал такие советники. Однако эта заметка не для покаяния, а для размышлений.

            Пытаясь как-то реагировать на замечания читателей о том, что советник Agent_SB_008 (и последующие версии) допускает в своей работе довольно таки ощутимую просадку по эквити, я пробывал различные варианты с фильтрами и управлением капиталом, но ....

            Но случайно, копаясь в архивах своего компа, наткнулся на своё старое «баловство», советник под названием Agent_pips systems  работает это «чудо» с использованием индикатора i_Trend , открывает сетку ордеров с увеличивающимся объёмом (удваивается) и ещё куча различных настоек.

TakeProfit = 20.0;      
Lots = 0.01;    
StopLoss = 250.0;      
TrailingStop = false;               
MaxTrades = 5;                       колличество выставляемых ордеров
Pips = 15;                                расстояние между ордерами
SecureProfit = 10;                   профит при достижении которого закрываются ордера
AccountProtection = true;     
AllSymbolsProtect = 0;           контролировать профит 1-все инструменты, 0-текущий символ
OrderstoProtect = false;         
mm = false;                             применять управление капиталом
risk = 2;          

Естественно вся эта система, с такими настройками, могла давать как ошеломительные прибыли так и полные сливы.


Но не в этом суть, просто захотелось поэксперементировать с функцией SecureProfit. Однако с дефолтными настройками, изменяя SecureProfit, добиться сколь-нибудь приемлимых результатов не удалось.

И вот тут начинается самое интересное – я попытался изменить основные настройки, но изменять их основываясь на том статистическом опыте который накопился в процессе работы Agent_SB_008. То есть, зная вероятностные значения уровней отката и максимальные уровни стоплоссов для определенных валют, я попытался вписать в эти уровни значения MaxTrades и Pips – жизнь начала налаживаться...
Хочу ещё раз отметить, что никакой оптимизации я не проводил, значения изменял исключительно основываясь на статистический опыт экспериментов с советником Agent_SB_008.



В следующем тесте просто увеличил значение SecureProfit




Все тесты проводил на отрезке времени с 03.01.2011 года до 04.06.2011 года, стартовый депозит 10000, плечё 1:200

Новые функции ...


Для эксперимента добавил в программу функции: 
 1 – возможность разрешить советнику проводить усреднение просевшего усредняющего ордера. 
 2 – попытался  управлять капиталом применительно к данному советнику. 
Теперь обо всём по порядку... 

Для сравнения я вначале прогнал в тестере, 
 так сказать базовую версию советника. Тест 
 проводился на участке с августа 2010 года по 
 май текущего. Котировки не «метаквотовские», а те которые я накапливал в процессе работы.... 



Потом, не меняя основных настроек, включил «первую» функцию – двойное усреднение. Работа функции заключается в том, что советник может усреднять «усредняющий» ордер, когда он уходит в минус. Таким образом, планировалось уменьшить просадки при работе советника.


 
Чисто визуально линия эквити «провисает» меньше чем в базовом тесте, максимальная просадка в процентном отношении уменьшилась, но прибыли это, к сожалению, не добавило и матожидание несколько уменьшилось. Однако нужно отметить, что тест проводился безо всякой предварительной оптимизации, возможно подбором параметров можно будет улучшить результаты.

Далее я подключил «вторую» функцию. Логика её работы такова – я предположил, что когда скапливается достаточное количество рыночных ордеров, это свидетельствует о наличии флета на рынке. Также полагая, что после флета рынок должен войти в тренд, советник был запрограммирован на следующие действия.
- при достаточно большом количестве рыночных ордеров советник открывает отложенные ордера с удвоенным объёмом.
-  при достаточно малом количестве рыночных ордеров (это должно свидетельствовать о завершении тренда) советник возвращается к исходным объёмам ордеров.


В этом варианте прибыль вполовину выше, чем в двух предыдущих и это при том, что тут включена и функция двойного усреднения, которая дала уменьшение прибыли. Однако управление капиталом компенсировало потери двойного усреднения и показало солидный прирост прибыли. Кстати просадка стала также меньше чем в предыдущих тестах, матожидание увеличилось на единицу. Кстати настройки для управления капиталом я также выбирал эмпирическим путём без оптимизации и подгонки.

Сейчас делаю функцию «одноступенчатого приближения»  как будет готова, результаты выложу в блоге.



Теперь о результатах работы :


Ниже, результаты работы на конец апреля, советник остаётся в прибыли почти 25% от стартового депозита за два с половиной месяца (в этом году стартовал в середине февраля).


Хотя нет, это прибыль за полтора месяца, я ведь в прошлом месяце (10 марта) собственноручно угробил всю прибыль и даже немножко стартового депозита .....



рекомендовать блог друзьям и знакомым