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

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

---

## Billy Kid — 2026-01-17 23:18

> Цитата (Andrey228304):
> закинул в Deepseek.  пишет что это особенность расчета ))))). Сейчас там же пробую убрать это. Но думаю ребята профи сделают это быстрее и качественнее

Я там же этот код и сварганил. 
Там где то плюс на минус поменяла нейросеть. 
Всего то дел RoC через объем пересчитать. Может кто вручную сделает

## Billy Kid — 2026-01-17 23:27

В Алисе наваял.
Может кто скомпилирует?

## Johnere — 2026-01-17 23:40

> Цитата (Billy Kid):
> В Алисе наваял.
> Может кто скомпилирует?

Fixed and removed repaint

## kos17788 — 2026-01-17 23:57

> Цитата (Johnere):
> Fixed and removed repaint

Can I ask you to add close, open, high, low, median, typical, weighted to the indicator?

## Johnere — 2026-01-18 00:02

> Цитата (kos17788):
> Can I ask you to add close, open, high, low, median, typical, weighted to the indicator?

Sure, will do it right now

## Johnere — 2026-01-18 00:19

> Цитата (kos17788):
> Can I ask you to add close, open, high, low, median, typical, weighted to the indicator?

## kos17788 — 2026-01-18 00:22

Thanks! (y)

## vladradon — 2026-01-18 02:37

> Цитата (DeD66):
> .....не рисует

Я его уже не помню, но если написал, что рисует - значит рисует. Просто я его в тестере гонял и там сразу все видно. 🤷‍♂️

## lori — 2026-01-19 17:07

> Цитата (Billy Kid):
> Что то я сварганил с помощью Deep Seek, что этот RoC от вертекса не отличить

Поделись пожалуйста этим индикатором

## Billy Kid — 2026-01-19 17:09

> Цитата (lori):
> Поделись пожалуйста этим индикатором

К сожалению, нейросеть допустила ошибку в коде и он неадекватно сигналит.
Да и там чуть выше он выложен

## Виктор2105 — 2026-01-19 17:28

> Цитата (Billy Kid):
> К сожалению, нейросеть допустила ошибку в коде и он неадекватно сигналит.
> Да и там чуть выше он выложен

Сигналит адекватно, но на истории. В реале вообще себя никак не показывает.

## lori — 2026-01-19 19:07

> Цитата (Billy Kid):
> К сожалению, нейросеть допустила ошибку в коде и он неадекватно сигналит.
> Да и там чуть выше он выложен

То что сигналит не правильно - не беда. Выше выложен без линий похожих на болинджер. 
Выложите пожалуйста свою версию🙏

## BUT — 2026-01-19 19:12

> Цитата (Billy Kid):
> Ребята кодеры, посмотрите, пожалуйста, RoC Volume что там за ошибка в коде, что он на величину периода отстает. Может исправить можно?

Ваш индикатор рассчитывается с конца, то есть с самого старого бара к новому (с индексом 0).
При расчете каждого бара учитывается цена бара, у которого индекс равен минус 12 баров от рассчитываемого , то есть учитывается цена более нового бара. (Например, если рассчитывается 20, то обращается к бару с индексом 8. Если 19, то к обращается к бару 7, и т. д.)
Поэтому индикатор может рассчитать бар с индексом 12, потому что обращается к бару с индексом ноль. А бар с индексом 11 уже не может посчитать, потому что бара с индексом -1 не существует и отсутствуют данные для расчета.

Иными словами индикатор как бы заглядывает вперёд на некоторое количество баров, которое указано в "Период RoC" (По умолчанию 12).

Это если объяснять максимально простым языком.

## Billy Kid — 2026-01-19 19:38

> Цитата (lori):
> То что сигналит не правильно - не беда. Выше выложен без линий похожих на болинджер.
> Выложите пожалуйста свою версию🙏

Там тот же самый кривой индюк с накинутым на него боллинжером из терминала

## Виктор2105 — 2026-01-19 19:41

> Цитата (BUT):
> Ваш индикатор рассчитывается с конца, то есть с самого старого бара к новому (с индексом 0).
> При расчете каждого бара учитывается цена бара, у которого индекс равен минус 12 баров от рассчитываемого , то есть учитывается цена более нового бара. (Например, если рассчитывается 20, то обращается к бару с индексом 8. Если 19, то к обращается к бару 7, и т. д.)
> Поэтому индикатор может рассчитать бар с индексом 12, потому что обращается к бару с индексом ноль. А бар с индексом 11 уже не может посчитать, потому что бара с индексом -1 не существует и отсутствуют данные для расчета.
>
> Иными словами индикатор как бы заглядывает вперёд на некоторое количество баров, которое указано в "Период RoC" (По умолчанию 12).
>
> Это если объяснять максимально простым языком.

Хотел свой скрин выложить, но здесь то же самое: данные видно при загрузке индикатора, после индикатор себя никак не показывает.

## Johnere — 2026-01-20 01:38

> Цитата (Виктор2105):
> Хотел свой скрин выложить, но здесь то же самое: данные видно при загрузке индикатора, после индикатор себя никак не показывает.

No lag

## Виктор2105 — 2026-01-20 10:04

> Цитата (Johnere):
> Без задержек

Благодарю! Все работает!

## Gena333 — 2026-01-20 12:45

Я в   RoC_Volume.mq4
эти все недоумения :
---------------------------------------------------
 //--- Если данных недостаточно для расчета
   if(rates_total < InpRoCPeriod + 1)
      return(0);
 
   //--- Определяем начальный индекс для расчета
   int start;
   if(prev_calculated == 0)
      start = InpRoCPeriod;
   else
      start = prev_calculated - 1;
 
   //--- Основной цикл расчета
   for(int i = start; i < rates_total && !IsStopped(); i++)
   {
      //--- Проверка наличия достаточного количества баров
      if(i >= InpRoCPeriod)
      {
         //--- Получаем цену текущего и прошлого периода
         double currentPrice = GetPrice(InpPriceType, open*, high, low, close);
         double pastPrice = GetPrice(InpPriceType, open, high, 
                                    low, close);
--------------------------------------------------------------------------------------------------------
убрал  и поставил все по дефолту )))
--------------------------------------------------------------------------------------------------------
int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   int limit=Bars-1-counted_bars;           
   for(int i=0;i<limit;i++)
   {
     //--- Проверка наличия достаточного количества баров
      if(i >= 0)
    // if(i >= MaPeriud)
      {
         //--- Получаем цену текущего и прошлого периода
         double currentPrice = iMA(NULL,0,MaPeriud,0,MaMode,InpPriceType,i);
         double pastPrice = GetPrice(InpPriceType, open, high, low, close);
---------------------------------------------------------------------------------------------
И все хорошо работает зачем эти -10 баров вычислений ))))
Моя версия чуток отличается .Добавил параболик и High+Low.
Таймфрейм старший .Вобщето стал сам на себе непожожь все для того чтобы нормально отображал старшие таймфреймы , изменился но суть осталось одна почти )))*

## Andrey228304 — 2026-01-20 18:38

В тестере запустил его, почему то не меняет цвет он, когда старший тайм выставляешь. Только после обновления. Ну да ладно). В режиме MTF пока свеча не закроется старшего тайма, будет цвет менять туда сюда

## ZenFX — 2026-01-20 20:55

Как я понял, там изначально хотелось как RoC только не по Close а по Volume ). Вот такое можно посмотреть... Определить в чем отличие, накинув там 3 индикатора в разном режиме ).

---

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