Скрипт фильтрации сигналов в терминале по заданным критериям

 

Есть желание написать скрипт для поиска отфильтрованных сигналов по заданным критериям...

В‌ справочнике ,в помощь,имеется следующий код

void OnStart() 
  { 
//--- запрашиваем общее количество сигналов в базе 
   int total=SignalBaseTotal(); 
//--- цикл по всем сигналам 
   for(int i=0;i<total;i++) 
     { 
      //--- выбираем сигнал для дальнейшей работы 
      if(SignalBaseSelect(i)) 
        { 
         //--- получение свойств сигнала 
         long   id    =SignalBaseGetInteger(SIGNAL_BASE_ID);          // id сигнала 
         long   pips  =SignalBaseGetInteger(SIGNAL_BASE_PIPS);        // результат торговли в пипсах 
         long   subscr=SignalBaseGetInteger(SIGNAL_BASE_SUBSCRIBERS); // количество подписчиков 
         string name  =SignalBaseGetString(SIGNAL_BASE_NAME);         // имя сигнала 
         double price =SignalBaseGetDouble(SIGNAL_BASE_PRICE);        // цена подписки на сигнал 
         string curr  =SignalBaseGetString(SIGNAL_BASE_CURRENCY);     // валюта сигнала 
         //--- выводим все прибыльные бесплатные сигналы с ненулевым количеством подписчиков 
         if(price==0.0 && pips>0 && subscr>0) 
            PrintFormat("id=%d, name=\"%s\", currency=%s, pips=%d, subscribers=%d",id,name,curr,pips,subscr); 
        } 
      else PrintFormat("Ошибка выбора сигнала. Код ошибки=%d",GetLastError()); 
     } 
  }
 


 
На определённом этапе появилась проблема с получением информации о дате публикации выбранного сигнала
datetime time=StringToTime(string(SignalBaseGetInteger(SIGNAL_BASE_DATE_STARTED)));   // Дата начала мониторинга сигнала 
Переменная time возвращает текущее время сервера и жизнь как-будто замерла)))может кто-то подскажет ,что можно придумать здесь?
Документация по MQL5: Дата и время / TimeCurrent
Документация по MQL5: Дата и время / TimeCurrent
  • www.mql5.com
Дата и время / TimeCurrent - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Nikolay Gaylis:
На определённом этапе появилась проблема с получением информации о дате публикации выбранного сигналаПеременная time возвращает текущее время сервера и жизнь как-будто замерла)))может кто-то подскажет ,что можно придумать здесь?

long  SignalBaseGetInteger( 
   ENUM_SIGNAL_BASE_INTEGER     property_id     // идентификатор свойства 
   );
Функция возвращает тип Long , посмотрите какое значение она возвращает. long  и datetime это разные вещи.
 
Evgeny Belyaev:

Функция возвращает тип Long , посмотрите какое значение она возвращает. long  и datetime это разные вещи.

Я понимаю,что разные поэтому и переведено,как и учит mql в string-затем в datetime-вернулось TimeCurrent()...-вы нормально поняли вопрос?
 
Evgeny Belyaev:

Функция возвращает тип Long , посмотрите какое значение она возвращает. long  и datetime это разные вещи.

Если не трудно-попробуйте сами вызвать-может я туплю-но вроде там глюк конкретный!
 
Nikolay Gaylis:
На определённом этапе появилась проблема с получением информации о дате публикации выбранного сигналаПеременная time возвращает текущее время сервера и жизнь как-будто замерла)))может кто-то подскажет ,что можно придумать здесь?


скорее всего намудрили с переводом даты в стринг и потом из стринга в дату)

думаю так правильно:

datetime time=(datetime)SignalBaseGetInteger(SIGNAL_BASE_DATE_STARTED);   // Дата начала мониторинга сигнала 
 
Taras Slobodyanik:


скорее всего намудрили с переводом даты в стринг и потом из стринга в дату)

думаю так правильно:

В данном случае

datetime time=(datetime)SignalBaseGetInteger(SIGNAL_BASE_DATE_STARTED);

выводит пустое значение ""

Print(TimeToStr(time));

Перевод в строку,а потом в дату-выводит хоть какой-то результат...Что бы к этому прийти -перепробовал разные конвертации...

datetime time=StringToTime(string(SignalBaseGetInteger(SIGNAL_BASE_DATE_STARTED)));

Время получаю(это уже неплохо)...-вот только текущее время сервера.

 
Ещё заметил,пока не нажмёшь вкладку "сигналы"-общее кол-во сигналов SignalBaseTotal()  возвращает НОЛЬ.Где Баг-репорт?)))
 
Nikolay Gaylis:
Ещё заметил,пока не нажмёшь вкладку "сигналы"-общее кол-во сигналов SignalBaseTotal()  возвращает НОЛЬ.Где Баг-репорт?)))

Это нормальное поведение вкладки "Сигналы", какое же поведение и со вкладкой "Маркет" - пока пользователь самостоятельно не кликнет внутри этих вкладок информация не подгрузится.
 
Vladimir Karputov:

Это нормальное поведение вкладки "Сигналы", какое же поведение и со вкладкой "Маркет" - пока пользователь самостоятельно не кликнет внутри этих вкладок информация не подгрузится.
Ну Вы только представьте,что если вкладка торговля не открыта и OrdersTotal() не считает...где же нормальность?
 
Nikolay Gaylis:
Ну Вы только представьте,что если вкладка торговля не открыта и OrdersTotal() не считает...где же нормальность?

Не передёргивайте - я Вам чётко сказал,  что такое поведение (подгрузка данных) касается только двух вкладок "Сигналы" и "Маркет". Вы можете использовать полученное знание или упереться рогом и продолжать бороться с ветряными мельницами.
Причина обращения: