For example, three dual band triple chain 802.11n/ac APs (https://routerboard.com/RBwAPG-5HacT2HnD) and a router (https://routerboard.com/RB750Gr3) have an MRSP of $330, including POE for the APs.
Roaming is very tough to get right unfortunately. Only the client devices can make a decision to roam, so without ugly hacks such as using a single channel / MAC / SSID to create a giant interfering WLAN, your options are limited. What you can do with Mikrotik is set up access rules to kick a client off an AP if the signal strength falls below a threshold, but as this is not client-initiated, there is a longer re-association time which could interrupt VoIP etc.
There are options such as 3rd party roaming clients for (eg https://play.google.com/store/apps/details?id=com.heleron.wi... for Android) which I'd consider. For laptops, most drivers have a "roaming aggressiveness" setting which can be tweaked. In general almost all devices should handle transient connectivity glitches fairly well, so kicking low signal clients off an AP shouldn't interrupt too much.
There's a blog post that was on HN a few days back about it: https://www.troyhunt.com/ubiquiti-all-the-things-how-i-final...