Navigation:Home > Content >

b-PSI@TrailF_Stairs.mq4

Time: 2016-11-21 | Download file:b-PSI@TrailF_Stairs.mq4

//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                                                           b-PSI@TrailU_Stairs.mqh |
//|                                    Copyright © 2013-14, Igor Stepovoi aka TarasBY |
//|                                                                taras_bulba@tut.by |
//|   05.03.2013  Библиотека функции классического трейлинга ордеров.                 |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|   Данный продукт предназначен для некоммерческого использования.  Публикация раз- |
//|решена только при указании имени автора (TarasBY).  Редактирование исходного кода  |
//|допустимо только при условии сохранения данного текста, ссылок и имени автора.     |
//|   Продажа библиотеки или отдельных её частей ЗАПРЕЩЕНА.                           |
//|   Автор не несёт ответственности за возможные убытки, полученные в результате ис- |
//|пользования библиотеки.                                                            |
//|   По всем вопросам, связанным с работой библиотеки, замечаниями или предложениями |
//|по её доработке обращаться на Skype: TarasBY или e-mail.                           |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
#property copyright "Copyright © 2008-14, TarasBY WM R418875277808; Z670270286972"
#property link      "taras_bulba@tut.by"
//IIIIIIIIIIIIIIIIIII==================CONSTANS=================IIIIIIIIIIIIIIIIIIIIII+
//IIIIIIIIIIIIIIIIIII==========Внешние параметры модуля=========IIIIIIIIIIIIIIIIIIIIII+
//extern string Setup_TrailStairs     = "**************** TrailingStairs ***************";
extern bool   TrailStairs_ON           = FALSE;            // Включение трейлинга "Stairs"
extern double TrailingStop             = 50;               // Скользящий тейк-профит, ноль чтобы отключить его
//IIIIIIIIIIIIIIIIIII========Глобальные переменные модуля=======IIIIIIIIIIIIIIIIIIIIII+
//IIIIIIIIIIIIIIIIIII=========Подключение внешних модулей=======IIIIIIIIIIIIIIIIIIIIII+
//IIIIIIIIIIIIIIIIIII===========Перечень функций модуля=========IIIIIIIIIIIIIIIIIIIIII+
//bool fCheck_TrailStairs()         - Проверяем переданные в функцию внешние параметры.
//|***********************************************************************************|
//| РАЗДЕЛ: ФУНКЦИИ ТРЕЙЛИНГА                                                         |
//|***********************************************************************************|
/*bool fTrail_Stairs (              - Трейлинг стандартный
//+-----------------------------------------------------------------------------------+
    string fs_Symbol,               // Symbol
    int fi_Ticket,                  // Ticket
    double& fd_NewSL                // возвращаемый новый SL
)*/
//|***********************************************************************************|
//| РАЗДЕЛ: ОБЩИХ ФУНКЦИЙ                                                             |
//|***********************************************************************************|
//void fSet_ValuesStairs()          - Получаем рабочие переменные в соответствии с разрядностью
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//void fCheck_DecimalStairs()       - Учитываем разрядность котировок
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//         Проверяем переданные в функцию внешние параметры.                          |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
bool fCheck_TrailStairs()
{
//----
    if (TrailStairs_ON)
    {
        if (TrailingStop - TrailStep < ProfitMIN_Pips)
        {bs_ERROR = "Поставьте TrailingStop >= TrailStep + ProfitMIN !!!"; return (false);}
        bi_cntTR++;
    }
//----
    return (true);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//+===================================================================================+
//|***********************************************************************************|
//| РАЗДЕЛ: ФУНКЦИИ ТРЕЙЛИНГА                                                         |
//|***********************************************************************************|
//+===================================================================================+
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//| ТРЕЙЛИНГ СТАНДАРТНЫЙ-СТУПЕНЧАТЫЙ                                                  |
//| Функции передаётся тикет позиции, расстояние от курса открытия, на котором        |
//| трейлинг запускается (пунктов) и "шаг", с которым он переносится (пунктов)        |
//| Пример: при +30 стоп на +10, при +40 - стоп на +20 и т.д.                         |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
bool fTrail_Stairs (
    string fs_Symbol,               // Symbol
    int fi_Ticket,                  // Ticket
    double& fd_NewSL)               // возвращаемый новый SL
//+...................................................................................+
{
//----
    fd_NewSL = 0.0;
    if (TrailingStop > 0)
    {
        if (bi_cmd * (bd_Price - OrderOpenPrice()) > bd_TrailingStop || bb_TrailLOSS)
        {
            if ((bi_cmd * (bd_Price - bd_curSL) > bd_TrailingStop + bd_TrailStep) || bd_curSL == 0.0)
            {fd_NewSL = bd_Price - bi_cmd * bd_TrailingStop; bs_fName = "fTrail_Stairs()"; return (true);}
        }
    }
    //---- Контролируем возможные ошибки
	   fGet_LastErrorInArray (bs_fName, bi_indERR);
//----
    return (false);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//+===================================================================================+
//|***********************************************************************************|
//| РАЗДЕЛ: ОБЩИХ ФУНКЦИЙ                                                             |
//|***********************************************************************************|
//+===================================================================================+
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Получаем рабочие переменные в соответствии с разрядностью                  |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fSet_ValuesStairs()
{
//----
    bd_TrailingStop = NDP (TrailingStop);
    bd_TrailStep = NDP (TrailStep);
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Учитываем разрядность котировок                                            |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fCheck_DecimalStairs()
{
//----
    TrailingStop *= bi_Decimal;
    TrailStep *= bi_Decimal;
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+

Recommend