Я их раньше и использовал (этой проблемы не было), но так как стал для каждого типа входа использовать индивидуальное название сигнала (чтобы на графике сразу было видно по какому типу сигнал был вход), мне стало неудобно потом выходить из позиции - код получался слишком громоздкий. А LastShortPositionActive и аналогичные позволяют не привязываться к названию входа.
А разве в стандартном кубике не эти свойства применяются?
[HandlerName("Has Long Position Active")]
[HandlerCategory("Position")]
public class HasLongPositionActive : IBar2BoolHandler
{
public bool Execute(ISecurity source, int barNum)
{
if (source is ISecurityRt)
{
return Internal(source, barNum);
}
var pos = source.Positions.LastLongPositionActive;
if (pos != null && pos.EntryBarNum > barNum)
{
return Internal(source, barNum);
}
var isActive = pos != null && pos.EntryBarNum <= barNum;
pos = source.Positions.LastLongPositionClosed;
return isActive || !(pos == null || pos.ExitBarNum <= barNum);
}
private static bool Internal(ISecurity source, int barNum)
{
foreach (var ps in source.Positions)
{
if(ps.IsShort)
{
continue;
}
if (ps.EntryBarNum <= barNum)
{
if (ps.IsActive)
{
return true;
}
if (ps.ExitBarNum > barNum)
{
return true;
}
}
}
return false;
}
}