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

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

Last updated