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

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

---

## ph2018 — 2023-03-21 14:26

> Цитата (drona007-ru):
> Всем доброго времени суток. Программисты с золотыми руками, предлагаю доработать индикатор и превратить его из перекупленности/перепроданности в индикатор дивергенций.  Дивергенции искать только выше или ниже уровней 70 и 30. Уровни меняются в настройках. Скрины прилагаю. Нужно чтобы рисовал линии диверов на графике и в подвале, стрелка и алерт. Сигнал подается на 1-3 баре (можно менять в настройках) Ну и чтобы не рисовал. И будет всем грааль))

Поддерживаю идею
А лучше, чтобы рисовал, или в настройках можно было включить или выключить отображение дивера, Дивергенции в зонах перекупленности/перепроданности в зависимости от уровней, Так как каждый использует свои.

## Cash2020 — 2023-03-21 14:33

> Цитата (Serg-Kamensk):
> Здравствуйте подскажите ка убрать остатки изображения индикатора,в объектах нечего нет индикаторов нет ??

Я думаю Вам это поможет. Но вообще лучше почитать Справку к терминалу.

## sergeysv — 2023-03-21 14:39

Приветствую)
Помогите, пожалуйста , функцию вылечить . Стала при переключении долго думать и три ошибки появились ...
 if(id==CHARTEVENT_OBJECT_CLICK) {
    string clickedChartObject=sparam;     
     int               graphs=0;
      long              graph_id;
      ENUM_TIMEFRAMES   graph_tf;
      long currChart=-1,prevChart; 
      int i, limit=100;    
  if(clickedChartObject=="G") {
   while(true) { 
            if(currChart==-1) currChart=ChartFirst();
               else currChart = ChartNext(prevChart);
            if(currChart<0) break;
            prevChart=currChart;
            graph_id              = currChart;
            graph_tf              = ChartPeriod(currChart);
            graphs++;
            if(graphs>=100) break;
            }                  
         for(i=0;i<graphs;i++) {
            ChartSetSymbolPeriod(graph_id*,"EURUSD",graph_tf);
            }
        ObjectSetInteger(0,"G",OBJPROP_STATE,false);
   }
}*

## drona007-ru — 2023-03-21 14:40

> Цитата (ph2018):
> Поддерживаю идею
> А лучше, чтобы рисовал, или в настройках можно было включить или выключить отображение дивера, Дивергенции в зонах перекупленности/перепроданности в зависимости от уровней, Так как каждый использует свои.

Неплохой индикатор должен получиться. Все зависит от того, возьмутся делать или нет)

## Cash2020 — 2023-03-21 15:13

> Цитата (sergeysv):
> Приветствую)
> Помогите, пожалуйста , функцию вылечить . Стала при переключении долго думать и три ошибки появились ...
> 
```
if(id == CHARTEVENT_OBJECT_CLICK)
>   {
>   string ls_clickedChartObject = sparam;
>   int li_graphs = 0;
>   long lia_graph;
>   ENUM_TIMEFRAMES lia_graph_tf;
>   long li_currChart = -1, li_prevChart;
>   int li_cnt;
>
>   if(ls_clickedChartObject == "G") // шелкнули мышкой по обьекту (кнопка с именем "G")
>     {
>     // цикл перебора всех открытых графиков
>     while(!IsStopped())
>       {
>       if(li_currChart == -1)
>         li_currChart = ChartFirst(); // находим идентификатор первого графика терминала
>       else
>         li_currChart = ChartNext(li_prevChart);
>
>       if(li_currChart < 0) // список графиков закончился - прерываем цикл
>         break;
>
>       li_prevChart = li_currChart; // здесь будет идентификатор предыдущего графика
>       lia_graph = li_currChart; // записываем идентификатор графика в массив
>       lia_graph_tf = ChartPeriod(li_currChart); // записываем таймфрейм графика в массив
>       li_graphs++; // увеличиваем счетчик цикла
>
>       if(li_graphs >= 100) // можем сохранить не более 100 графиков
>         break;
>       }
>
>     for(li_cnt = 0; li_cnt < li_graphs; li_cnt++)
>       {
>       if(ChartSetSymbolPeriod(lia_graph, "EURUSD", lia_graph_tf) == false) // Меняем значения символа и таймфрейм указанного графика
>         {
>         Print("При постановке графика ", "произошла ошибка ", GetLastError());
>         }
>       }
>
>     ObjectSetInteger(0, "G", OBJPROP_STATE, false); // отжимаем кнопку
>     }
>   }
```

Проверяйте.

## Serg-Kamensk — 2023-03-21 15:57

> Цитата (Cash2020):
> Я думаю Вам это поможет. Но вообще лучше почитать Справку к терминалу.

Спасибо за совет! (за много лет не разу не читал справку ( согласен упущение)) ИТОГ  снос терминала и индикатора который так косячит ???

## Alchu — 2023-03-21 15:58

> Цитата (Cash2020):
> **Правильно заданный вопрос - 70% успешного ответа.**
> Вы показали кусок экрана без необходимых данных, поэтому остаетесь без решения проблемы.

ОК! Скидываю полный экран. Разговор про индикатор "KH_Trade Monitor v2_corr". Вы его демонстрировали, как сделанный. Вопрос: почему индюк даёт один показатель прибыли, а терминал другой? Надеюсь, что вопрос понятен.

## Cash2020 — 2023-03-21 16:07

> Цитата (Serg-Kamensk):
> Спасибо за совет! (за много лет не разу не читал справку ( согласен упущение)) ИТОГ  снос терминала **и индикатора который так косячит** ???

Сергей, этот момент я называю условно "оставил после себя мусор". Ответственный программист всегда позаботиться о том, чтобы после удаления индикатора график был очищен от продуктов его деятельности. Если у Вас есть желание, выложите здесь индикатор и я посмотрю что там можно придумать.

## drona007-ru — 2023-03-21 17:33

> Цитата (Alchu):
> ОК! Скидываю полный экран. Разговор про индикатор "KH_Trade Monitor v2_corr". Вы его демонстрировали, как сделанный. Вопрос: почему индюк даёт один показатель прибыли, а терминал другой? Надеюсь, что вопрос понятен.

Держи такой

## sergeysv — 2023-03-21 17:40

> Цитата (Cash2020):
> Проверяйте.

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

## Cash2020 — 2023-03-21 17:45

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

Сергей, ну вот даже не знаю... Ну почему бы Вам просто не выложить код, чтобы тот кто понимает в этом мог Вам помочь? Так будет не проще? Как Вы думаете?

## S.McDuck — 2023-03-21 17:49

> Цитата (Serg-Kamensk):
> Здравствуйте подскажите ка убрать остатки изображения индикатора,в объектах нечего нет индикаторов нет ??

Это скрипт. Просто кидай на график и он уберёт всё лишнее.

## sergeysv — 2023-03-21 17:54

> Цитата (Cash2020):
> Как Вы думаете?

думаю, что это и есть весь код ) ))

## Cash2020 — 2023-03-21 18:17

> Цитата (sergeysv):
> думаю, что это и есть весь код ) ))

Ну наверное Вы немного лукавите. В таком виде, как я Вам его давал Вы его не сможете запустить на исполнение. Ну да ладно, хозяин-барин. Чтобы ко мне не было претензий. Смотрите, я тут на коленке склепал оболочку к коду, ну чтобы можно было запустить. у меня ошибок нет. Совсем. Просто 0.

## sergeysv — 2023-03-21 18:42

> Цитата (Cash2020):
> Смотрите, я тут на коленке склепал оболочку

вот эта оболочка отличается от первого варианта этим:
 long li_currChart = -1, li_prevChart= ChartFirst();
и это только что видно....)) поэтому ошибок и нет...

> Цитата (Cash2020):
> Ну наверное Вы немного лукавите.

отнюдь..  привязать объект и добавить пару скобок и фсё работает ))

## Serg-Kamensk — 2023-03-21 22:54

> Цитата (Cash2020):
> Сергей, этот момент я называю условно "оставил после себя мусор". Ответственный программист всегда позаботиться о том, чтобы после удаления индикатора график был очищен от продуктов его деятельности. Если у Вас есть желание, выложите здесь индикатор и я посмотрю что там можно придумать.

## drona007-ru — 2023-03-21 23:23

> Цитата (Serg-Kamensk):
>

Кликаешь по каждой надписи 2 раза, delete, затем заново сохраняешь шаблон и будет тебе счастье)

## Cash2020 — 2023-03-21 23:51

> Цитата (Serg-Kamensk):
>

> Цитата:
>

Вот смотрите. Я Вам давал скрин из мануала, где написано **как это сделать**. Отметил это место красным прямоугольником. Потом Вы говорили что прочитаете справку... Ну да ладно... Повторю еще раз...
Нажимаем на графике комбинацию клавиш на клавиатуре Ctrl+B или, если хотите щелкаем правой кнопкой мышки на графике и в появившемся меню выбираем пункт "Список обьектов". Нажимаем на него левой кнопкой мышки и у Вас появляется окно, точно такое как и на скрине. Оно должно называться "Список обьектов". Справа у окна будет вертикальный ряд кнопок. Сверху вниз  - "Показать", "Свойства", "Удалить", "Все". Нажимаем кнопку  "Все" - эта команда выводит на экран те обьекты, которые имеют атрибут "hidden", т.е. они скрыты вначале. Вот они у Вас появились, и тогда уже Вы можете их выделять в списке щелчком левой кнопкой мышки и удалять нажатием кнопки "Удалить" с правой стороны окна.

## Serg-Kamensk — 2023-03-22 07:40

> Цитата (Cash2020):
> Вот смотрите. Я Вам давал скрин из мануала, где написано **как это сделать**. Отметил это место красным прямоугольником. Потом Вы говорили что прочитаете справку... Ну да ладно... Повторю еще раз...
> Нажимаем на графике комбинацию клавиш на клавиатуре Ctrl+B или, если хотите щелкаем правой кнопкой мышки на графике и в появившемся меню выбираем пункт "Список обьектов". Нажимаем на него левой кнопкой мышки и у Вас появляется окно, точно такое как и на скрине. Оно должно называться "Список обьектов". Справа у окна будет вертикальный ряд кнопок. Сверху вниз  - "Показать", "Свойства", "Удалить", "Все". Нажимаем кнопку  "Все" - эта команда выводит на экран те обьекты, которые имеют атрибут "hidden", т.е. они скрыты вначале. Вот они у Вас появились, и тогда уже Вы можете их выделять в списке щелчком левой кнопкой мышки и удалять нажатием кнопки "Удалить" с правой стороны окна.

## A.S.V. — 2023-03-22 08:08

> Цитата (Serg-Kamensk):
>

...

---

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