Jump to content
  • entries
    8
  • comments
    68
  • views
    27,319

Полезные программы


kaif

4,522 views

МОНИТОРИНГ VPS-СЕРВЕРА

 

Идея этой технологии принадлежит Антону (AntFX).

Она у него родилась на ходу, в разговоре с Дмитрием Ранневым в его ветке, в которую я случайно зашел.

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

 

Распакуйте архивы. Там два советника, оба с исходным кодом на MQL4.

 

LiveVPS.zip

LiveVPSClient.zip

 

 

Один советник LiveVPS ставится на сервере. На любую пару.

Другой LiveVPSClient - на ту же пару на Вашем домашнем или рабочем компьютере.

Советник на сервере в минуту раз переставляет время экспирации отложенного ордера BUY LIMIT. Ордер расположен где-нибудь очень далеко от текущей цены и имеет комментарий, по которому советник отличает его от любых других ордеров.

А советник на клиентском компьютере проверяет в минуту раз время экспирации этого ордера.

 

Если все нормально, на клиентском компьютере в левом верхнем углу графика выводится надпись VPS OK.

Если что-то не так, вместо нее появляется красная надпись VPS Problem. Если указать звуковой файл, то можно подключить какую-нибудь сирену. :)

 

Зайдя в МТ4 с мобильного устройства, можно проверить, жив ли сервер, проверив время экспирации ордера вручную.

По умолчанию оно опережает текущее серверное время на 1 час.

Преимущество технологии в том, что раз в минуту проверяется одновременно все, что может нас беспокоить:

 

1. Жив ли VPS-сервер ?

2. Функционирует ли Метатрейдер на этом сервере ?

3. Не оборвалось ли соединение с торговым счетом ?

 

Я сам поставил эту технологию у себя, и уже не понимаю, как обходился без нее раньше. :) :) :)

 

blogentry-449705-0-43548300-1488997028.png

  • Upvote 1
  • Thanks 6

23 Comments


Recommended Comments

solandr

Posted

Спасибо за готовую реализации отличной идеи!

Следующим этапом развития данного проекта можно было бы назвать объединение на одном главном счёте информации с других терминалов МТ4, параллельно работающих на VPS.

Например на VPS работает 20 терминалов МТ4. Как получить этот общий статус VPS OK на одном каком-то выбранном счёте без открывания 20 терминалов и просматривая статусы на всех на них? Тут, я так понимаю, для обмена мониторинговой информации между терминалами можно идти либо по пути файловых операций, используя команды CMD, либо через обмен данными между терминалами через оперативную память. Примеры обмена данными между терминалами от других авторов у меня имеются. Если станете этим заниматься, то дам ссылки на первоисточники информации.

 

Также можно было бы уже сейчас быстро расширить отслеживание информации в рамках одного терминала по данным из работающего торгового советника. Например лично я отслеживаю такой параметр как риск на позицию, либо как вариант, размер лота позиций, задавая требуемое значение, а также 10% отклонение от него. Если размер лота (или риска) попадает в данный диапазон, то проверка риска успешна, если нет, то ПРОБЛЕМА, которую нужно решать в срочном порядке.

К необходимости такой проверки я пришёл только через 2,5 года торговли на чужие деньги, когда случился сбой терминала после автообновления. Сбой привёл к завышению лота в 5 раз!

На первый взгляд данная проверка кажется АБСОЛЮТНО БЕССМЫСЛЕННОЙ, так как автоматический советник ДОЛЖЕН САМ КОРРЕКТНО ОТСЛЕЖИВАТЬ РАЗМЕР ПОЗИЦИЙ, НО СБОЙ МОЖЕТ ОДНАЖДЫ СЛУЧИТЬСЯ И С НИМ!!! Поэтому такая проверка будет полезна уже сейчас в ДАННОЙ версии советника. Я разумеется могу всё что мне нужно допилить и самостоятельно, но лучше, если автор сделает следующую версию советника для развития данного отличного и ПОЛЕЗНОГО проекта на пользу всем заинтересованным трейдерам.

 

И ещё замечание. Мне кажется, что интервал в 1 минуту не всегда на практике может быть реализован, так как иногда ночью минутные бары могут пропускаться. На мой взгляд более актуальным был бы интервал проверок в 5 минут. Особенно, если учитывать дальнейшее развитие проекта в плане сбора информации с 20 терминалов на одном главном мониторинговом счёте, который отслеживается трейдером, и который вообще может быть специально выделенным ДЕМО счётом, на котором не будет кроме мониторинговых лимитников никакой реальной торговли.

 

Также при сборе инфы с 20 терминалов нужно учитывать различное время начала и окончания торговли у разных брокеров на неделе. А также возможно и какие-то иные технические особенности типа закрытия дня, когда бары могут пропускаться. Ну это уже детали для тех, кто реально станет этот проект двигать для себя далее.

 

Ссылку на данный проект размещу на своей одноимённой странице в контакте.

Link to comment
AntFX

Posted

Если 20 терминалов размещаются у Вас на одном VPS, нет никакой необходимости в CMD, т.к. у этих терминалов будет общая папка с файлами, открываются файлы в ней с помощью флага FILE_COMMON в  MQL. Там уже по желанию можно настроить слежение за любой информацией с каждого терминала. Период в 5 минут, действительно, более адекватен, чем 1 минута. Слежение за объемом позиций, уж извините, если Вы пишите кривые советники, или же подозреваете, что они могут оказаться кривыми, пишите такие проверки под себя, а не рекомендуйте всем подряд.

 

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

Link to comment

А у меня как-то само собой сложилось такое колхоз-решение:

  • регистрируемся на сервисе сигналов симплтрейдер.нет, 
  • скачиваем бесплатный советник, для копирования сделок на сервер
  • устанавливаем в любой терминал
  • далее, их система работает таким образом, что как только их сервер теряет связь с советником - в течение пары минут, прыг, письмо-уведомление на e-mail
Link to comment
solandr

Posted

 

 

Если 20 терминалов размещаются у Вас на одном VPS, нет никакой необходимости в CMD, т.к. у этих терминалов будет общая папка с файлами, открываются файлы в ней с помощью флага FILE_COMMON в MQL. Там уже по желанию можно настроить слежение за любой информацией с каждого терминала. Период в 5 минут, действительно, более адекватен, чем 1 минута. Слежение за объемом позиций, уж извините, если Вы пишите кривые советники, или же подозреваете, что они могут оказаться кривыми, пишите такие проверки под себя, а не рекомендуйте всем подряд.

Нет, я не занимаюсь разными глупостями в плане установок с нуля терминалов в систему. Когда у вас 20 советников, то проще заниматься копированием папок с установленными советниками из бэкапа, в которых всё есть, между разными компьютерами. Это удобно в плане восстановления системы с нуля после фатального выхода из строя железа, где они работают.

 

Слежение за объёмом позиций вызвано необходимостью управления чужими деньгами, поскольку я не теоретик этого дела, а практик. Разумеется слежение за объёмами позиций мало кому требуется. Тем кто пишет "некривые" советники оно разумеется ни к чему. Профессиональным писателям советников за деньги это точно не нужно.

Link to comment

Насчет точности во времени все уже сделано.

В имеющемся решении легко можно понизить точность с 1 минуты до 5 минут. Или до сколько хотите минут.

Достаточно изменить значение параметра ExpirationMinutes на клиенте.

По умолчанию там 59. А на сервере 60. Это соответствует "чувствительности к сбою" в 1 минуту.

Если установить на клиента 57, то чувствительность снизится до 3-х минут, так как статус VPS OK будет отображаться, пока при очередной проверке не окажется, что время экспирации ордера отстоит от текущего серверного времени  менее, чем на 57 минут.

 

Можно, наоборот, поднять чувствительность (используется при отладке), установив  на сервере и клиенте одинаковое значение ExpirationMinutes. А задержкой проверки управлять при помощи параметра SleepBeforeCheck, который задает время в миллисекундах.

 

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

 

Чтобы встроить отправку почты, достаточно в клиентский советник добавить

новый параметр:

 

extern bool   SendMailEnabled = true;

 

и в нужное место код вроде такого:

 

  if (TerminalInfoInteger(TERMINAL_EMAIL_ENABLED) && SendMailEnabled)
  {
    SendMail(StringConcatenate("VPS problem detected at ", TimeToStr(Time[0]));
  }

 

Правда для того чтобы это работало, нужно иметь SMTP-сервер и прописать его в настройках терминала MT4 на закладке "Почта" и разрешить там отправку почты, установив нужную галку.

Link to comment
AntFX

Posted

Нет, я не занимаюсь разными глупостями в плане установок с нуля терминалов в систему. Когда у вас 20 советников, то проще заниматься копированием папок с установленными советниками из бэкапа, в которых всё есть, между разными компьютерами. Это удобно в плане восстановления системы с нуля после фатального выхода из строя железа, где они работают.

Не понял, причем здесь установка "с нуля", и какая разница между установкой с нуля и из бэкапа в свете обсуждаемой темы ) Если папки COMMON нет, думаю, что она будет автоматически создана при первом запуске терминала. Так как в общих папках кроме прочего содержатся файлы обновления, а не дать пользователям самим решать, обновлять терминал до следующего билда или нет - это давний гештальт метаквотов.

Link to comment
AntFX

Posted

 

 

А у меня как-то само собой сложилось такое колхоз-решение:

Ну это называется - чесать правое ухо левой пяткой ))) 

Link to comment
solandr

Posted

Не понял, причем здесь установка "с нуля", и какая разница между установкой с нуля и из бэкапа в свете обсуждаемой темы ) Если папки COMMON нет, думаю, что она будет автоматически создана при первом запуске терминала. Так как в общих папках кроме прочего содержатся файлы обновления, а не дать пользователям самим решать, обновлять терминал до следующего билда или нет - это давний гештальт метаквотов.

Никакой папки COMMON я у себя поиском по всему компу не обнаружил. ОС - WinXP, запуск всех терминалов в режиме portable и с запретом автообновления. Последний раз обновлялся где-то летом прошлого года. ВСЕ УЧАСТВУЮЩИЕ в работе терминала файлы и папки находятся в папке, которая мне понятна, а не где попало в профилях с загадочным именем папки, имеющим на конце многоцифробуквенный мусор!

Link to comment
AntFX

Posted

Никакой папки COMMON я у себя поиском по всему компу не обнаружил. ОС - WinXP, запуск всех терминалов в режиме portable и с запретом автообновления. Последний раз обновлялся где-то летом прошлого года. ВСЕ УЧАСТВУЮЩИЕ в работе терминала файлы и папки находятся в папке, которая мне понятна, а не где попало в профилях с загадочным именем папки, имеющим на конце многоцифробуквенный мусор!

Боюсь, придется Вас разочаровать. В редакторе MetaEditor откройте меню "Файл" - "Открыть общую папку данных"...

Запрет автообновления - это вообще как? Поделитесь инсайдом. Насколько я знаю, это невозможно реализовать, сохраняя подключение к серверу ДЦ.

Link to comment
solandr

Posted

 

 

Запрет автообновления - это вообще как? Поделитесь инсайдом. Насколько я знаю, это невозможно реализовать, сохраняя подключение к серверу ДЦ.
Инсайд здесь: *** п. 9 правил форума *** Никому только больше не говорите, а иначе какой же это инсайд?
  • Thanks 1
Link to comment

 

 

Боюсь, придется Вас разочаровать. В редакторе MetaEditor откройте меню "Файл" - "Открыть общую папку данных"... Запрет автообновления - это вообще как? Поделитесь инсайдом. Насколько я знаю, это невозможно реализовать, сохраняя подключение к серверу ДЦ.

 

Возможно. У меня тоже везде уже больше, чем полгода запуск метатрейдера со /skipupdate, а на новом VPS еще и с /portable.

Спасибо Solandr-у! Научил. :)

Link to comment

Андрей, а насчет ограничений объема не лучше ли использовать тупо ограничение ИКП?

Эта же возможность есть. Или не у всех дилеров она есть?

Link to comment
AntFX

Posted

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

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

 

И тем не менее общая папка данных у всех терминалов должна присутствовать )

Link to comment
solandr

Posted

Андрей, а насчет ограничений объема не лучше ли использовать тупо ограничение ИКП?

Эта же возможность есть. Или не у всех дилеров она есть?

У меня может быть открыто больше, чем один ордер (например 3). По какому уровню ставить ИКП?

Link to comment

У меня может быть открыто больше, чем один ордер (например 3). По какому уровню ставить ИКП?

 

То есть Вас беспокоит именно ИКП на позицию, а не суммарное ИКП?

 

Я подумаю на этот счет, хотя это очень специфическое требование, и мне кажется, что можно встроить в сам рабочий советник некоторую (достаточно простую) процедуру, которая будет это раз в 5 минут проверять и высылать куда-то E-mail или даже грохать такую позицию самостоятельно.

Не уверен, что отдельный советник для такой простой цели будет востребован.

Link to comment
AntFX

Posted

грохать такую позицию самостоятельно.

А ещё лучше - сразу не открывать )) И как Вы правильно заметили - лучшая защита - установка макс УКП
Link to comment
AntFX

Posted

Кстати, все не так просто оказывается с лотами. Брокеры часто путают значения спецификаций символов, в частности, цены пункта, которая часто используется при вычислении величины лота. Особенно это актуально для металлов. Так что контролировать итоговый лот  нужно - либо выставлением максимального значения лота в зависимости от депо в советнике, либо ограничением УКП у торгового счета. Но в любом случае открывать не нужный Вам лот в советнике, в котором есть 1000 способов проверить размер лота до его открытия, чтобы его потом контролировать через сторонние программы - глупо.

Link to comment

Представьте себе ситуацию.

Есть советник. В него внесены изменения. В результате изменений в советник закралась дурацкая ошибка. Могущая привести в реале к критическому завышению объема. На тестах ошибка не выявляется.

 

Так вот запасной механизм защиты от такой ситуации никогда не помешает. Хотя я лично склонен считать такими механизмом УКП или же встроенный в советник собственный мониторинг. Который отлаживается единожды и навсегда. И ни при каких модификациях не затрагивается.

Link to comment
solandr

Posted

AntFx, я вас уже понял. Согласно вашим рекомендациям открывать неправильные лоты больше не буду. Правда для этого я буду использовать те методы, которые считаю наиболее корректными и надёжными (внешний аудит). Вообще-то всё что мне нужно я в состоянии спрограммировать самостоятельно без широкого обсуждения. Просто решил поделиться своими предложениями по улучшению продукта для массового​ юзера. Ну раз они не нужны/не актуальны, то значит не нужны.

Link to comment
AntFX

Posted

Есть советник. В него внесены изменения. В результате изменений в советник закралась дурацкая ошибка. Могущая привести в реале к критическому завышению объема. На тестах ошибка не выявляется.

Достаточно сделать "обертку" на функцию Lots и не вносить в неё никаких изменений. Там можно и ИКП проверять и все что угодно. Глупо открывать большой лот, закрывать его внешней программой, терять крупный спред, а заодно и портить на памме график ИКП

Link to comment
solandr

Posted

Kaif, бесполезно что-то доказывать человеку (AntFX), который пишет всегда идеально безошибочные советники, которые успешно работают и давно сделали его подпольным миллионером ;).

Link to comment
Rumpelstiltskin

Posted

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

Link to comment
AntFX

Posted

Представим, что отвалилась сеть, завис терминал, упал терминал. И пока не откроешь "домашний" терминал, о проблеме не узнаешь. 

Если нужна высокая степень надежности просто берется 2 разных ВПС которые вряд ли упадут одновременно, вместо домашнего компа...

Link to comment
Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...