Запуск сервиса из эксперта или индикатора

 

Добрый день друзья по увлечению!

Есть некий сервис ,  все что знаю о сервисах - сервисы стартуют сразу при запуске MetaTrader5 выполняется  код функции void OnStart() , и если в коде нет циклов то выполнение завершается.

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

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

Кто то может подсказать есть ли возможность запускать таким образом сервис ?


p.s.

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

 

А зачем такое извращение, стесняюсь спросить…

Может проще сделать класс или ещё проще просто функцию?

Ведь смысл сервиса в том, что он работает вне графика… А если советник работает на графике, то и смысл в сервисе отпадает.

 
Alexey Viktorov #:

А зачем такое извращение, стесняюсь спросить…

Может проще сделать класс или ещё проще просто функцию?

Ведь смысл сервиса в том, что он работает вне графика… А если советник работает на графике, то и смысл в сервисе отпадает.

Привет Алексей спасибо за отклик.

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

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

        Допустим есть некие сервисы , которые хочется запускать из разных ( экспертов скриптов советников ).

Столкнулся со следующим ограничением ,  к примеру из индикаторов нельзя запускать функцию WebRequest, а из сервиса можно.

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

Запуск сервисов интересует не только из за  WebRequest , в принципе есть ( Еретические мысли , которые не вяжутся с текущей религией)  мысли создать набор сервисов, которые периодически хотелось бы вызывать.


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

 
Yuriy Zaytsev #:

Привет Алексей спасибо за отклик.

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

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

        Допустим есть некие сервисы , которые хочется запускать из разных ( экспертов скриптов советников ).

Столкнулся со следующим ограничением ,  к примеру из индикаторов нельзя запускать функцию WebRequest, а из сервиса можно.

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

Запуск сервисов интересует не только из за  WebRequest , в принципе есть ( Еретические мысли , которые не вяжутся с текущей религией)  мысли создать набор сервисов, которые периодически хотелось бы вызывать.


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

Видится в данном случае работа функции сервиса по внешнему флагу. Сервис запущен всегда, ничего не делает без разрешения. А разрешение получает извне по флагу, который в нужный момент устанавливает внешняя программа - скрипт, советник, индикатор... 
 

более интесует запуск скриптов из советников.

но увы сие невозможно

 
Maxim Kuznetsov #:

более интесует запуск скриптов из советников.

но увы сие невозможно

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

1) сервис делаем в цикле и в цикле читаем допустим какой то файл ( мне уже не нравится постоянно читать какой то файл - с учетом что событие может наступить раз в два дня )

2)  прочитав событие делаем в сервисе что то 


А может разработчики как то реализуют функционал  запуска сервиса ?

И следующих версиях добавят функцию - работающую из скриптов советников индикаторов - которая будет запускать выбранный сервис.

 
Artyom Trishkin #:
Видится в данном случае работа функции сервиса по внешнему флагу. Сервис запущен всегда, ничего не делает без разрешения. А разрешение получает извне по флагу, который в нужный момент устанавливает внешняя программа - скрипт, советник, индикатор... 

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

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

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

     Но хорошо, допустим скрипя зубами делаю такой вариант т.к. другого пока нет.

Вопрос по флагу:  - что за флаг  ? как его передать из индикатора скрипта советника в  сервис ? что предлагается ? файл ? или может есть что то  менее ресурсоемкое ?

 
Maxim Kuznetsov #:

более интесует запуск скриптов из советников.

но увы сие невозможно

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

ещё из несбыточных мечт - любой(но штатный) способ передать внешнее событие в МетаТрейдер. Чтобы не колотить опросы (баз/файлов/сокетов) постоянно в цикле, а получить например в OnChartEvent id=CHARTEVENT_EXTERNAL и среагировать

 
Yuriy Zaytsev #:
Вопрос по флагу:  - что за флаг  ? как его передать из индикатора скрипта советника в  сервис ? что предлагается ? файл ? или может есть что то  менее ресурсоемкое ?
Глобальные переменные терминала GlobalVariableSet , те которые тянитолкай между атомик и tsv, которые всё равно опрашивать в цикле и ещё прокручивают дырку на диске если не temporary.
 
Maxim Kuznetsov #:
Глобальные переменные терминала GlobalVariableSet , те которые тянитолкай между атомик и tsv, которые всё равно опрашивать в цикле и ещё прокручивают дырку на диске если не temporary.
Пожалуй это вариант , спасибо. 
 
Maxim Kuznetsov #:

более интесует запуск скриптов из советников.

но увы сие невозможно

Можно под видом советника, который удаляет себя при завершении работы -- https://www.mql5.com/ru/code/19003

Expert
Expert
  • www.mql5.com
Библиотека чтения/записи параметров произвольных советников.