Перевод любой валюты в USD с помощью MQL4 + MT4

 

Господа, как с помощью MQL4(и терминала разумеется) перевести любую валюту в доллары по курсу MT4?

Т.е если я на графике CAD/JPY то как перевести 2 канадца в USD (2 CAD = ? USD)
                  на графике AUD/CHF то как перевести 2 ауди в USD      (2 AUD = ? USD)
                  на графике CHF/JPY  то как перевести 2 франка в USD (2 CHF = ? USD)
                  и т.д 
Находясь на графике EUR/USD всё понятно, при текущей грубой котировке 1,09989 :    2 EUR * 1,09989 = 2,19978 USD


Благодарен за любую помощь!

 
Если счет в USD, то через комбинацию из MarketInfo.
 
fxsaber:
Если счет в USD, то через комбинацию из MarketInfo.

Счет в долларах.
Можете подробнее, пожалуйста, ибо смотрю я на  идентификаторы маркет инфо и не вижу куда копать.
Есть SYMBOL_CURRENCY_BASE и SYMBOL_CURRENCY_PROFIT это уже тепло, но все равно не то.

Спасибо.
Информация об инструменте - Состояние окружения - Стандартные константы, перечисления и структуры - Справочник MQL4
Информация об инструменте - Состояние окружения - Стандартные константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Информация об инструменте - Состояние окружения - Стандартные константы, перечисления и структуры - Справочник MQL4
 
Как вариант
double GetRate( const string Symb )
{
  return(AccountLeverage() * MarketInfo(Symb, MODE_MARGINREQUIRED) /
         (MarketInfo(Symb, MODE_ASK) * MarketInfo(Symb, MODE_LOTSIZE)));
}

void PrintRate( const string Symb )
{
  Print(StringSubstr(Symb, 3, 3) + "/" + AccountInfoString(ACCOUNT_CURRENCY) +
        " = GetRate(" + Symb + ") = " + (string)GetRate(Symb));
}

void OnStart()
{
  const string Symbols[] = {"EURUSD", "GBPUSD", "AUDNZD", "EURGBP", "CADJPY"};
  
  for (int i = ArraySize(Symbols) - 1; i >= 0; i--)
    PrintRate(Symbols[i]);
}
 
fxsaber:
Как вариант
Уже очень тепло..в терминале при запуске я получаю:
20:38:08.218 MarketInfo EURUSD,M5: JPY/USD = GetRate(CADJPY) = 0.00886671
20:38:08.218 MarketInfo EURUSD,M5: GBP/USD = GetRate(EURGBP) = 1.29764643
20:38:08.218 MarketInfo EURUSD,M5: NZD/USD = GetRate(AUDNZD) = 0.69126979
20:38:08.218 MarketInfo EURUSD,M5: USD/USD = GetRate(GBPUSD) = 1.0000077
20:38:08.218 MarketInfo EURUSD,M5: USD/USD = GetRate(EURUSD) = 1.00001818

На примере первой строчки: это отношение JPY/USD, а как переделать код, чтобы получить отношение CAD/USD? Я не до конца понял как ваша магия работает (а именно функция GetRate), поэтому нужна помощь..
 
iJSmile:
получить отношение CAD/USD?
В GetRate отправить XXXCAD-символ. Например, EURCAD или GBPCAD.
 
fxsaber:
В GetRate отправить XXXCAD-символ. Например, EURCAD или GBPCAD.

Думал, будет не совсем корректно использовать эту функцию таким образом. Но, раз вы разрешаете.. :)
Супер! Огроменное спасибо за помощь! 
 
Хотя, если подумать, можно ведь и так:

double ConvertToUSD(string currency, double amount)
{
 if(currency == "USD") return amount;
 if(currency == "EUR") return amount*MarketInfo("EURUSD", MODE_ASK);
 if(currency == "AUD") return amount*MarketInfo("AUDUSD", MODE_ASK);
 if(currency == "GBP") return amount*MarketInfo("GBPUSD", MODE_ASK);
 if(currency == "NZD") return amount*MarketInfo("NZDUSD", MODE_ASK);
 if(currency == "CHF") return amount*1/MarketInfo("USDCHF", MODE_ASK);
 if(currency == "CAD") return amount*1/MarketInfo("USDCAD", MODE_ASK);
 if(currency == "JPY") return amount*1/MarketInfo("USDJPY", MODE_ASK);
 return 999; // lol
}

 
iJSmile:
Хотя, если подумать, можно ведь и так: 
Это если в обзоре рынка есть данные символы.