Как узнать количество нулей после запятой в котировках разных валют?

 
Как узнать количество нулей после запятой в котировках разных валют? Пишу индикатор для GBPUSD там 4, можно просто в код вставить умножение на 1000, но если будет другой финансовый инструмент надо менять код, можо конечно в задаваемых параметрах устанавливать это значение, но хочется чтоб индикатор сам распознавал.
 
KING:
Как узнать количество нулей после запятой в котировках разных валют? Пишу индикатор для GBPUSD там 4, можно просто в код вставить умножение на 1000, но если будет другой финансовый инструмент надо менять код, можо конечно в задаваемых параметрах устанавливать это значение, но хочется чтоб индикатор сам распознавал.


Для этого есть Digits

int Digits

Количество цифр после десятичной точки в цене текущего инструмента.
См. также MarketInfo().

Пример:
Print(DoubleToStr(Close[0], Digits));
 
KING:
Как узнать количество нулей после запятой в котировках разных валют? Пишу индикатор для GBPUSD там 4, можно просто в код вставить умножение на 1000, но если будет другой финансовый инструмент надо менять код, можо конечно в задаваемых параметрах устанавливать это значение, но хочется чтоб индикатор сам распознавал.

Я делаю так:
MathPow(10, MarketInfo(Symbol(),MODE_DIGITS);
 
Спасибо
 

Случайно не появилась функция которая определяет 4 или 5 значный брокер?

Типа MarketInfo(Symbol(),MODE_5DIG) true/false 

 
eevviill:

Случайно не появилась функция которая определяет 4 или 5 значный брокер?

Типа MarketInfo(Symbol(),MODE_5DIG) true/false 

Можно так:

if(_Digits==3||_Digits==5)
 
nasdaq:

Можно так:

 

А если речь идет о символе типа SP500 или NASDAQ?

Проблема в том, что нет универсального алгоритма определения "пятизначности" и "четырехзначности" предоставляемых котировок. Есть только такие вот попытки описания признаков, которые работают далеко не во всех случаях. 

 
Scriptong:

А если речь идет о символе типа SP500 или NASDAQ?

Проблема в том, что нет универсального алгоритма определения "пятизначности" и "четырехзначности" предоставляемых котировок. Есть только такие вот попытки описания признаков, которые работают далеко не во всех случаях. 

100%.

Есть пары(и их много) где 3 или 5 не работает.

А вот от разработчиков тру/фолс очень надо. 

 

Я ещё думал именно конкретную пару проверять. EURUSD.

Но

1) Её может не быть.

2) Может иметь название не EURUSD. 

 
eevviill:

Я ещё думал именно конкретную пару проверять. EURUSD.

Но

1) Её может не быть.

2) Может иметь название не EURUSD. 

Тоже идея. У большинства брокеров она, как минимум, содержит корень "EURUSD" (mEURUSD, EURUSDm и т. п.). Но, опять же, ложка дегтя, недавно видел брокера, работающего с различными криптовалютами. Так у него кроме этих криптовалют ничего нет, т. е. ни EURUSD, ни GBPUSD. В таком случае все равно придется обращаться к трейдеру с вопросом, какие котировки: классические или "новые".
 
Разрядность котирования не является свойством брокера в целом. Она может различаться у одного брокера на разных типах счетов и даже на счетах одинакового типа у разных инструментов, в том числе привычных. Например, встречал такое: GBPUSD 1.5613  NZD 0.87341 одновременно в одном окне обзора рынка. Так что не вижу никакого выхода, кроме как запрашивать Digits или Point индивидуально по нужным инструментам во время работы на нужном счете. Вообще говоря, никто не обязывает брокера соблюдать постоянство разрядности в течение какого-то времени. Он может сменить ее с 4 на 5, например, утром в среду для двух-трех валютных пар. Такое встречал один раз, но перед этим пришли извещения и по почте терминала, и на e-mail.