Обсуждение статьи "Методы дистанционного управления работой советников"

 

Опубликована статья Методы дистанционного управления работой советников:

Основным преимуществом торговых роботов является безустанная работа 24 часа в сутки на удаленном VPS сервере. Но иногда необходимо вмешаться в их работу в ручном режиме, а прямого доступа к серверу сейчас нет. Возможно ли управлять работой советника дистанционно? В данной статье предлагается один из вариантов управления роботами через внешние команды.

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

Но, к сожалению, далеко не все советники работают одинаково хорошо при любых рыночных ситуациях. В таких случаях приходится вручную управлять работой советников: включать и отключать их. Это легко сделать, когда пользователь находится рядом с терминалом. Но как быть, если у Вас нет быстрого доступа к терминалу с рабочим советником? В таких случаях хорошо бы иметь возможность дистанционного управления работой советника. Давайте рассмотрим один из возможных методов дистанционного управления советниками в терминале.

Автор: Dmitriy Gizlyk

 

Спасибо за статью. Отдельная благодарность, за ссылку на библиотеку изменения состояний эксперта. Работа через шаблоны - действительно очень оригинальное решение.  

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

Если у вас несколько счетов, то вы устанете везде ставить отложенники.

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

 
Sergey Likho:

Спасибо за статью. Отдельная благодарность, за ссылку на библиотеку изменения состояний эксперта. Работа через шаблоны - действительно очень оригинальное решение.  

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

Если у вас несколько счетов, то вы устанете везде ставить отложенники.

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

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

 
для удобства нашего использования сделаем все методы библиотеки публичными.
Можно использовать такой прием, чтобы не менять оригинальный исходник
#define private public
  #include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003
#undef private

#define STRING_END "\r\n"
#define EXPERT_BEGIN ("<expert>" + STRING_END)
#define EXPERT_END ("</expert>" + STRING_END)
#define EXPERT_NAME "name="


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

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


Этот код

      string temp=EXPERT::TemplateToString(i_chart,true);
      if(temp==NULL)
        {
         i_chart=ChartNext(i_chart);
         continue;
        }
//---
      temp=EXPERT::StringBetween(temp,EXPERT_BEGIN,EXPERT_END);
      if(temp==NULL)
        {
         i_chart=ChartNext(i_chart);
         continue;
        }

будет улавливать не только советники, но и скрипты. Поэтому, наверное, лучше так

      if(!EXPERT::Is(i_chart))
        {
         i_chart=ChartNext(i_chart);
         continue;
        }
      
      
      string temp=EXPERT::TemplateToString(i_chart,true);

При этом шаблоны будут сохраняться только там, где нужно.


ЗЫ Намеренно FileDelete не делал, чтобы всегда можно было посмотреть последний сгенерированный шаблон.

 
fxsaber:
Можно использовать такой прием, чтобы не менять оригинальный исходник

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

 
fxsaber:

Этот код


будет улавливать не только советники, но и скрипты. Поэтому, наверное, лучше так

При этом шаблоны будут сохраняться только там, где нужно.

В коде намеренно TemplateToString вызывал с флагом true. Возможно Вы забыли, но в теле функции с флагом true проверяется наличие эксперта на графике, вызовом метода Is.

 static string TemplateToString( const long Chart_ID = 0, const bool CheckExpert = false )
  {
    short Data[];

    return(((!CheckExpert || EXPERT::Is(Chart_ID)) && ::ChartSaveTemplate((ulong)Chart_ID, PATH + FILENAME) && (::FileLoad(FILENAME, Data) > 0)) ?
           ::ShortArrayToString(Data) : NULL);
  }

Поэтому оба кода должны работать одинаково.

А в целом, спасибо Вам за библиотеку и комментарии.
С уважением,
Дмитрий.

 
Dmitriy Gizlyk:

В коде намеренно TemplateToString вызывал с флагом true. Возможно Вы забыли, но в теле функции с флагом true проверяется наличие эксперта на графике, вызовом метода Is.

Действительно, забыл.

А в целом, спасибо Вам за библиотеку и комментарии.

Рад, что разобрались и дополнили по существу. Действительно, не мешало бы скорректировать с учетом обозначенных Вами нюансов.

 
Это конечно хорошо, программирование вспомнить и так далее, статья даже интересная. 
Но у меня в голове один вопрос крутится, Я что один такой ленивый, что терминал крутиться на ПК дома, а я с ним работаю с телефона через ТимВивер? Или о такой возможности никто не слыхал?
Вижу одни плюсы, а именно: 
-не нужен выделенный IP
-кроссплатформенность сей программы (для Windows, Mac, Android, iOS)
-бесплатно 
-удобство работы, как будто сидишь за ПК у себя дома...
-ну и не нужно кучи шаблонов, гор кода. 
Ты все и всегда видишь на мобильном терминале, если что то необходимо поправить, то открыл приложение и поправил что нужно, будь то выключил советника или запустил другой или просто что-то поправил в настройках. В плоть до того что выключил или перезагрузил ПК полностью...
 
sic20101:
Но у меня в голове один вопрос крутится, Я что один такой ленивый, что терминал крутиться на ПК дома, а я с ним работаю с телефона через ТимВивер? Или о такой возможности никто не слыхал?

Бывает такое, что VPS (или комп у Вас дома) с советником на какое-то время стал вне сети по техническим причинам. Когда появится в сети - неизвестно, но Вам нужно, например, чтобы торговля не велась, т.к. знаете, что могут быть еще перебои. В таком случае предложенное удаленное управление позволяет много больше, чем Ваш вариант.


ЗЫ А ведь еще бывают VPS от MetaQuotes. Там только так.

 
fxsaber:
Такое не произойдёт по одной причине, нет интернета- нет торговли, и вы наверное не заметили, что контроль счета видеться с телефона, планшета. Если интернет кончился то просто закрываем все сделки ручками, а далее либо ждём когда появиться интернет или будем дома для дальнейших действий на ПК.
Просто анализируя мой способ, которым я пользуюсь более года, доступ в сеть единственное узкое место. И эта проблема только в выборе провайдера, так как сам сервис ТимВивер работает не первый год, и даже если он и отвалиться всегда можно оставить google chrome в котором так же есть такая функция, уж они точно не скоро загнутся...
 
sic20101:
Такое не произойдёт по одной причине, нет интернета- нет торговли, и вы наверное не заметили, что контроль счета видеться с телефона, планшета. Если интернет кончился то просто закрываем все сделки ручками, а далее либо ждём когда появиться интернет или будем дома для дальнейших действий на ПК.

Терминал на Вашем компе без инета, Вы - далеко. Доступ к счету есть, а к Терминалу с советником - нет. Как заставить советник не торговать, когда появится у него связь с торговым сервером (инет заработает)?

Причина обращения: