Страница 1 из 1

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

Добавлено: 10 сен 2019, 13:44
High Profit Trader
Нигде не находится в форуме. В мануале тоже нет.

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

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

Добавлено: 10 сен 2019, 21:53
oxi
StrategyName - имя робота
ShowMessage(StrategyName);

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

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

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

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

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

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

Добавлено: 10 фев 2023, 20:22
ip851874
Тоже не получалось переименовать робота в диспетчере, остается название скрипта.

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

Добавлено: 05 мар 2023, 09:37
BugsDigger
А вы, собственно, пробовали 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;
      }
   }
}

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

Добавлено: 15 май 2023, 16:34
Maks
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);   
}

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

Добавлено: 02 июн 2023, 20:50
ip851874
Как переименовать робота в диспетчере роботов когда они запущены?

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

Добавлено: 04 июн 2023, 09:17
BugsDigger
Это вряд ли возможно. Например, текущие данные робота хранятся на диске в файле с его именем ...