Почему для некоторых криптовалют функция symbol_info.TickValue() возвращает 0? Как тогда рассчитать риск?
- Пример MQL5. Простой советник. Проверка размера бара. Покупка/продажа
- Торговые классы - CSymbolInfo
- Универсальная формула расчета объема ордера по заданному риску для всех инструментов
Сразу скажу, что проблема не у всех криптовалют, у BTCUSD, ETHUSD - все ровно. Проблемы начинаются у других криптовалют XRPUSD, DOGEUSD, MATICUSD и др., для них функция TickValue() возвращает нулевое значение. // Итак, есть объект symbol_info класса CSymbolInfo для получения свойств символа CSymbolInfo symbol_info; // Инициализируем его текущим именем финансового инструмента для которого будем получать информацию symbol_info.Name(_Symbol); // где _Symbol - это XRPUSD, DOGEUSD, MATICUSD и др. // Далее получаем информацию по этому символу double nTickSize = symbol_info.TickSize(); double nLotsMin = symbol_info.LotsMin(); // Минимальный размер лота double nLotsMax = symbol_info.LotsMax(); // Максимальный размер лота double nLotsStep = symbol_info.LotsStep();// Минимальный шаг лота // Все хорошо, пока не запрошен размер минимального изменения цены инструмента в валюте депозита double nTickValue = symbol_info.TickValue(); // Получаем нулевое значение!!! Подобное поведение получается у нескольких брокеров. Как узнать/получить ненулевой размер минимального изменения цены инструмента в валюте депозита?
решение не очень приятное, НО : не торговать крипту в MT.
у вас просто образуется лишний посредник, который тоже хочет кушать :-)
---
TickValue это рассчётная величина, то есть она рассчитывается через базовую валюту и кросс-курсы, по торговым маршрутам, к валюте депозита.. Чтобы нормально торговать крипту (или не-крипту, но с не-USD или EUR на счёте),
лучше рассчитывать это самому. Это не столь сложно, но крайне муторно. А TickValue просто упрощает подобные рассчёты.
Ещё, В 4-ке (возможно у некоторых DC и в 5-ке) требуется чтобы нужные кроссы по маршруту обязательно были в "обзоре рынка";
ВАЖНО: При торговле крипты, TickValue может очень малой величиной, и привычным Print(x) будет выведен 0.
ВАЖНО: При торговле крипты, TickValue может очень малой величиной, и привычным Print(x) будет выведен 0.
Спорное утверждение.
Максимум разрядов после запятой на крипте, восемь.
Топик стартер принимает в тип double, который вмещает 16 разрядов.
У биржевого брокера, в спецификации инструмента на акции тоже показывает ноль.
Но принт выводит верно. Странное поведение.

2025.03.18 22:18:21.905 TEST (SBER,M1) SBER SYMBOL_TRADE_TICK_VALUE 0.1
Спорное утверждение.
Максимум разрядов после запятой на крипте, восемь.
Топик стартер принимает в тип double, который вмещает 16 разрядов.
У биржевого брокера, в спецификации инструмента на акции тоже показывает ноль.
Но принт выводит верно. Странное поведение.
я просто не знаю как он пришёл к выводу что 0, кодов же не было никаких
Типичное (и в корне неверное) для форума Print(x) - до 5-го если не ошибаюсь знака выводит. То есть может напечатать 0 просто при малой величине
А с криптой может быть всё что угодно..типичное представление крипто-котира: не менее 5-ти значащих разрядов (начиная со старшего) но не менее 10^-10.
PS/ честно говоря не вполне понимаю как можно крипто-котир перевести в MT, в крипте Point (и Digist) плавающая величина, в MT суровая константа.
Типичное (и в корне неверное) для форума Print(x) - до 5-го если не ошибаюсь знака выводит. То есть может напечатать 0 просто при малой величине
А как же DBL_MIN ?
Print(DBL_MIN);
2025.03.18 23:03:25.736 TEST (SBER,M1) 2.2250738585072014e-308
Print же не усекает его до пятого знака ))
DBL_MIN и иже с ним это на грани фола :-)
ещё помяни неномализаованые по IEEE величины
PS/ это выходит за рамки обсуждений. В любом случае Print(x) это злое зло - компилятор вынужден привести X в нечто печатаемое и определить его конверсии. И это во время компиляции, когда величина X будет определена только в ран-тайм;
PPS/ Нельзя пользоваться Print(x) если X не строка. Болдом выделено, расцвечено, делайте так и будет счастье
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
