thanks for your answer.
if I understand well, transaction fees are decided by miners and there is a market place of transaction fee with competition between miners which own blocks.
When the miner hashes the block repeatedly, they have to use the hash of all the transactions that they are planning to include into the block. This is called the merkle root. The coinbase transaction which distributes the Bitcoins is mandatory. The miner then has to hash the transaction to try to meet the target.
During this step, the miner can effectively filter out transactions that they don't like or don't fit their criteria.
if a miner decide to set the fee too high, he will not receive transactions in his blocks and will be obliged to lower his fee to get transaction in his block.
Basically yes. However, if the entire network of miners decides to rise their fees threshold, they can effectively force users to pay a higher fee to get their transaction in a block.
So the more transaction there will be, the more competitions there will be between miners and the lower the transaction fee will be. is this right?
No. The transaction fees would actually rise. Since the maximum amount of transaction that can be included is 1kb, users have to try to add a higher fee to get to the top of the ranking and have a higher chance of getting included in a block.
It is reasonable to say that the more BTC gets high compare to fiat currencies, the more transaction in BTC there will be.
this is unless miners agree together to set high transaction fee. Is this likely?
I'm not sure what you mean by that. Please elaborate.