Решил вопрос таким вот образом.
Думаю кому нибудь это поможет в свое время:=)

Расчет сигнала производится в блоке сжатия, придавая ему значение истины или лжи ( ? 1:0):

cH[bar] = compressed.HighPrices[bar];
cL[bar] = compressed.LowPrices[bar];
cO[bar] = compressed.OpenPrices[bar];
cC[bar] = compressed.ClosePrices[bar];
var cSL = new double[compressed.Bars.Count];

for (int bar = StartBar; bar < compressed.Bars.Count; bar++)
{
cH[bar] = compressed.HighPrices[bar];
cL[bar] = compressed.LowPrices[bar];
cO[bar] = compressed.OpenPrices[bar];
cC[bar] = compressed.ClosePrices[bar];


cSL[bar] = cC[bar]>cO[bar]
&& cC[bar] <= cO[bar-1]
&& cO[bar] >= cC[bar-1] ? 1:0 ;

Дальше полученный сигнал и параметры сжатой свечи нужно расжать

var H = compressed.Decompress(cH, DecompressMethodWithDef.Default);
var L = compressed.Decompress(cL, DecompressMethodWithDef.Default);
var O = compressed.Decompress(cO, DecompressMethodWithDef.Default);
var C = compressed.Decompress(cC, DecompressMethodWithDef.Default);

var SL = compressed.Decompress(cSL, DecompressMethodWithDef.Default);

Потом если в блоке пересчета скрипта сигнал на открытие поступивший от сжатой свечи принимает истинное значение (1) идет сигнал на открытие позиции.

for (int bar = StartBar; bar < source.Bars.Count; bar++)
{
// Параметры и Сигналы

#region Сброс параметров

signalLong = false;
signalShort = false;

#endregion

#region Сигналы на вход в позицию

if (LongPos == null
&& ShortPos == null // Нет короткой позиции
&& SL[bar]>0 // Если от сжатого диапазона есть сигнал SL[bar] принимает значение 1
{
signalLong = true;
}

За верное направление спасибо сайту rusalgo.com
в частности статье: http://rusalgo.com/article/vhod-i-vyhod-na-odnoj-sveche
Если там приглядеться к первому коду то все становиться понятно