Решил вопрос таким вот образом.
Думаю кому нибудь это поможет в свое время:=)
Расчет сигнала производится в блоке сжатия, придавая ему значение истины или лжи ( ? 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Если там приглядеться к первому коду то все становиться понятно