Страница 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
Это вряд ли возможно. Например, текущие данные робота хранятся на диске в файле с его именем ...