int OnInit()
{
//---
//+================================================================================================+
//| 2Sides_v5.0c5 |
//| by Edition Qimer |
//| 31.05.2019 |
//| |
//| 2Sides_Stoch_v5.0c5_1090.mq4 |
//| by Modification Edition Joker62 |
//| 18.10.2019 |
//| |
//| https://www.forexdengi.com/threads/58392-2sides-stoch/page147 |
//+================================================================================================+
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#property copyright "2Sides_v5.0c5 & Qimer"
#property strict
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Для работы советника необходимо выполнить ряд условий, в противном случае нормальная работа советника не гарантируется.
//
// 1) Разрешенный максимальный совокупный объем открытых ордеров в каждую из сторон должен быть не меньше 100лот (информацию об этом можно узнать на
// сайте вашего ДЦ «типы счетов»)
// 2) Плечо (leverage), чем оно выше, тем меньший депозит будет необходим для торговли, и тем выше будет прибыль. Меньшее плечо убережет депо от вашей
// жадности и неоправданного риска.
// 3) Необходимый депозит. Торговать можно с любым депозитом. Однако, при UseMM = true советник, в случае нехватки средств на счете, выведет
// соответствующее сообщение и укажет, сколько необходимо иметь средств на счете при данных настройках советника.
//
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Подправлены для нормальной работы под билда терминала 1090.
// Объединено ряд модулей и функции рижима LOT в один блок
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
enum NoYes
{
ny0 = 0, // Нет (False)
ny1 = 1 // Да (True)
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string separate_00____ = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"; //.
extern string tx1 = "Общие настройки советника"; //.
extern NoYes Info = true; // Отображать инфо панель?
// Переключатель, при значении true, отображается информация о балансе,
// ордерах, коэффициенте увеличения лота и т.д.
extern color MainInfoBack = LightGray;
extern color MainInfo = Black;
extern color BuyInfoBack = LightGray;
extern color BuyInfo = Black;
extern color SellInfoBack = LightGray;
extern color SellInfo = Black;
extern string separate_01____ = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"; //.
input NoYes UseVTP = true; // Будем использовать виртуальный трал?
// Переключатель, при значении false советник использует режим, в котором советник модифицирует
// ордера с выставлением фактического ТП серии, и серии закрываются брокером. При значении true
// советник использует режим VTP с выставлением виртуального ТП и закрытием ордеров серии по
// сигналу советника, также в этом режиме используется трейлинг прибыли.
//---------------------------------------------------------------------------------------------
// В режиме VTP советник использует горизонтальные линии ТП (Virtual TakeProfit) для закрытия ордеров.
// При очередном (ручном/автоматическом) открытии ордера серии советник рассчитывает новый уровень
// цены для перемещения линии ТП.
// При выходе цены за линию ТП (для «buy серии» снизу вверх, для «sell серии» сверху вниз) на расстояние,
// задаваемое в опциях как Tral_Start, линия ТП меняет свой цвет на, заданный в опциях советника, цвет Tral_Color.
// Это свидетельствует о начале трала прибыли по серии. При продолжении движения цены в нужном направлении,
// линия ТП будет следовать за ценой на расстоянии не более Tral_Size. При развороте цены, серия закроется
// на уровне подтянутой линии ТП.
// Важно отметить, что при удалении линии ТП, трал отменится и линия займет свое первоначальное положение.
// Также необходимо отметить, что теперь линии ТП можно двигать, тем самым выбирая для себя необходимый
// уровень закрытия серии, ожидаемый профит в единицах валюты отображается чуть ниже линии ТП. Т.е. можно
// подобрать как необходимый уровень закрытия по определенной цене, так и необходимый профит.
// Принудительное закрытие сери осуществляется точно так же.. Заводим линию ТП за цену, чтобы сработал трал.
// Затем заводим линию за цену в обратном направлении, чтобы сработало закрытие серии.
// В режиме UseVTP = false перемещение линий ТП влечет за собой изменение терминальных ТП. Режим защищен от
// ошибки 130 (близкие стопы). Поэтому можно смело двигать линию. Важно только одно, что модификация ордеров
// происходит сразу, поэтому не стоит долго перемещать эту линию, т.к. будет много модификаций ордеров и
// обращений на сервер, что не приветствуется большинством ДЦ.
//---------------------------------------------------------------------------------------------
extern NoYes CloseBy = false; // Будем использовать встречный ордер?
// Переключатель, при значении true советник закрывает серии, используя встречное закрытие ордеров,
// при значении false советник закрывает серии последовательно, начиная с большего ордера.
extern NoYes ManualTrade = false; // Будем открывать первый ордер в ручную?
// Переключатель, при значении true переходит в режим ручной торговли, т.е. первый ордер открывает
// сам трейдер, а советник, в случае неверного движения цены, сопровождает открытый ордер.
extern NoYes DynamicTP = false; // Будем изменять достижения профита?
// Переключатель, в положении true переходит в режим, при котором общий ТейкПрофит серий будет
// зависить от количество ордеров в сериях Sell и Buy (значения независимы)
extern NoYes UseNewBar = true; // Использовать режим открытия колен на новом баре?
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
|