Можно попробовать сократить перебор если откинуть заведомо не повторяющиеся цены, например так:
SELECT price
FROM historical_data
WHERE security_id = ?
AND date_and_time LIKE?
GROUP BY price
HAVING COUNT(price) > 1
На выходе получим цены, которые минимум дважды встречаются для бумаги и даты. А дальше зная бумагу, дату и цену можно проверить идут ли эти цены последовательно или нет.