ID события Windows после успешной комплияции программы в MetaTrader5

 

Есть несколько каталогов MetaTrader5(4), один из которых "главный" - в котором происходит написание и отладка комплекса программ для торгов, и "ведомые", которые служат для проверки этих программ.

Задача: после успешной компиляции должна автоматически запускаться программа, копирующая все файлы ex5 из "главного" MT в соответствующие каталоги с другими MT.

Предположение: В Windows существуют триггеры, по которым можно сформировать задачу в Планировщике задач, но задача может быть сформирована по событию с конкретным ID. В Журналах просмотра событий существует возможность привязать задачу к событию.

Вопрос: как найти событие, которое  могло бы быть триггером в Планировщике?

 
Roman Luzin:

Есть несколько каталогов MetaTrader5(4), один из которых "главный" - в котором происходит написание и отладка комплекса программ для торгов, и "ведомые", которые служат для проверки этих программ.

Задача: после успешной компиляции должна автоматически запускаться программа, копирующая все файлы ex5 из "главного" MT в соответствующие каталоги с другими MT.

Предположение: В Windows существуют триггеры, по которым можно сформировать задачу в Планировщике задач, но задача может быть сформирована по событию с конкретным ID. В Журналах просмотра событий существует возможность привязать задачу к событию.

Вопрос: как найти событие, которое  могло бы быть триггером в Планировщике?

А просто запускать каждые 1-5 минут скрипт/программу, которые будут проверять наличие и "свежесть" файлов?

 
Roman Luzin:

Есть несколько каталогов MetaTrader5(4), один из которых "главный" - в котором происходит написание и отладка комплекса программ для торгов, и "ведомые", которые служат для проверки этих программ.

Задача: после успешной компиляции должна автоматически запускаться программа, копирующая все файлы ex5 из "главного" MT в соответствующие каталоги с другими MT.

Предположение: В Windows существуют триггеры, по которым можно сформировать задачу в Планировщике задач, но задача может быть сформирована по событию с конкретным ID. В Журналах просмотра событий существует возможность привязать задачу к событию.

Вопрос: как найти событие, которое  могло бы быть триггером в Планировщике?

Планировщик точно не подойдет, это не система реального времени. И все равно придется писать внешнюю прогу, проще на C#. Я бы сделал так:

1. Висит прога на шарпе, раз в секунду мониторит время создания ex5.

2. Если время изменилось, копирует в ЦРУ ).

 

Alexey Volchanskiy #:

2. Если время изменилось, копирует в ЦРУ ).

Это-то в винду и так встроено.

 
JRandomTrader #:

Это-то в винду и так встроено.

Это была злобная шутка коварства ))

 
nncron
 
Roman Luzin:

Есть несколько каталогов MetaTrader5(4), один из которых "главный" - в котором происходит написание и отладка комплекса программ для торгов, и "ведомые", которые служат для проверки этих программ.

Задача: после успешной компиляции должна автоматически запускаться программа, копирующая все файлы ex5 из "главного" MT в соответствующие каталоги с другими MT.

Предположение: В Windows существуют триггеры, по которым можно сформировать задачу в Планировщике задач, но задача может быть сформирована по событию с конкретным ID. В Журналах просмотра событий существует возможность привязать задачу к событию.

Вопрос: как найти событие, которое  могло бы быть триггером в Планировщике?

неверно поставлена задача...

когда готовы отправить пачку программ на ведомые - нажимаете кнопку, по которой:

* происходит контрольная сборка всего "комплекса"

* заводится тег (ветка/метка) в системе контроля версий

* делается архив и отправляется на ведомые.

остаётся создать кнопку и соотв. скрипт. Но тут раздолье, от nmake из поставки VC, его более нормальные аналоги, PowerShell или Python - на вкус и цвет

 

Простите, что долго не отвечал!...

Программа копирования, как я понимаю, должна запускаться в отдельном (параллельном) потоке, чтобы не замедлять основные для торгов действия. Полагаю, что эта прога - скрипт на командном языке Windows (js, wbs, cmd, bat), т.к. на них проще добраться до сетевых возможностей Windows. (Правда, если программер знаком с другими реализациями, ему м.б. проще на другом языке). Скрипт по заданным рабочим группам (доменам, но думаю, что в одноранговой домашней сети доменов нет) опрашивает сетевую систему на наличие включённых компьютеров, затем опрашивает в каждом найденном компьютере диски C: и D: (думаю, других дисков в рабочей системе компьютеров в программными папками не будет), затем проверяет наличие в папках "%ProgramFiles%" и "%ProgramFiles(x86)%" папок с программами MetaTrader и уже туда копирует все нужные файлы отдельно по папкам Experts Indicators Scripts Services Images Libraries Include Presets Profiles. Это те папки в каталоге MQL5(4), которые несут меняющиеся основные файлы комплекса программ торгов. Первые 3 папки объединены общим копированием по признаку ex5-файлов. Т.е. в этом потоке все движения ограничены папками в папке MQL5(4).

Хоть копирование (даже по сети) происходит быстро, но опросы сети занимают время, и в случае 13 папок MT (в моём случае) процесс копирования может быть в районе 1,5 минут, так что запускать каждые 1-5 минут скрипт, по-моему, не сложно, но слишком накладно для процессора, а в случае нескольких компов даже визуально будет неприятно. Мне кажется, если процесс будет происходить по триггеру успешной компиляции, это было бы удобнее!

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

На счёт последнего коммента - автоматизация с триггером успешной компиляции мне кажется более удобной, т.к., ну хотя бы в моём случае, правится одно из направлений проекта - Experts, Indicators или Script, и реакцию в разных условиях использования MetaTrader'ов, которые могут быть запущены у разных брокеров и на разных счетах и депозитах, было бы полезно получать сразу же после введения правок и без дополнительных нажатий других кнопок, кроме компиляции в основном проекте!

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

 
Roman Luzin:

Есть несколько каталогов MetaTrader5(4), один из которых "главный" - в котором происходит написание и отладка комплекса программ для торгов, и "ведомые", которые служат для проверки этих программ.

Задача легко решается Windows командой    mklink /D    где то даже статью видел про это

 
Roman Luzin:

Есть несколько каталогов MetaTrader5(4), один из которых "главный" - в котором происходит написание и отладка комплекса программ для торгов, и "ведомые", которые служат для проверки этих программ.

Задача: после успешной компиляции должна автоматически запускаться программа, копирующая все файлы ex5 из "главного" MT в соответствующие каталоги с другими MT.

Предположение: В Windows существуют триггеры, по которым можно сформировать задачу в Планировщике задач, но задача может быть сформирована по событию с конкретным ID. В Журналах просмотра событий существует возможность привязать задачу к событию.

Вопрос: как найти событие, которое  могло бы быть триггером в Планировщике?

Нужно настроить аудит доступа к нужным файлам ex5.

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

И планировщик сможет запустить по этому событию какую-то задачу.

 
Roman Luzin #:

Простите, что долго не отвечал!...

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

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

Среду разработки и среду тестирования необходимо создатвать в виде отдельных инстансов МТ5, не связанных с торговыми терминалами (в идельном случае расположить их на отдельном сервере); тогда никакого влияния на торговые процессы не происходит;

Вначале у меня было 2 операции, которые отжирали время после каждой компиляции  -  копирование и перезапуск; после того как я сделал копирование в виде набора команд в рамках простейщего *.bat это сократило затраты на копирование до 5 сек (кликнуть на файл) если перекомпилировался только основной ex5-файл, и до 30сек в *bat файле требуется изменить указатель на иной компонент системы. Доводить все до полного автоматизма не стал, но если бы делал это , то через упомянутый выше nncro.