Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2102
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
здравствуйте всем!
разбираю код советника (автора нет в наличии), и не могу понять как советник выбирает что нужно открыть, бай или селл.
может кто то подскажет в чем логика?
часть кода, открывающего ордер выглядит так:
//---- Процедура открытия ордеров---------------------------------------------------------------------------------------------------------------- if (!gb_Pause) // Если время работы НЕ подпадает под ограничения, установленные в настройках { int NO_orders = 0, li_cmd, li_ind, li_ORD; double ld_Price, ld_TP2, ld_PriceBar = iOpen (gs_Symbol, gi_ControlPeriod, 0); bool lb_NotMoney = false; string lsa_ord[] = {"buy","sell"}; color lca_color[] = {Blue,Red}; //---- Работаем по отдельности с каждым набором настроек for (int li_PR = 0; li_PR < cnt_MG; li_PR++) { //---- Определяем очерёдность исполнения сетов if (Use_Prioritity && !gb_first) {li_MG = gia_Priority[li_PR];} else {li_MG = li_PR;} //---- Нет открытых ордеров по Магику if ((gia_MyOrders[li_MG] == 0)&& CountOrders()==0) //*************************************ИЗМ { //---- Контролируем на текущем баре открытие только одного ордера------------------------------------------------------------------------------------------------------------ fCalculate_Pribul (li_tmp_HistoryOrders, gia_MG[li_MG], ldt_BeginBarControl); // если удалить, советник продолжает работать if (li_tmp_HistoryOrders > 0 || gdt_NewBarControl == ldt_BeginBarControl) {continue;} // пробовал блокировать - на работу не повлияло if (cur_Life_min <= gia_LifeStart[li_MG]) { for (li_ORD = 0; li_ORD < 2; li_ORD++) { //---- Цена двигается от цены открытия if (li_extrem == li_ORD) { //---- Вычисляем динамически MIN_Distance if (gda_MIN_Distance[li_MG] < 0) { if (gda_MIN_Distance[li_MG] == -1.0) {lda_MIN_Distance[li_MG] = NormalizeDouble (gda_AvarageCandle[0], Digits);} else if (gda_MIN_Distance[li_MG] == -2.0) {lda_MIN_Distance[li_MG] = NormalizeDouble (gda_AvarageCandle[1] / 2.0, Digits);} } else {lda_MIN_Distance[li_MG] = gda_MIN_Distance[li_MG];} if (li_ORD == 0) {li_cmd = 1; li_ind = 1;} else {li_cmd = -1; li_ind = 0;} //---- Если цена прошла нужную дистанцию вниз if (li_cmd * (ld_PriceBar - gda_Price[li_ind]) >= lda_MIN_Distance[li_MG] //---- Но не зашла слишком далеко && li_cmd * (ld_PriceBar - gda_Price[li_ind]) <= lda_MIN_Distance[li_MG] * 2.0) { //---- Если есть все разрещения - открываем ордер------------------------------------------------------------------------------------------------------------------------------------ //* if ( gdt_NewBarH1 != gdt_BeginBar_H1) { li_Ticket1 = 0; ld_Price = NormalizeDouble (fGet_TradePrice (li_ind, RealTrade, gs_Symbol), Digits); ld_TP2 = NormalizeDouble (ld_Price + li_cmd * MathMax (gd_TP2, MarketInfo (gs_Symbol, MODE_STOPLEVEL) * Point), Digits); li_Ticket1 = OrderSend (gs_Symbol, li_ORD, LOT(), ld_Price, Slippage, NormalizeDouble (ld_Price - li_cmd * gd_SL, Digits), ld_TP2, lsa_ord[li_ORD], MG2, 0, lca_color[li_ORD]); // символ бай/селл лот цена откр проскальз ------------------стоп лосс------------------------ тейк комментарий магик срок истец орд break; } } } } } else { //---- Подсчитываем количество сетов, "отработавших" на этом баре NO_orders++; if (NO_orders == cnt_MG - 1) {gdt_NewBarControl = ldt_BeginBarControl; return;} continue; } } } } }далее по коду, функции OP_BUY , OP_SELL
встречаются еще пару раз, однако по моему, они уже никак не связаны с открытием ордера:
Доброго дня всем.
Есть ли какая возможность через MQL получить текстовое значение поля сервер из окна логона?
Спасибо.
Здравствуйте.
Подскажите пожалуйста как в MQL5 выглядит код, который разрешает или запрещает работу алгоритма в зависимости от времени (часы, минуты), например до 11 утра можно открывать ордера, а после 11 нельзя, MQL4 всё работает, а в MQL5 не получается портировать код.
Здравствуйте.
Подскажите пожалуйста как в MQL5 выглядит код, который разрешает или запрещает работу алгоритма в зависимости от времени (часы, минуты), например до 11 утра можно открывать ордера, а после 11 нельзя, MQL4 всё работает, а в MQL5 не получается портировать код.
Здравствуйте, Сергей! Покажите какой код портируете, чтобы Вам смогли помочь.
С уважением, Владимир.
здравствуйте всем!
разбираю код советника (автора нет в наличии), и не могу понять как советник выбирает что нужно открыть, бай или селл.
может кто то подскажет в чем логика?
часть кода, открывающего ордер выглядит так:
далее по коду, функции OP_BUY , OP_SELL
встречаются еще пару раз, однако по моему, они уже никак не связаны с открытием ордера:
Вот так:
//---- Если цена прошла нужную дистанцию вниз if (li_cmd * (ld_PriceBar - gda_Price[li_ind]) >= lda_MIN_Distance[li_MG] //---- Но не зашла слишком далеко && li_cmd * (ld_PriceBar - gda_Price[li_ind]) <= lda_MIN_Distance[li_MG] * 2.0)здравствуйте всем!
разбираю код советника (автора нет в наличии), и не могу понять как советник выбирает что нужно открыть, бай или селл.
может кто то подскажет в чем логика?
часть кода, открывающего ордер выглядит так:
далее по коду, функции OP_BUY , OP_SELL
встречаются еще пару раз, однако по моему, они уже никак не связаны с открытием ордера:
Вот так:
И где здесь выбор направления?
тут не нужен выбор направления, направление уже выбрано.
тут проверяется, надо ли открывать ордер в выбранном направлении.
тут не нужен выбор направления, направление уже выбрано.
тут прореряется, надо ли открывать ордер в выбранном направлении.
здравствуйте всем!
разбираю код советника (автора нет в наличии), и не могу понять как советник выбирает что нужно открыть, бай или селл.
может кто то подскажет в чем логика?
А направление выбирается в этой строке:
for (li_ORD = 0; li_ORD < 2; li_ORD++)