The very best way to do this is with communities. With only two upstreams, you may need to break your /20 into a few smaller advertisements like /21s or /22s and then use the traffic engineering communities of your upstream provider to set preferences. Technically you can do this without communities by advertising different subnets out each provider and then an aggregate announcement of your /20 to both providers - however, this can get confusing and communities are preferred if your upstream uses them. Stay away from prepending, it's not terribly effective anymore and is considered a mechanism to be used only when there is no other option.
You'll probably want to open a ticket with each upstream and ask
1) What communities they offer (if any)
2) If BGP communities are enabled on your peering
This can be a fairly complex topic so i'd advise you to listen to this podcast on BGP Traffic Engineering first, and then come back and review the suggested implementation
Assuming you break your /20 into /22s, you can then prioritize them to get the best split of traffic. It may not be completely 50/50 but you can definitely get a lot closer than 80/20. Here is an example (using the doc prefix /24) of setting a BGP traffic engineering community with your upstream provider. In MikroTik, this is something you do in the outbound routing filter.
add action=accept chain=cogent-out prefix=203.0.113.0/24 set-bgp-communities=\
The resulting action of this config when applied to the cogent peering is shown in the drawing below - traffic is moved from Cogent to Lumen (the drawing was done back when it was Level3)