Общие вопросы по разработке > Имя робота в системе

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
High Profit Trader
Сообщения: 77
Зарегистрирован: 23 мар 2018, 10:54
Поблагодарили: 2 раза

Имя робота в системе

Непрочитанное сообщение High Profit Trader » 10 сен 2019, 13:44

Нигде не находится в форуме. В мануале тоже нет.

Как роботу узнать свое имя в системе?
Например: Alfa_Moment.1
Или: Alfa_Moment.2

oxi
Сообщения: 160
Зарегистрирован: 20 сен 2016, 23:20
Благодарил (а): 12 раз
Поблагодарили: 66 раз

Re: Имя робота в системе

Непрочитанное сообщение oxi » 10 сен 2019, 21:53

StrategyName - имя робота
ShowMessage(StrategyName);

High Profit Trader
Сообщения: 77
Зарегистрирован: 23 мар 2018, 10:54
Поблагодарили: 2 раза

Re: Имя робота в системе

Непрочитанное сообщение High Profit Trader » 11 сен 2019, 09:35

Это название стратегии, т.е. скрипта.
А нужно название робота. Из одной стратегии можно запустить несколько роботов.
А-Д дает им имена, добавляя числовой префикс к названию стратегии.
Вот это и нужно.
Но что-то пока не могу найти.
Спасибо!

RobotName - пишет, что нет такой переменной.

Логично, что нужно запускать несколько роботов сразу на одной стратегии. С вариациями параметров, чтобы далее смотреть, какой лучше.
Но для увязки логов робота с окнами в А-Д нужно знать имя робота, которое в окнах А-Д используется.
Заходить каждый раз в отчет и в переменные - неудобно. Особенно, если роботов много.
Если бы было имя робота доступно, то в принципе бы отпала необходимость создания спец. идентификатора внутри робота для логов, т.к. можно будет использовать в этой роли имя робота (ведь оно уникально). Хотя, может, и не отпала бы, т.к. при удалении робота и запуске нового на одной стратегии, новый получит имя удаленного. Но упрощение получилось бы.

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

ip851874
Сообщения: 40
Зарегистрирован: 21 ноя 2020, 22:56
Благодарил (а): 9 раз

Re: Имя робота в системе

Непрочитанное сообщение ip851874 » 10 фев 2023, 20:22

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

BugsDigger
Сообщения: 533
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 91 раз

Re: Имя робота в системе

Непрочитанное сообщение BugsDigger » 05 мар 2023, 09:37

А вы, собственно, пробовали StrategyName (не в тестировании) ?

Код: Выделить всё

// MTS.MTSWorker
[StrategyEditorMode(0, new object[] { enumStrategyEditorMode.NewActiveMode })]
[Category("Параметры запуска")]
[DisplayName("Наименование")]
public virtual string StrategyName => _strategyName;

// MTS.MTSWorker
protected void SetStrategyName(string value, bool asIs = false)
{
   if (asIs && !string.IsNullOrWhiteSpace(value))
   {
      _strategyName = value;
   }
   else
   {
      if (!(_strategyName == "") && !string.IsNullOrWhiteSpace(value))
      {
         return;
      }
      if (!IsTest)
      {
         int num = (from m in MTSManager.Instance.GetMTSList()
            where m != this && m.Strategy != null && m.Strategy.GetType().Name == Strategy.GetType().Name
            select m.GetIndexOfName() into idx
            orderby idx
            select idx).LastOrDefault();
         _strategyName = string.Concat(str2: Math.Max(num + 1, 1).ToString(), str0: Item.Name, str1: ".");

Вот тут присваивается имя + номер, и, по всей видимости, д.б. в таком виде читаться в OnUpdate (не проверял).
Режим нужен "не тестирование".

      }
      else
      {
         _strategyName = Strategy.Name;
      }
   }
}

Maks
Сообщения: 52
Зарегистрирован: 15 июн 2020, 15:29
Благодарил (а): 8 раз
Поблагодарили: 27 раз

Re: Имя робота в системе

Непрочитанное сообщение Maks » 15 май 2023, 16:34

High Profit Trader писал(а):Нигде не находится в форуме. В мануале тоже нет.

Как роботу узнать свое имя в системе?
Например: Alfa_Moment.1
Или: Alfa_Moment.2


Worker.StrategyName

Код: Выделить всё

function Initialize()
{
   StrategyName = "test_robot_name";
   AddInput("Input1", Inputs.Candle, 1, true, "");
   LongLimit = 0;
   ShortLimit = 0;
}

function OnUpdate()
{
   ShowMessage("StrategyName= " + StrategyName);   
   ShowMessage("RobotName= "    + Worker.StrategyName);   
}

ip851874
Сообщения: 40
Зарегистрирован: 21 ноя 2020, 22:56
Благодарил (а): 9 раз

Re: Имя робота в системе

Непрочитанное сообщение ip851874 » 02 июн 2023, 20:50

Как переименовать робота в диспетчере роботов когда они запущены?

BugsDigger
Сообщения: 533
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 91 раз

Re: Имя робота в системе

Непрочитанное сообщение BugsDigger » 04 июн 2023, 09:17

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


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей