Как проверить существует ли котировка данной пары

 

Добрый день - вечер.

Хочу написать функцию, которая по заданным параметрам : величина стоплосса, используемый риск, валюта провождения счета, будет высчитывать величину открываемого лота. Встретился с такой проблемой :

при помощи функции BV=StringSubstr(Symbol(),0,3); нахожу базовую валюту для пары . И в случае если "USD" не присутствует в моей паре мне необходимо найти котировку базовой валюты к доллару . Как я могу проверить какая пара существует BV+"USD" или "USD"+BV ?

Такую же проверку мне необходимо сделать при переводе денег с валюты провождения счета в доллары.

Спасибо .

 

Есть такая функция - MarketInfo(), и идентификатор к ней - MODE_TICKVALUE - стоимость одного тика в валюте депозита.

 
Integer писал(а) >>

Есть такая функция - MarketInfo(), и идентификатор к ней - MODE_TICKVALUE - стоимость одного тика в валюте депозита.

Только останется добавить обработку ошибок.

 
Vinin писал(а) >>

Только останется добавить обработку ошибок.

Не, я не об этом. Есть готовая стоимость пункта тика, высчитывать ничего не надо.

 
Integer писал(а) >>

Не, я не об этом. Есть готовая стоимость пункта тика, высчитывать ничего не надо.

Я про то существует инструмент или нет.

 
Integer >>:

Не, я не об этом. Есть готовая стоимость пункта, высчитывать ничего не надо.

Другими словами если я высчитаю например сумму которую хочу предназначить на трансакцию как


riskmoney=NormalizeDouble(AccountBalance()*Risk/100,2);

где Risk это процент, который хочу использовать для сделки в валюте депозита

Затем высчитаю величину изменения цены при минимальном лоте при плече например 1:100 тоже в валюте депозита

markpointprice=MarketInfo(Symbol(),MODE_MINLOT)*MarketInfo(Symbol(),MODE_TICKVALUE);

MarketInfo(Symbol(),MODE_TICKVALUE) - если я правильно понимаю это величина для одного лота?

И после этого можно высчитать максимальный стоплосс для минимального лота путем деления

maxstoploss=NormalizeDouble(riskmoney/markpointprice,0)

И после этого нахожу нужный мне лот как

lots=NormalizeDouble(maxstoploss/stoploss*MarketInfo(Symbol(),MODE_MINLOT),1 или 2 в зависимости от величины минимального лота); где stoploss заданый стоплосс.

Я правильно понимаю иль где-то ошибаюсь?

Спасибо

 
Vinin писал(а) >>

Я про то существует инструмент или нет.

Это просто. MarketInfo(какой-то символ, MODE_BID), если равно 0, значит отсутствует.

 
pitpiter писал(а) >>

Другими словами если я высчитаю например сумму которую хочу предназначить на трансакцию как


riskmoney=NormalizeDouble(AccountBalance()*Risk/100,2);

где Risk это процент, который хочу использовать для сделки в валюте депозита

Затем высчитаю величину изменения цены при минимальном лоте при плече например 1:100 тоже в валюте депозита

markpointprice=MarketInfo(Symbol(),MODE_MINLOT)*MarketInfo(Symbol(),MODE_TICKVALUE);

MarketInfo(Symbol(),MODE_TICKVALUE) - если я правильно понимаю это величина для одного лота?

И после этого можно высчитать максимальный стоплосс для минимального лота путем деления

maxstoploss=NormalizeDouble(riskmoney/markpointprice,0)

И после этого нахожу нужный мне лот как

lots=NormalizeDouble(maxstoploss/stoploss*MarketInfo(Symbol(),MODE_MINLOT),1 или 2 в зависимости от величины минимального лота); где stoploss заданый стоплосс.

Я правильно понимаю иль где-то ошибаюсь?

Спасибо

Советую запустить такой скрипт. Сразу всё будет видно и спрашивать никогоне нужно будет.

Причина обращения: