Конкретного фрагмента кода не приведу, однако порекомендую воспользоваться CIblockElement::getList вместе с фильтрацией по цене.
ну тогда либо includeTemplate в кеш переноси. Либо сам кешируй - пример можно посмотреть в стандартном шаблоне catalog, bootstrap_v4, файл section.php
/bitrix/components/bitrix/catalog/templates/bootstrap_v4/section.php
Если через d7 запросы делаешь, есть параметр cache, в доках найдешь как писать, сам не помню как он работает
use Bitrix\Main\Application;
use Bitrix\Main\Web\Cookie;
$context = Application::getInstance()->getContext();
$cookie = new Cookie("CARD_NUMBER", $card, time() + 60*60*24*30*12*2);
$cookie->setDomain($context->getServer()->getHttpHost());
$cookie->setHttpOnly(false);
$cookie->setSecure(false);
$context->getResponse()->addCookie($cookie);
$context->getResponse()->flush("");
$file = Array
(
'name' => $_FILES["photo_ar"]['name'][$i],
'size' => $_FILES["photo_ar"]['size'][$i],
'tmp_name' => $_FILES["photo_ar"]['tmp_name'][$i],
'type' => $_FILES["photo_ar"]['type'][$i]
);
$arFiles[] = array('VALUE' => $file, 'DESCRIPTION' => '');