To do it on a per program based level, you need to do layer7 packet inspection. Something that a MikroTik is very poorly suited for. It's a layer3 device so it has no way of knowing what programs people are using and making adjustments based off of that. If you want to limit it on a per program level, start looking into devices that do layer7 deep packet inspection and be prepared to shell out a lot of money.
You can see if a connection exceeds a bandwidth limit and start to treat the user differently.
You can see if a connection has exceeded a set number of bytes and then treat the user differently.
You can also play around with PCQ to apply rate limits on a per user or per connection basis.
You can set up a TCP connection limit on a per user basis, or packet rate limit on a per user basis.
What combination and how it all works together is up to you. Except for the connection limit, these are very involved subjects and not easily covered in a couple of forum posts. It would be best to read up on queues and QoS and then ask questions about what you specifically don't understand.