Далее тут на каждый эксеют ты получаешь валюту а затем еще раз все валюты, я так понимаю это высоконагруженная часть и каждый раз засыпать запросами это минус перфоманс.
Далее ниже где ты получаешь от биржы валюты то там явный каст когда он не нужен
Ниже ты перебираешь каждую валюту и для каждой валюты летит опять запрос в базу данных так и потом еще создание каждой отдельно, хотя сохранение в идеало должно быть атомарным, чтоб ты список подал и сохранил все в рамках одной транзакции, а то тут их ровно столько же сколько и валют