--snip--
Basically it somehow depends on the amount of BTC you are transacting with, that's why it could reach up to 20 dollars at that time, plus, if the market is congested, transaction fees could significantly increase. That is why it is advisable that if we transact, we should make sure that the market isn't congested too much because the amount of transaction fee might be high. So, if we are transacting using batch and with the technology that Segwit could offer, our transaction will be more efficient.
The fee does not depend on the amount of BTC you're sending. It depends on the size of the transaction.
The size of the transaction depends on the number of inputs, the number of outputs, which kind of addresses were funded by the inputs and which kind of addresses you're funding with the outputs.
A transaction using 1 input with a value of 100 BTC creating one output of 99.9999 BTC will be a lot smaller (thus cheaper) than a transaction using 100 inputs of 0.01 BTC to create 99 outputs of 0.01 BTC (eventough only 1 BTC was transferred in total, vs 100 BTC in the first case). In this example, it doesn't even matter if the second transaction was between segwit wallets, or batched...)