Форум » Консультации по программированию » Перестала работать проверка на новый бар » Ответить

Перестала работать проверка на новый бар

hoz: Я уже больше года как использую для контроля нового бара подобную конфигурацию: [more]if (gdt_LastBarTime != Time[0]) { OTotal = CPosInf.FindPositions (AmountPosByType); // Получаем количество позиций( по типам ). GetTradeSignal (MurreyLevelsValue); gdt_LastBarTime = Time[0]; }[/more] Т.е. переменной gdt_LastBarTime присваиваю значение времени открытия нового бара, и если оно не совпадает с значением нового бара, значит отрабатывается тело внутри условия. Сегодня пол дня мудохался. Чего тока не проверил. Перелопатил всё что тока мог. А оказалось, что когда вынес всё что внутри вышеприведённого условия из него, всё заработало. Иначе никак. Почему-то не отрабатывается он. Как такое может быть? Вот что у меня в функции OnTick(): [more]void OnTick() { double MurreyLevelsValue[13]; Print ("___gdt_LastBarTime = ", TimeToStr (gdt_LastBarTime, TIME_DATE|TIME_SECONDS)); Print ("___Time[0] = ", Time[0]); if (gdt_LastBarTime != Time[0]) { Print (__FUNCTION__, ": ", "OTotal = ", OTotal); OTotal = CPosInf.FindPositions (AmountPosByType); // Получаем количество позиций( по типам ). GetTradeSignal (MurreyLevelsValue); gdt_LastBarTime = Time[0]; } if (OTotal > 0) MovingLimitPositions (MurreyLevelsValue); }[/more] А вот что в принте нет принтов, которые возвращают функции, которые заключены в условиях: if (gdt_LastBarTime != Time[0]) { // ..... } Я там спецом кучу принтов поместил. В журнале не выводится ничего.

Ответов - 2

Scriptong: Здесь, чтобы разобраться, нужен более полный код. По отрывкам мало, что понятно, и установить причину не получится. К тому же, сама постановка задачи: hoz пишет: А оказалось, что когда вынес всё что внутри вышеприведённого условия из него, всё заработало. Иначе никак. не дает конкретики. Что именно заработало и что именно не работало до этого?

hoz: Ситуация решилась сама собой. Вопрос снят.



полная версия страницы