Форум устарел! Поддержка тут: https://t.me/osengine_official_support
Актуальные гайды здесь: https://smart-lab.ru/company/os_engine/blog/1024149.php
Собственно сабж
Для некоторых стратегий есть необходимость иметь данные о других запущенных стратегиях, например для расчета размера позиций по используемуму инструменту, для других же стратегий, необходимо и вовсе управлять настройками остальных роботов, например для робота управляющего торговлей через телеграм. В обооих случаях это реализуется через глобальную переменную OsTraderMaster.Master._panelsArray
Рассмотрим несколько примеров, и начнем с количества роботов торгующих тем же инструментом
private int CheckOpenPos()
{
if (_tab.Connector.MyServer.ServerType != Market.ServerType.Tester)
{
int result = 0;
for (int i = 0; i < OsTraderMaster.Master._panelsArray.Count; i++)
{
if (OsTraderMaster.Master._panelsArray[i].TabsSimple == null || OsTraderMaster.Master._panelsArray[i].TabsSimple.Count == 0)
continue;
BotTabSimple tab = OsTraderMaster.Master._panelsArray[i].TabsSimple[0];
List<Position> positions = tab.PositionsOpenAll;
if (positions.Count() > 0)
{
result += 1;
}
}
return result;
}
return 0;
}
Далее получим имена подключенных роботов, а по количеству имен определим количество самих роботов
public class RobotState
{
public string Name;
public string State;
}
private List<RobotState> GetRobotsStates()
{
List<RobotState> result = new List<RobotState>();
foreach (var bot_item in OsTraderMaster.Master._panelsArray)
{
if (bot_item.NameStrategyUniq == this.NameStrategyUniq)
continue;
Type myType = bot_item.GetType();
var state = myType.GetField("Regime").GetValue(bot_item);
result.Add(new RobotState() { Name = bot_item.NameStrategyUniq , State = ((StrategyParameterString)state).ValueString});
}
return result;
}
А в завершении выключим/включим искомый робот переопределяя значение настройки Regime
private void SetRobotState(string robot_name, string state)
{
foreach (var bot_item in OsTraderMaster.Master._panelsArray)
{
if (bot_item.NameStrategyUniq != robot_name)
continue;
Type myType = bot_item.GetType();
myType.GetField("Regime").SetValue(bot_item, new StrategyParameterString("Regime", state, new List<string>() { "Вкл", "Выкл" }));
}
}
ООО «ВАН ТЕХНОЛОГИИ»т: +7 953 769 56 45
* Торговля на финансовых рынках связана с риском, который лежит на Вас.
* Ничто из написанного на сайте o-s-a.net не является рекомендацией.
* Если Вы этого не понимаете, не читайте этот сайт, ничего не покупайте.