So, in the trading side of things, if you're moving USD to CAD, or CAD to USD, we typically use Norbert's Gambit. Developed by a Canadian, you can simply Google search it, there's many many articles. The jist is as follows:
In your trading account (preferably tax sheltered) buy appropriately Horizon's currency tracking DLR or it's US equivalent.
Call your broker and ask them to "journal" the shares.
The minute you buy the shares, the price is locked in, so there's not gaming the price, it simply is what it is at the time of purchase (in theory you could limit order to wait for a more favorable price to buy the other currency at)
The whole process after buying, journaling, etc. takes close to a week. Once done, you'll see the shares in the opposite format (DLR/DLR.U) and you can simply sell the shares. Total cost: Cost to buy or sell a security. For me, it's $4.95 or so. Process, a week. Well worth my time, especially for higher amounts, say $10K plus.
Certainly you could do this process and save a ton in transfer fees and buying/selling spread...you can even limit the sell and buy to ensure longer term price you want, if you'd really like to get into it.
Norbert's Gambit. Sounds complicated; totally worth the hassle.