Как узнать тип котировки? (прямая, обратная, крос)

 

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

Будет классно если скинете пример кода.

Депозит в USD

  • USDCHF - прямая

  • EURUSD - обратная

  • GBPCHF - кросс
 
0x41:

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

Будет классно если скинете пример кода.

Депозит в USD

  • USDCHF - прямая

  • EURUSD - обратная

  • GBPCHF - кросс

В языке MQL есть функции работы со строками (StringFind()). В вашем случае если USD встречается в 0-вой позиции значит прямая, в 3-тей позиции обратная. Если нет (-1) то кросс.

 

Вот вырезка из очень старого кода какого-то классика нашего форума, я уже не помню кого

        const string symbolMargin = SymbolInfoString(sym, SYMBOL_CURRENCY_MARGIN);
        const string symbolProfit = SymbolInfoString(sym, SYMBOL_CURRENCY_PROFIT);

        string calc_currency;   // валюта для расчета
        
        //--- если валюта котировки символа и валюта депозита одинаковы (обратные котировки)
        if (symbolProfit == baseCurrency) {
        }

        //--- если базовая валюта символа и  валюта депозита одинаковы (прямые котировки)
        else if (symbolMargin == baseCurrency) {
        }

        //--- если до сих пор валюта для расчета не определена, значит перед нами кроссовая валюта
        else {
                calc_currency = symbolMargin + baseCurrency;
                double price = f(calc_currency);
                if (price != 0) {
                }
                else {
                        // попробуем наоборот
                        calc_currency = baseCurrency + symbolMargin;
                        double price = f(calc_currency);
                }
        }
 
Vitalii Ananev:

В языке MQL есть функции работы со строками (StringFind()). В вашем случае если USD встречается в 0-вой позиции значит прямая, в 3-тей позиции обратная. Если нет (-1) то кросс.

Ну я об этом сразу и подумал, но в моем понимание это больше кастыль.

Edgar Akhmadeev:

Вот вырезка из очень старого кода какого-то классика нашего форума, я уже не помню кого

Спасибо вот это уже интересный вариант!