Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 4175
- Рейтинг:
- Опубликован:
- 2012.03.19 06:45
- Обновлен:
- 2014.04.22 16:55
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Давно пользуюсь управлением общего профита советника, а теперь пришло время сделать библиотеку. Пару слов о библиотеках.
ManagerPA - Manager Profit Advisor (Управление Профитом Советника). Из описания, надеюсь понятно: управляем такой категорией, как общий профит одновременно открытых ордеров советника. Библиотека мультивалютная - работает с любыми инструментами и фильтровать можно по Магикам, т.е. при желании она может управлять всеми ордерами счёта.
Что кроется за понятием "ОБЩИЙ ПРОФИТ СОВЕТНИКА"?! В MQL4 есть встроенные функции:
OrderProfit() - прибыль по одному отдельно взятому ордеру;
AccountProfit() - прибыль по счёту;
ОБЩИЙ ПРОФИТ СОВЕТНИКА() - прибыль всех открытых на данный момент ордеров советника = OrderProfit(1) + OrderProfit(2) + OrderProfit(n);
Наверно, не лишне будет напомнить (на всякий случай), что прибыль, может быть как положительной, так и отрицательной!!! Теперь самое "ужасное" - что с этим делать?! А всё то же, что и с отдельно взятым ордером - трейлинговать, "приделать" StopLoss и TakeProfit. Технически нет НИКАКОЙ разницы следить за прибылью одного ордера или нескольких вместе.
Ещё пару слов о философии работы трейлинга общего профита - при достижении начального уровня срабатывания трейлинга, библиотека у ВСЕХ контролируемых ордеров обнулит СТОПЫ, беря управление на себя.
Немножко поподробнее, как использовать (самый простой вариант):
- cначала прописываем в теле советника библиотеку:
#include <b-PSI@ManagerPA.mqh> // Библиотека по управлению общим профитом советника
- затем инициализируем переменные библиотеки, прописав в init() советника такую строку (не забываем в функцию передавать свои переменные):
//---- Инициализируем библиотеку управления общим профитом if (!fInit_ManagerPA()) return (0);
В функцию start() после функции подсчёта "своих" ордеров и подсчёта профита по ним, прописываем работу библиотеки:
//---- Запускаем в работу библиотеку управления общим профитом советника if (fManagerPA (bd_ProfitCUR, bd_Balance, bi_MyOrders > 0)) {bi_MyOrders = 0;}
Расшифровка:
bool fManagerPA (double fd_Profit, // текущий профит
double fd_Balance, // текущий доход
bool fb_Conditions) // Условие включения (наличие ордеров)
А если уж очень приспичит - можно на график вывести создаваемую библиотекой статистику. Для этого предназначена отдельная функция. Правда стоит отметит, что это часть моей системы сбора и вывода информации на чарт и для её автономного использования нужно будет провести небольшую правку - убрать перед переменными пробелы.
Comment (fGet_StringManagerPA()); // Получаем строкой статистику по работе модуля
Эту строку можно добавить к Вашей строке.
Если у Вас своей нет (под рукой) - функция для подсчёта своих ордеров и получения состояния текущего профита по ним, может быть следующая:
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ //| Автор : TarasBY | //+-----------------------------------------------------------------------------------+ //| Проверяем наличие "своих" открытых позиций | //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ int fMyPositions (string fs_SymbolList, // Лист управляемых валютных пар string fs_MagicList, // Лист управляемых Магиков double& fd_Profit) // Возвращаемый профит открытых ордеров { int li_total = OrdersTotal(), li_ord = 0; double ld_Profit; //---- fd_Profit = 0.0; if (li_total == 0) {return (0);} for (int li_pos = li_total - 1; li_pos >= 0; li_pos--) { if (!OrderSelect (li_pos, SELECT_BY_POS, MODE_TRADES)) continue; if (StringFind (fs_SymbolList, OrderSymbol()) < 0 && StringLen (fs_SymbolList) > 0) continue; if (!fCheck_MyMagic (fs_MagicList, ",")) continue; if (OrderType() > 1) continue; ld_Profit = OrderProfit() + OrderSwap() + OrderCommission(); fd_Profit += ld_Profit; li_ord++; } return (li_ord); //---- } //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
Тогда вся конструкция для работы с библиотекой примет следующий вид:
double ld_Profit; int li_MyOrders = fMyPositions (Symbol(), iMagicNumber, ld_Profit); //---- Запускаем в работу библиотеку управления общим профитом советника fManagerPA (ld_Profit, AccountBalance(), li_MyOrders > 0);
Пример использования этой библиотеки в советнике.
P.S. Данная библиотека работает совместно с БАЗОВОЙ библиотекой (функций торговых операций).

Выкладываю сразу 2 индикатора, которые рисуют уровни на графике на основе движения цены, усредненного за определенное количество дней.

Советник: Parabolic и его модернизированный аналог (на выбор), фильтруемые модернизированной ATR, да ещё умеющий строить "сетку". Шаблон для конструирования советников, основанных на сетевых стратегиях.

Советник по сигналам МАСD и нескольких MA.

Библиотека функций торговых операций.