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

ph2018

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

Cash2020

Активный участник
Здравствуйте подскажите ка убрать остатки изображения индикатора,в объектах нечего нет индикаторов нет ??
Я думаю Вам это поможет. Но вообще лучше почитать Справку к терминалу.
 

Вложения

  • Все.png
    Все.png
    112 КБ · Просмотры: 40

sergeysv

Активный участник
Приветствую)
Помогите, пожалуйста , функцию вылечить . Стала при переключении долго думать и три ошибки появились ...
if(id==CHARTEVENT_OBJECT_CLICK) {
string clickedChartObject=sparam;
int graphs=0;
long graph_id[100];
ENUM_TIMEFRAMES graph_tf[100];
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[graphs] = currChart;
graph_tf[graphs] = 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);
}
}
 

Вложения

  • 21-03-2023_1331.png
    21-03-2023_1331.png
    6,3 КБ · Просмотры: 12

drona007-ru

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

Cash2020

Активный участник
Приветствую)
Помогите, пожалуйста , функцию вылечить . Стала при переключении долго думать и три ошибки появились ...
C-подобный:
if(id == CHARTEVENT_OBJECT_CLICK)
  {
  string ls_clickedChartObject = sparam;
  int li_graphs = 0;
  long lia_graph[100];
  ENUM_TIMEFRAMES lia_graph_tf[100];
  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_graphs] = li_currChart; // записываем идентификатор графика в массив
      lia_graph_tf[li_graphs] = 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[li_cnt], "EURUSD", lia_graph_tf[li_cnt]) == false) // Меняем значения символа и таймфрейм указанного графика
        {
        Print("При постановке графика ", "произошла ошибка ", GetLastError());
        }
      }
      
    ObjectSetInteger(0, "G", OBJPROP_STATE, false); // отжимаем кнопку
    }
  }
Проверяйте.
 

Serg-Kamensk

Местный знаток
Я думаю Вам это поможет. Но вообще лучше почитать Справку к терминалу.
Спасибо за совет! (за много лет не разу не читал справку ( согласен упущение)) ИТОГ снос терминала и индикатора который так косячит ???
 

Alchu

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

Вложения

  • 444.png
    444.png
    111,3 КБ · Просмотры: 169

Cash2020

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

drona007-ru

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

Вложения

  • Orders_Map.ex4
    94,8 КБ · Просмотры: 32

sergeysv

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

Вложения

  • 21-03-2023_1628.png
    21-03-2023_1628.png
    4,9 КБ · Просмотры: 11

Cash2020

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

S.McDuck

Местный знаток

Вложения

  • 1Убрать всё.mq4
    1,6 КБ · Просмотры: 42

Cash2020

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

Вложения

  • Снимок.PNG
    Снимок.PNG
    88,3 КБ · Просмотры: 22

sergeysv

Активный участник
Смотрите, я тут на коленке склепал оболочку
вот эта оболочка отличается от первого варианта этим:
long li_currChart = -1, li_prevChart= ChartFirst();
и это только что видно....)) поэтому ошибок и нет...
Ну наверное Вы немного лукавите.
отнюдь.. привязать объект и добавить пару скобок и фсё работает ))
 

Serg-Kamensk

Местный знаток
Сергей, этот момент я называю условно "оставил после себя мусор". Ответственный программист всегда позаботиться о том, чтобы после удаления индикатора график был очищен от продуктов его деятельности. Если у Вас есть желание, выложите здесь индикатор и я посмотрю что там можно придумать.
2023-03-22_00-53-29.png
 

Вложения

  • 1.tpl
    5,1 КБ · Просмотры: 22
Последнее редактирование:

Cash2020

Активный участник

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

Вложения

  • Все.png
    Все.png
    112 КБ · Просмотры: 31
Последнее редактирование:

Serg-Kamensk

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

2023-03-22_09-34-43.png
 
Верх