The answer above is related only to P2P transactions.
Heres my answer for online exchanges:
Fixed rate exchanges offer in general higher rates for buyers and lower for sellers, the spread is bigger.
I only use real exchanges that offer no coins but a market and I use relative low(buy) limit orders.
This only works well on big exchanges with a well filled orderbook.
The bigger the exchange, the smaller the spread.
You almost always can beat the price of a small fixedrateexchanger who trades with his own coins.
In many cases the market maker pays less fee than the taker. In that case it makes even more sense to set a limit order below(buy) or above(sell) spread.
The more volatile the market situation is, the better your chances to make good deals. But with low(buy) or high(sell)limit orders you need more time for execution.
Also very often the fees at fixed rate exchangers are higher compared to real exchanges.
Include the fees for deposit and withdraw in your calculation.
If you exchange low amounts, g.e. 0.1BTC, it might be cheaper(and stressless) at fixed rate exchangers like changelly.
Consider a third way if you dont include fiat in your trade: Use decentral exchanges wherever possible.
If you trade eth-erc20tokens, use tools like
https://dex.ag/, where you get automatic the best rates of several dexes.
If you trade different blockchains, give waves a try(relative good volume for BTC,ETH,XMR,LTC).