Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Есть ли у кого готовый код вычисления количество значащих цифр для объема?
Что-то типа SymbolInfoInteger(_Symbol, SYMBOL_DIGITS), но только для объема.
Например, для случая SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_STEP) = "1.0" - ответ будет "0", для "0.1" - "1", для "0.01" - "2" и т.д.
Уточню нюанс. Для шага объема типа "0.1", "0.01", "0.001" у меня есть.
Код должен работать для следующих случаев, например, "0.2", "0.11", 0.023" и др.
Для объёма конкретно нету. Есть для чего угодно.
Скрипт для проверки в прицепе.Скрипт для проверки в прицепе.
ты про это..., а я подумал что надо проверить допустимый лот до того, как выставить ордер.
;)
Я не знаю на самом деле чего ему надо.. Посмотрим, небось отпишется. Эт я так - в телепатии тренируюсь. ;)
Есть ли у кого готовый код вычисления количество значащих цифр для объема?
Что-то типа SymbolInfoInteger(_Symbol, SYMBOL_DIGITS), но только для объема.
Например, для случая SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_STEP) = "1.0" - ответ будет "0", для "0.1" - "1", для "0.01" - "2" и т.д.
Уточню нюанс. Для шага объема типа "0.1", "0.01", "0.001" у меня есть.
Код должен работать для следующих случаев, например, "0.2", "0.11", 0.023" и др.
Конкретно для объёмов можно просто:
sergeev
MetaDriver
Valmars
Качественно сформулированный вопрос - половина ответа. :) Извиняюсь, уже ложился спать, неточно описал задачу. Попробую еще раз.
Речь идет про передачу в торговый приказ нормализированного объема.
Как мы делаем это делаем с ценой:
Нормализация цены ("price") - думаю, всем понятна.
В свое время (еще с МТ4), где-то в статьях МТ читал, что желательно нормализировать еще и объем.
Реализация №2.Собственно, для того, чтобы выяснить самый младший разряд объема, который возможен по условиям брокера, написал функцию GetVolumeDigits(string Symbol). Реализации ее, как минимум, две (результат одинаковый):
Реализация №1.
Оба варианта отлично справляются с вариантами, при которых минимальный шаг = 1.0, 0.1, 0.01, 0.001 и т.д. Т.е. если мин.шаг равен 1.0, функция вернет 0; при шаге 0.1, функция вернет 1 и т.д.
Что делать, если минимальный шаг равен, например, 1.1 или 0.11, или 0.011? Данный алгоритм неверно покажет младший значащий разряд.
Можно, конечно, утверждать, что таких случаев в практике нет. Просто хотелось в советнике учесть такую гипотетическую возможность. Думал, может, кто поделиться наработками в этом нюансе...
Речь идет про передачу в торговый приказ нормализированного объема.
Просто хотелось в советнике учесть такую гипотетическую возможность.
а по какой "гипотетический" инструмент идёт речь?
1. Вариант от MetaDriver подходит вам. CountSignedDigits покажет количество знаков в любом лоте.
2. Зная число знаков dig нормализацию можете провести так:
sergeev
Благодарю за функцию проверки валидности лота. Использую аналогичную конструкцию/ветвление проверок.
Мой вопрос акцентирован на определении самого младшего разряда в лоте, чтобы по нему нормализацию проводить.
В частности, MetaDriver привел свою конструкцию для "всего". :) Однако, она не лишена недостатков (либо мой компилятор глючит). Ниже привожу код и результат выполнения:
Результат:
Следующий вариант (функция CountSignedDigits та же):
Результат:
Изменил в OnStart следующую строку:
Результат:
Либо что-то я неправильно делаю (прошу поправить), либо многоуважаемый MetaDriver допустил ошибку в теории (при проектировании алгоритма).
Мой вопрос акцентирован на определении самого младшего разряда в лоте, чтобы по нему нормализацию проводить.
Даже если при передаче торгового запроса в переменную lot попадет мусор (в надцатом знаке после запятой), он должен будет отсеятся самим терминалом.
По крайней мере, у меня за несколько лет использования такой конструкции проблем не возникало.
А если хочется перестраховаться, можно воткнуть нормализацию до 8-го (с запасом) знака после запятой - если после "правильной" нормализации и появится мусор, то он будет намного дальше.