Чтение буферов индикатора, установленного на чарт - страница 10

 
[Удален]:

В Сервисдеске дали решение для MT5

Для MT4 вопрос открыт.

Здесь похоже как-то сделали (ссылку удаляют, не реклама, просто хочу узнать, как сделано, можно найти поиском файл MT2Binary_Auto.ex4 или  MT2Trading_Auto.ex4). Считывает номера, вид стрелок всех стрелочных буферов всех индикаторов на графике(это не проблема). А потом еще и сигналит по значению этих буферов, причем с настройками, отличными от дефолтных! Кто знает, как им удалось получить значения буферов в MT4? Никакие dll вроде не используются.

 

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

 

Да, через шаблоны можно понять, какие индикаторы есть на графике и какие у них буферы, параметры и их значения. Но как получить значения буферов? Вызывать iCustom через case в зависимости от числа параметров?

Sofiia Butenko:

есть пример у fxsaver у кодобазе

Пример для MT4? Не могу найти, можно ссылочку?

 
Ivan Titov:

Да, через шаблоны можно понять, какие индикаторы есть на графике и какие у них буферы, параметры и их значения. Но как получить значения буферов? Вызывать iCustom через case в зависимости от числа параметров?

Пример для MT4? Не могу найти, можно ссылочку?

Опечаталась в нике, но вы и так вкурсе. Вот пример который имела ввиду на советниках. 

Чтоб вызвать iCustom с разными параметрами нужно или прописать все варианты (самих настроек около 60 может быть и с разными типами), а их очень много и это не реально. Генерации кода  - такой возможности не нашла.  Возможно для индикатора с 5-10 параметрами можно прописать варианты, но это не универсальное решение. 

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

За указания советника спасибо, интересная информация. 

Expert
Expert
  • www.mql5.com
Все остальные файлы на данной странице описания библиотеки являются ее примерами/сценариями применения и не нужны для работы самой библиотеки. Возможности Примеры К описанию прикреплены примеры/сценарии ее использования. ExpertsRemove.mq5 ExpertsReopen.mq5 ChartsClose.mq5 ExpertLoader_Example.mq5 ExpertsChange_Example.mq5 Это самые...
 
Sofiia Butenko:

Чтоб вызвать iCustom с разными параметрами нужно или прописать все варианты (самих настроек около 60 может быть и с разными типами), а их очень много и это не реально. 

Да, уже сделал такую пирамиду Майя. Параметры можно все строковые передавать - понимает. Не так долго оказалось, с учетом того, что у сервисдеска зимой снега не допросишься, не говоря уже о ChartIndicatorGet и CopyBuffer в MT4.

Однако с параметрами больше 60 не получится, сочувствую.

 
Ivan Titov:

Параметры можно все строковые передавать - понимает. 

Но не совсем корректно - при каждом вызове из строковыми параметрами происходит инициализация индикатора, а отличии от того если вызывать с соответствующими типами.

Вот сравнение значений индикатора с разным заданием параметров. В самом индикаторе вставлен алерт на инициализацию и удаление. 

int OnInit(){
   
   for(int i=0;i<3 ;i++){
      double b0 =  iCustom(_Symbol, PERIOD_CURRENT, "_test_HMA",  15 , 3 , 0 ,  2.1,  "11", 0, i);  
      double b1 =  iCustom(_Symbol, PERIOD_CURRENT, "_test_HMA", "15","3","0", "2.1", "22", 0, i);  
      Alert(i+" --> "+DoubleToString(b0,_Digits)+" - "+DoubleToString(b1,_Digits));}
      
  return(INIT_FAILED);}

и получается вот так 


 
Sofiia Butenko:

Но не совсем корректно - при каждом вызове из строковыми параметрами происходит инициализация индикатора, а отличии от того если вызывать с соответствующими типами.

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

 
int OnInit(){
   
   for(int i=0;i<3 ;i++){
      double b0 =  iCustom(_Symbol, PERIOD_CURRENT, "_test_HMA",  15 , 3 , 0 ,  2.1,  "11", 0, i);  
      double b1 =  iCustom(_Symbol, PERIOD_CURRENT, "_test_HMA", "15","3","0", "2.1", "22", 0, i);  
      Alert(i+" --> "+DoubleToString(b0,_Digits)+" - "+DoubleToString(b1,_Digits));}
      
  return(INIT_FAILED);}


Можете приложить код индикатора _test_HMA ?
Дело в том, что я использую ООП при разработке индикатора.
И в тестере стратегий буфер индикатора выдает не верные значения дальше чем 3-ий бар.
То есть инициализация индикатора в тестере стратегий происходит не верно.
Я ищу ПРАВИЛЬНЫЙ шаблон индикатора с применением ООП 
Если кто видел статью - поделитесь пожалуйста. Так как у меня ООП-индикаторы НЕ РАБОТАЮТ корректно в тестере.