Как работать с событиями?

В свойстве 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.