# Доработка ботов (советников, индикаторов) vol. 2

Раздел: Язык программирования MQL4
Автор темы: chocolate
Создана: 2014-10-02 12:48
Ответов: 33834 | Просмотров: 6688606
Страница 1678 из 1692
Источник: https://forexsystemru.com/threads/77111/page-1678

---

## daughtry — 2026-02-21 14:29

> Цитата (deadsoul):
> Вы абсолютно правы! Проблема в том, что код проверяет на каждом тике (во время формирования свечи). Нам нужно убедиться, что он проверяет только один раз, когда формируется НОВЫЙ бар (после того, как предыдущий бар закрылся).
>
>
> Готово✅ Теперь исправлено правильно!

   

Пожалуйста, сделайте версию индикатора для MT5.

Спасибо.

## daughtry — 2026-02-21 14:55

> Цитата (1qaz2wsx3edc):
> может я что то не так делаю, но он ставит стрелку и дает сигнал во время жизни (формирования) свечи, а мне надо чтоб он дал сигнал при закрытии свечи если условия совпали.

Пожалуйста, у вас есть шаблон или файл .set для индикатора с линиями на графике? Когда я его загрузил, он выглядел иначе, чем на вашей картинке.

## 1qaz2wsx3edc — 2026-02-21 14:56

> Цитата (daughtry):
> Пожалуйста, у вас есть шаблон или файл .set для индикатора с линиями на графике? Когда я его загрузил, он выглядел иначе, чем на вашей картинке.

про какие линии речь?

## deadsoul — 2026-02-21 23:14

> Цитата (daughtry):
> Пожалуйста, сделайте версию индикатора для MT5.
>
> Спасибо.

## deadsoul — 2026-02-22 00:16

> Цитата (petya21472147):
> Приветствую уважаемые програмисты, не могли бы вы доделать индикатор, сделать звук табличку, и еще он не появляеться вовремя луч приходиться бросать по новой индикатор на график...
> Заранее спасибо!

## daughtry — 2026-02-22 10:47

> Цитата (1qaz2wsx3edc):
> про какие линии речь?

Привет,
эти строки имеют разные метки временных интервалов. Не возражаете против индикатора, шаблона или файла настроек?

## daughtry — 2026-02-22 10:50

Большое спасибо. Это было очень быстро.

## 1qaz2wsx3edc — 2026-02-22 11:38

> Цитата (daughtry):
> Привет,
> эти строки имеют разные метки временных интервалов. Не возражаете против индикатора, шаблона или файла настроек?

К сожелению в открытом коде этого индикатора у меня нет. Я думаю Вы про этот индикатор имели ввиду.

## daughtry — 2026-02-22 20:47

> Цитата (1qaz2wsx3edc):
> К сожелению в открытом коде этого индикатора у меня нет. Я думаю Вы про этот индикатор имели ввиду.

Хорошо, большое спасибо.

## ale9551 — 2026-02-26 19:55

Уважаемые программисты!
Добавьте пожалуйста в советник MМ(MoneyMenegment,т.е расчет лота в процентах от эквити),а также фильтр спреда!
Заранее благодарен!

## deadsoul — 2026-02-26 20:28

> Цитата (ale9551):
> Уважаемые программисты!
> Добавьте пожалуйста в советник MМ(MoneyMenegment,т.е расчет лота в процентах от эквити),а также фильтр спреда!
> Заранее благодарен!

Краткое описание всех изменений
Подробности о функциях
UseMoneyManagement true → лоты рассчитываются на основе капитала; false → используется фиксированное значение лотов
RiskPercent Процент от капитала счета, используемый для определения размера лота (по умолчанию 2%)
DecreaseFactor Сохраняется из исходного значения — уменьшает лот после последовательных убытков
Нормализация лота Привязана к MODE_LOTSTEP, ограничена диапазоном MODE_MINLOT / MODE_MAXLOT
MaxSpreadPoints Максимально допустимый спред в пунктах; 0 = фильтр отключен
IsSpreadAllowed() Вызывается в CheckForOpen() — пропускает сделку и регистрирует сообщение, если спред слишком большой
ReverseSignals false = исходная логика (crossDown→BUY, crossUp→SELL); true = обратная (crossDown→SELL, crossUp→BUY)
Теперь проверяется значение возвращаемого значения OrderSend для сообщений об ошибках; Ошибки, выведенные в журнал
Округление партии Исправлено в исходном коде NormalizeDouble(..., 01) → правильное округление до 2 знаков после запятой с шагом партии

## ale9551 — 2026-02-26 20:45

> Цитата (deadsoul):
> Краткое описание всех изменений
> Подробности о функциях
> UseMoneyManagement true → лоты рассчитываются на основе капитала; false → используется фиксированное значение лотов
> RiskPercent Процент от капитала счета, используемый для определения размера лота (по умолчанию 2%)
> DecreaseFactor Сохраняется из исходного значения — уменьшает лот после последовательных убытков
> Нормализация лота Привязана к MODE_LOTSTEP, ограничена диапазоном MODE_MINLOT / MODE_MAXLOT
> MaxSpreadPoints Максимально допустимый спред в пунктах; 0 = фильтр отключен
> IsSpreadAllowed() Вызывается в CheckForOpen() — пропускает сделку и регистрирует сообщение, если спред слишком большой
> ReverseSignals false = исходная логика (crossDown→BUY, crossUp→SELL); true = обратная (crossDown→SELL, crossUp→BUY)
> Теперь проверяется значение возвращаемого значения OrderSend для сообщений об ошибках; Ошибки, выведенные в журнал
> Округление партии Исправлено в исходном коде NormalizeDouble(..., 01) → правильное округление до 2 знаков после запятой с шагом партии

Спасибо огромное!

## dovafx — 2026-02-28 07:06

> Цитата (Hellded13):
> Source code available?

Do you have full version ? many thanks

## berlioz — 2026-03-02 20:49

> Цитата (dovafx):
> Do you have full version ? many thanks

Добрый день.
Уважаемые программисты!
 К сожалению, я еще не совлем владею mql4, прошу помощи.
Эксперт в таком виде работает без проблем.
if(triger == 2) - открываем 2 лота Buy (Lots*2). Sell - аналогично.
Помогите прописать возможнось закрытия одного лота из 2 открытых т.е
if triger == 1 - закрыть 1 лот Buy.
if triger == -1 - закрыть 1 лот Sell.

triger - переменная, которую я с помощью SharedVar-w32.dll импортирую в код mql4 из другого софта.
Желаю удачи,
Уважением. 
Код прикрепил.

## berlioz — 2026-03-03 09:59

> Цитата (berlioz):
> Добрый день.
> Уважаемые программисты!
>  К сожалению, я еще не совлем владею mql4, прошу помощи.
> Эксперт в таком виде работает без проблем.
> if(triger == 2) - открываем 2 лота Buy (Lots*2). Sell - аналогично.
> Помогите прописать возможнось закрытия одного лота из 2 открытых т.е
> if triger == 1 - закрыть 1 лот Buy.
> if triger == -1 - закрыть 1 лот Sell.
>
> triger - переменная, которую я с помощью SharedVar-w32.dll импортирую в код mql4 из другого софта.
> Желаю удачи,
> Уважением.
> Код прикрепил.

## Dmitry47mazuro — 2026-03-03 10:11

Можете исправить его? Не отображается на графике. пишет мол вышла новая версия. Можно ли подлечить? или может есть у кого рабочая версия?

## ИванМН — 2026-03-03 11:33

> Цитата (berlioz):
> Добрый день.
> Уважаемые программисты!
>  К сожалению, я еще не совлем владею mql4, прошу помощи.
> Эксперт в таком виде работает без проблем.
> if(triger == 2) - открываем 2 лота Buy (Lots*2). Sell - аналогично.
> Помогите прописать возможнось закрытия одного лота из 2 открытых т.е
> if triger == 1 - закрыть 1 лот Buy.
> if triger == -1 - закрыть 1 лот Sell.
>
> triger - переменная, которую я с помощью SharedVar-w32.dll импортирую в код mql4 из другого софта.
> Желаю удачи,
> Уважением.
> Код прикрепил.

Может быть, код Вы и прикрепили, только он не прикрепился.
Вы имеете в виду частичное закрытие позиции? Просто указываете в функции OrderClose необходимую лотность и всё. Только не забудьте нормализовать количество лотов перед отправкой приказа. У Вас закроется требуемый объём, на оставшуюся часть терминалом будет создана новая позиция с новым номером ("тикетом"). И добавится соответствующий комментарий к закрывшейся и оставшейся частям.

## berlioz — 2026-03-03 16:14

> Цитата (ИванМН):
> Может быть, код Вы и прикрепили, только он не прикрепился.
> Вы имеете в виду частичное закрытие позиции? Просто указываете в функции OrderClose необходимую лотность и всё. Только не забудьте нормализовать количество лотов перед отправкой приказа. У Вас закроется требуемый объём, на оставшуюся часть терминалом будет создана новая позиция с новым номером ("тикетом"). И добавится соответствующий комментарий к закрывшейся и оставшейся частям.

Прошу прощения - это в этом блоке ?     OrderLots()  ???

//--------------------------------------------------------------------------------------------------------------
//       Блок закрытия ордера по типу
//--------------------------------------------------------------------------------------------------------------
bool Close_ord_by_type(int type_ord)
{  
   bool ticketmdf=true;
   int i=OrdersTotal()-1;
   for (int j=i; j>=0;j--) //Определяем какие ордера существуют
   {
      if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES) == true)
      {    
         if(OrderCloseTime()>0 || OrderMagicNumber()!=MAGIC)
         {
            continue;
         }                  
         if(OrderSymbol()==Symbol() && OrderType()==type_ord)   
         {          
            if(OrderType()==OP_BUY && type_ord==OP_BUY)
            {
               ticketmdf=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(Symbol(),MODE_BID),Digits),_slippage*coef*3,Red);
               if(ticketmdf==false)                     
               {
                  Print("Ошибка при закрытии ордера Buy",+GetLastError());
                  return(false);
               }
            }
            if(OrderType()==OP_SELL && type_ord==OP_SELL)
            {
               ticketmdf=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),Digits),_slippage*coef*3,Blue);            
               if(ticketmdf==false)                     
               {
                  Print("Ошибка при закрытии ордера Sell",+GetLastError());
                  return(false);
                }    
            }
         }
      }
   }
   return(true);
}

## kos17788 — 2026-03-03 19:23

Здравствуйте. Сделайте пожалуйста толщину линий от 1 до 18 в  0 - 1 строке. Благодарю.

## deadsoul — 2026-03-03 20:29

> Цитата (kos17788):
> Здравствуйте. Сделайте пожалуйста толщину линий от 1 до 18 в  0 - 1 строке. Благодарю.

---

Следующая страница: https://forexsystemru.com/threads/77111/page-1679
