Есть несколько каталогов MetaTrader5(4), один из которых "главный" - в котором происходит написание и отладка комплекса программ для торгов, и "ведомые", которые служат для проверки этих программ.
Задача: после успешной компиляции должна автоматически запускаться программа, копирующая все файлы ex5 из "главного" MT в соответствующие каталоги с другими MT.
Предположение: В Windows существуют триггеры, по которым можно сформировать задачу в Планировщике задач, но задача может быть сформирована по событию с конкретным ID. В Журналах просмотра событий существует возможность привязать задачу к событию.
Вопрос: как найти событие, которое могло бы быть триггером в Планировщике?
А просто запускать каждые 1-5 минут скрипт/программу, которые будут проверять наличие и "свежесть" файлов?
Есть несколько каталогов MetaTrader5(4), один из которых "главный" - в котором происходит написание и отладка комплекса программ для торгов, и "ведомые", которые служат для проверки этих программ.
Задача: после успешной компиляции должна автоматически запускаться программа, копирующая все файлы ex5 из "главного" MT в соответствующие каталоги с другими MT.
Предположение: В Windows существуют триггеры, по которым можно сформировать задачу в Планировщике задач, но задача может быть сформирована по событию с конкретным ID. В Журналах просмотра событий существует возможность привязать задачу к событию.
Вопрос: как найти событие, которое могло бы быть триггером в Планировщике?
Планировщик точно не подойдет, это не система реального времени. И все равно придется писать внешнюю прогу, проще на C#. Я бы сделал так:
1. Висит прога на шарпе, раз в секунду мониторит время создания ex5.
2. Если время изменилось, копирует в ЦРУ ).
Есть несколько каталогов 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'ов, которые могут быть запущены у разных брокеров и на разных счетах и депозитах, было бы полезно получать сразу же после введения правок и без дополнительных нажатий других кнопок, кроме компиляции в основном проекте!
Поэтому я и прошу помощи в нахождении события успешной компиляции, которое будет триггером для запуска описанного выше скрипта копирования.
Есть несколько каталогов MetaTrader5(4), один из которых "главный" - в котором происходит написание и отладка комплекса программ для торгов, и "ведомые", которые служат для проверки этих программ.
Задача легко решается Windows командой mklink /D где то даже статью видел про это
Есть несколько каталогов MetaTrader5(4), один из которых "главный" - в котором происходит написание и отладка комплекса программ для торгов, и "ведомые", которые служат для проверки этих программ.
Задача: после успешной компиляции должна автоматически запускаться программа, копирующая все файлы ex5 из "главного" MT в соответствующие каталоги с другими MT.
Предположение: В Windows существуют триггеры, по которым можно сформировать задачу в Планировщике задач, но задача может быть сформирована по событию с конкретным ID. В Журналах просмотра событий существует возможность привязать задачу к событию.
Вопрос: как найти событие, которое могло бы быть триггером в Планировщике?
Нужно настроить аудит доступа к нужным файлам ex5.
Тогда при изменении этих файлов, в журнале событий появится запись.
И планировщик сможет запустить по этому событию какую-то задачу.
Простите, что долго не отвечал!...
Программа копирования, как я понимаю, должна запускаться в отдельном (параллельном) потоке, чтобы не замедлять основные для торгов действия..
Решал для себя схожую задачу некоторое время назад, и вот что могу сказать по факту.
Среду разработки и среду тестирования необходимо создатвать в виде отдельных инстансов МТ5, не связанных с торговыми терминалами (в идельном случае расположить их на отдельном сервере); тогда никакого влияния на торговые процессы не происходит;
Вначале у меня было 2 операции, которые отжирали время после каждой компиляции - копирование и перезапуск; после того как я сделал копирование в виде набора команд в рамках простейщего *.bat это сократило затраты на копирование до 5 сек (кликнуть на файл) если перекомпилировался только основной ex5-файл, и до 30сек в *bat файле требуется изменить указатель на иной компонент системы. Доводить все до полного автоматизма не стал, но если бы делал это , то через упомянутый выше nncro.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть несколько каталогов MetaTrader5(4), один из которых "главный" - в котором происходит написание и отладка комплекса программ для торгов, и "ведомые", которые служат для проверки этих программ.
Задача: после успешной компиляции должна автоматически запускаться программа, копирующая все файлы ex5 из "главного" MT в соответствующие каталоги с другими MT.
Предположение: В Windows существуют триггеры, по которым можно сформировать задачу в Планировщике задач, но задача может быть сформирована по событию с конкретным ID. В Журналах просмотра событий существует возможность привязать задачу к событию.
Вопрос: как найти событие, которое могло бы быть триггером в Планировщике?