есть два подхода к написанию биржи
* первый - все сделки лимитные, т.е. они не исполняются в тот же миг, даже если есть подходящий встречный ордер. На бирже в цикле постоянно крутится специальный бот, который покупает и продает ордера на свои деньги (вполне возможно что ставить блокировку на отмену ордеров, которые обрабатывает, чтобы обработка нескольких была атомарной, но это не обязательно)
в результате, пересекающиеся ордера по разным ценам биржа может исполнить по своим ценам, тем что указали клиенты, а разницу взять себе в карман - формально все ок, клиенты попросили такую цену и они ее получили
* второй - если сделка по цене пересекает чужой лимитный ордер - она становится filled order, т.е. происходит исполнение ютих двух или более ордеров, по той цене, что указали клиенты в лимитных ордерах
Таким образом, клиент может смело указывать цену с запасом за границу текущего края рынка, но итоговая цена будет ему выгоднее. Некоторые биржи даже делают специальный тип ордеров без указания цены, какраз для купли продажи по текущему стакану.
Чаще всего криптовалютные биржи выбирают второй метод.
Оба решения дают море вариантов для мошенничества со стороны биржи (особенно это актуально, если вы играете с маржинальной торговлей), не знаю как здесь с регулированием, но в криптовалютах этого пока нет.