Как работать с событиями?
В свойстве ctx.Runtime.LastRecalcReasons содержатся список причин пересчета скрипта. Их может быть несколько.
Пример как получить причину пересчета скрипта (выводится в лог):
var listReasons = ctx.Runtime.LastRecalcReasons.Select(x => x.Name).Distinct().ToList(); var listReasonsSt = string.Join(", ", listReasons); ctx.Log($"RecalcReasons: " + listReasonsSt, MessageType.Info, true);
Пример как получить событие открытия позиции (выводится в лог):
if (ctx.Runtime.LastRecalcReasons.Any(x => x.Name == EventKind.PositionOpening.ToString())) { ctx.Log($"PositionOpening!", MessageType.Info, true); }
В настройках агента должна быть включена галочка События → Открытие позиции, тогда скрипт будет пересчитываться при открытии позиции.
Все возможные события перечислены в enum EventKind.