Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

b-PSI@ManagerPA v.20.08.2012 - библиотека для MetaTrader 4

Просмотров:
4017
Рейтинг:
(8)
Опубликован:
2012.03.19 06:45
Обновлен:
2014.04.22 16:55
\MQL4\Include\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Давно пользуюсь управлением общего профита советника, а теперь пришло время сделать библиотеку. Пару слов о библиотеках.

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. Данная библиотека работает совместно с БАЗОВОЙ библиотекой (функций торговых операций).

XLines XLines

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

e-PSI@SAR v.20.09.2012 e-PSI@SAR v.20.09.2012

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

V3 MA MACD V3 MA MACD

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

b-PSI@Trade v.19.08.2013 b-PSI@Trade v.19.08.2013

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