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

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

---

## wow007 — 2017-09-13 20:27

Доброго времени суток, парни помогите привязать к простому советнику фильтр времени чтобы скажем с 9.00 до 12.00 торговал, спасибо огромное!
Если не сложно еще добавьте функцию close_all_orders = 1 - закрыть все ордера по истечению времени в данном примере это 12.00 и close_all_orders = 0 продолжать торговлю!

## Kasander — 2017-09-13 20:45

> Цитата (mobidik):
> **PavlovTrade** а с чего Вы решили, что он перерисовывает, подсматривает в будущие и не должен отображать два последних бара? Рекомендую ознакомиться в справке с таймсериями и направлением счета.
>
> **Kasander**, индюк не рисует, за исключением текущего бара, т.е., ведет себя как обычная машка. Рефрешер ему не нужен, в коде была не доработка, видимо, автор индюка лучше знаком с МТ5, нежели с МТ4, забирай:

Моби спасибо! Прям не ожидал что в виду недавней ситуации ты мне поможешь. Ну ты просто ЧЕЛОВЕЧИЩЕ.
Следующую просьбу адресую наверно не тебе, так как у меня и так должок перед тобой... 
Хочу на основе этого Smooth Price построить JMA_Star Lite.
Ну то есть взять JMA_Star Light, убрать из него Ценовые Данные и вместо них подставить Данные Красной Линии Smooth Price.
**Получится Smooth Price_JMA StarLigth.** Есть кто-нибудь кто поможет это сделать?

## Иван_74 — 2017-09-14 22:02

**кто-нибудь может вставить в советник мартингейл?**

Хочу протестировать советника, с функцией мартингейла, помогите:)

## magistr91 — 2017-09-15 11:25

Привет. Прошу прикрутить к индикатору JMA_StarLight Параметр "First Indicator Data" для того что бы его можно было бы навешивать к другим Машкам на Графике

## DomovenokBrest — 2017-09-15 11:30

> Цитата (magistr91):
> Привет. Прошу прикрутить к индикатору JMA_StarLight Параметр "First Indicator Data" для того что бы его можно было бы навешивать к другим Машкам на Графике

Так он и так навешиваетися.

## magistr91 — 2017-09-15 11:33

> Цитата (DomovenokBrest):
> Так он и так навешиваетися.

Я не знаю как это сделать- можешь разьяснить пожалуйста.

## magistr91 — 2017-09-15 12:19

> Цитата (DomovenokBrest):
> Так он и так навешиваетися.

Я не вижу где там у JMA_StarLigth Параметр "First Indicator Data

## tvv_forex — 2017-09-15 13:54

> Цитата (magistr91):
> Я не знаю как это сделать- можешь разьяснить пожалуйста.

Это можно сделать только для индикаторов, которые находятся в отдельном окне (подвале).

## PaulFusioN — 2017-09-15 14:31

Всем привет. Кто то может помочь с советником **Setka Light v11**. У меня есть рабочая версия, но только для демо счета. Поставил его на реал, просит серийный номер.

## Tepih — 2017-09-15 14:49

PaulFusioN
Есть такая версия. Не проверял:

## Eva FX — 2017-09-15 17:42

Ребята, есть у кого-нибудь советник (контролер) или скрипт для следующей задачи?
Ставим любой советник в пять окон на разные пары. Как только советник открывает позицию, то советник контролер запрещает советникам в других окнах открывать позиции, пока первый советник не закроет свои позиции. Надеюсь понятно объяснила. очень нужно, помогите.

## PavlovTrade — 2017-09-15 19:22

> Цитата (mobidik):
> **PavlovTrade** а с чего Вы решили, что он перерисовывает, подсматривает в будущие и не должен отображать два последних бара? Рекомендую ознакомиться в справке с таймсериями и направлением счета.

К тому что явного указания на порядок расчета в нем не было. Не надо считать своих колег дураками на столько что посылаете читать справку.
От того что вы поменяли порядок расчета изменилось вообще все. Т.е. вы не исправили ситуацию и сделали совершенно другой индикатор.
Красный - оригинал, Белый - ваш.

## Kasander — 2017-09-15 20:33

**PavlovTrade** Не могу понять в чём выражается Перерисовка Красной Линии? Ну то есть я спрашиваю с точки зрения визуального наблюдения. Я вот смотрю за ней на Минутных Барах и вижу что как отрисовало так и показывает. И ничего патом не меняется....
Я не понимаю в чём выражается на деле эта перерисовка? На моих глазах ничего не происходит...

## mobidik — 2017-09-15 21:35

> Цитата (PavlovTrade):
> К тому что явного указания на порядок расчета в нем не было.

А это что тогда по Вашему:
   ArraySetAsSeries(ExtBuffer_MA,true);
   ArraySetAsSeries(ExtBuffer_EMA,true);
   ArraySetAsSeries(ExtBuffer_CF,true);

> Цитата (PavlovTrade):
> Не надо считать своих коллег дураками на столько что посылаете читать справку.

Так я никого и не считаю "дураками", это только Ваше мнение/умозаключение...
А читать справку никогда лишним не будет, сам заглядываю, всего помнить/знать не к чему - главное, что нужно знать где можно быстро найти ответ на нужный вопрос, вот тут справка в первую очередь.

> Цитата (PavlovTrade):
> От того что вы поменяли порядок расчета изменилось вообще все. Т.е. вы не исправили ситуацию и сделали совершенно другой индикатор.
> Красный - оригинал, Белый - ваш.

Да, изменилось. Но тут скорее всего, вопрос к автору индюка, т.к. ф-ция CalculateCF данного индюка начинается с:
   int    i,limit;
//--- first calculation or number of bars was changed
   if(prev_calculated==0)
     {
      limit=ext_period_MA+begin;
      for(i=begin;i<limit;i++)
         ExtBuffer_CF=ExtBuffer_EMA;
     }
   else limit=prev_calculated-1;
//--- main loop
   for(i=limit;i<rates_total && !IsStopped();i++)
     {
       ....

Т.е., при первом проходе, в момент старта, у нас всегда prev_calculated = 0, а rates_total равно значению доступных баров. После первого прохода prev_calculated = rates_total, например, доступно 5000 баров, тогда limit станет равным 4999. А теперь смотрим на цикл: куда считаем? Имеем: 
for(i=4999; i<5000 && !IsStopped();i++)
Вопрос: а что, новый бар имеет индекс 5000? То откуда и куда считаем, какое направление индексации?
Поэтому, i-1 не означает, что заглядывает в будущие, в данном случае - настоящие.

PS.
да, можно сделать, что будет один в один, например вот так:

  int    i,limit;
//--- first calculation or number of bars was changed
   
   prev_calculated=0;

   if(prev_calculated==0)
     {
      limit=ext_period_MA+begin;
      for(i=begin;i<limit;i++)
         ExtBuffer_CF=ExtBuffer_EMA;
     }

Но в таком случае индюк будет пересчитывать всю историю на каждом тике, что в свою очередь будет нагружать терминал или переписать всю ф-цию, применив расчет как в таймсерии, но я не знаю как все изначально было задумано автором, а Вы знаете?

К тому же, Вы даже не удосужились проверить индюка на перерисовку хотя бы на М1...

## PavlovTrade — 2017-09-15 22:19

> Цитата (mobidik):
> К тому же, Вы даже не удосужились проверить индюка на перерисовку хотя бы на М1...

не на м1 ни на других ТФ оригинальный индюк ни то что не перерисовывается, он вообще ничего не делает. красная результирующая линия не рисуется на всех новых барах.

> Цитата (mobidik):
> Да, изменилось. Но тут скорее всего, вопрос к автору индюка.
> но я не знаю как все изначально было задумано автором, а Вы знаете?

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

## PavlovTrade — 2017-09-15 22:39

> Цитата (Kasander):
> **PavlovTrade** Не могу понять в чём выражается Перерисовка Красной Линии? Ну то есть я спрашиваю с точки зрения визуального наблюдения. Я вот смотрю за ней на Минутных Барах и вижу что как отрисовало так и показывает. И ничего патом не меняется....
> Я не понимаю в чём выражается на деле эта перерисовка? На моих глазах ничего не происходит...

Смотрите как получается, простым языком постараюсь. Индикаторы обсчитывают бары и на каждом пишут свое значение. Между значениями индикатор дорисовывает кривые линии, вот вы и видите их на графике..

В классическом варианте для МТ4 в обсчете баров текущий бар это 0. а самый последний в истории при допустим 500 барах будет иметь номер 499. Индикатор от 499 до 0 обсчитает все бары. 
Но что мы видим в коде, он при расчете использует значение баров i-2 и i-1 , т.е. например при расчете 200й свечи он будет брать значение свечей 198 и 199. т.е. будущих свечей, что неминуемо приведет к перерисовке, о чем я вам и сообщил. 

В варианте для МТ5 в обсчете баров  текущий бар это 499 (при 500 баров в истории) а самый последний в истории будет иметь индекс 0.
mobidik предположил что в индикаторе изначально хотели применить именно такой вариант обсчета и сделал так. таким образом i-2 и i-1 в формулах становится нормальным, это заглядывание в прошлое а не в будущее. Но индикатор теперь полностью изменился, сравнительный скриншот я прикреплял выше, он показывает совсем по другому относительно того что было.

Итого что имеем:
1) вариант который прислал mobidik, но на истории значения индикатор совсем другие (смотрите скриншот).
2) вариант с "рефрешером" который будет перерисовывать последние 2 закрытые свечи.

## К-о-л-я-н-ы-ч — 2017-09-15 22:51

> Цитата (Tepih):
> PaulFusioN
> Есть такая версия. Не проверял:

Можно попросить описание переменных, если конечно это возможно. 
Буду очень признателен.
Спасибо.

## mobidik — 2017-09-15 23:06

> Цитата (PavlovTrade):
> не на м1 ни на других ТФ оригинальный индюк ни то что не перерисовывается, он вообще ничего не делает. красная результирующая линия не рисуется на всех новых барах.

А что мешает набросить рефрешер на график с целью проверить свои подозрения об перерисовке?

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

Так Вы и ничего не предложили вообще, только свои выводы *(все обхаяли, мягко говоря)*, которые оказались ошибочными. Лучше делать хоть что-то и учится на своих ошибках, нежели безосновательно утверждать то, чего нет.

На этом, считаю, вопрос закрыт, я Вас услышал.

## PavlovTrade — 2017-09-16 02:12

> Цитата (mobidik):
> Лучше делать хоть что-то и учится на своих ошибках, нежели безосновательно утверждать то, чего нет.

Теперь вы научились тому что изменение логики индикатора приводит к полному изменнеию его графической состовляющей. ;)

Заглядывание в будущее и перерисовка в логике индикатора который отправил человек есть. Логику трогать он не просил.

## FxGuruBg — 2017-09-16 11:58

Привет Всем!
Помогите поправить, выходят предупреждений!
Спасибо!

---

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