![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
NoName |
![]()
Сообщение
#131
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) ![]() |
Только вот подумал что этот код сгодится только для одной пары. Для второй нужно либо добавить такой же кусок кода с другим Magic, что совсем не эстетично и громоздко, либо модифицировать этот код для работы со вторым Magic, что не совсем просто из-за большого ветвления if, if, if ...
|
leonid553 |
![]()
Сообщение
#132
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Это я у же все сделал"! (без библиотеки)
extern string GBPUSD= "Параметры GBPUSD"; extern int MagicGBP=199; extern bool GBP=True; extern int GBPUSD_period=17; extern int GBP_Env_period=20; extern int GBP_Env_shift=1; extern double GBP_Env_deviation=17; extern int sl_GBPUSD = 54; extern int tp_GBPUSD = 250; extern string _Parameters_Trailing_GBP = "----- Параметры Трейлинга GBPUSD -----"; extern bool UseTrailing = false; // Использовать трейлинг extern bool ProfitTrailing = false; // Включать трейлинг когда получен профит extern int TrailingStop = 60; // Фиксированный размер трала extern int TrailingStep = 5; // Шаг трейлинга ------------------------------------------------------------------------- Сейчас добавляю такой же второй трал - с магиком для второй пары! Но вот как тут сделать отдельный размер для короткой и длинной поз? Вроде где-то видел такой трал... Вот нашел: Код extern bool UseTrailing = true; extern int lMinProfit = 30; extern int sMinProfit = 30; extern int lTrailingStop = 15; extern int sTrailingStop = 15; extern int lTrailingStep = 5; extern int sTrailingStep = 5; if (UseTrailing) TrailPositions(); void TrailPositions() { int cnt = OrdersTotal(); for (int i=0; i<cnt; i++) { if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue; if (OrderSymbol() != Symbol()) continue; if (OrderType() == OP_BUY) { if (Bid-OrderOpenPrice() > lMinProfit*Point) { if (OrderStopLoss() < Bid-(lTrailingStop+lTrailingStep-1)*Point) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid-lTrailingStop*Point, OrderTakeProfit(), 0, Blue); } } } if (OrderType() == OP_SELL) { if (OrderOpenPrice()-Ask > sMinProfit*Point) { if (OrderStopLoss() > Ask+(sTrailingStop+sTrailingStep-1)*Point || OrderStopLoss() == 0) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask+sTrailingStop*Point, OrderTakeProfit(), 0, Blue); } } } } }__________________ |
NoName |
![]()
Сообщение
#133
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) ![]() |
Ну код который я выложил выше, он как раз с разным размером для позиций!
Смотри TrailingBuy, TrailingSell |
leonid553 |
![]()
Сообщение
#134
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Понял! Прошу прощ. за невнимательность!
|
NoName |
![]()
Сообщение
#135
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) ![]() |
Немного подумал и решил что всё же грамотнее будет использовать библиотеку.
Подправил для этой цели трал Игоря Кима. ![]() Подключить как обычно: #include <a-SimpleTrailingMod.mqh> Вызывать: TrailingPositions(Magic); В функцию нужно передавать Magic той позиции, которую нужно тралить. |
leonid553 |
![]()
Сообщение
#136
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Ок! Сейчас гляну!
Кстати! Что это за таинственная библиотека #include <stdlib.mqh> ? |
NoName |
![]()
Сообщение
#137
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) ![]() |
Это стандартная библиотека метатрейдера, в которой есть полезная функция ErrorDescription(). Эта функция возвращает описание ошибки если передать в неё номер ошибки.
|
leonid553 |
![]()
Сообщение
#138
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Ок! Понял!
![]() ![]() |
leonid553 |
![]()
Сообщение
#139
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Только обьясни пож., почему грамотнее будет использовать библиотеку для трала?
![]() ![]() ![]() |
NoName |
![]()
Сообщение
#140
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) ![]() |
Да потому что не нужно повторять код два раза!:) Ты пишешь трал для одной пары, а за тем такой же трал для другой. Отличия между ними только в переменной Magic.
Конечно ничего не изменится если сделать два трала, но с библиотекой код будет проще и меньше шансов наделать ошибок. |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 13.5.2025, 23:50 |