So if i understand you correctly, you want to sort by a value that has to be calculated based on the currency?
You can do this, but not within a wordpress wp_query of sorts.
Instead you can do one of two things:
Method 1: The "do more now, have less hassle later"-way:
On saving the currency and price in your save_post action, you calculate the AED-price ...
It looks like your query is for ALL posts in that post type as you are overwriting $posts when using $posts = get_posts().
You need to pass the Taxonomy parameter correctly as explained here like this:
$args = array(
'post_type' => 'post',
'tax_query' => array(
'taxonomy' => 'people',
'field' => '...
Thanks! We ran into the same issue and this question helped a lot!
Alternate Use Case
We're looping through a custom post type called events (surprise, surprise, it stores events). It stores a timestamp in the meta field ev_start (event start time). We actually were able to just use the orderby value meta_value_num (as you can see meta_type is commented out)...