Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Скомпоновал коды и исправил ошибку в своём коде:
Здесь вводится переменная "ExtLot" - в ней и будет храниться минимальный объём. Также, для удобства и облегчения написания торговых операций выполнено подключение класса CTrade - торгового класса стандартной библиотеки.
Чтобы получить из цены пункты нужно разницу между двумя ценами умножить на 10 в степени Digits(). Для примера имеем две цены: 1.20302 и 1.20281. Как видите здесь пять разрядов после запятой. Разница между этими двумя ценами будет равна 0.00021. Чтобы перевести 0.00021 в пункты, нужно это число умножить на 10 в степени 5:
rezult==21.
Ещё можно и десятичный логарифм прикрутить...
Но зачем так сложно? :-))
Когда проще так:
Кирил посмотрите вот эту коду ,думаю она вас заинтересует,,,,,,,,, https://www.mql5.com/ru/code/9049
как прикрутить уже готовое на много проще объяснить
Ещё можно и десятичный логарифм прикрутить...
Но зачем так сложно? :-))
Когда проще так:
Дык... ноу-хау :))))
А потом люди думают - чего это индикаторы тормозят так...
Ну да ладно. "Секрет" про /Point() раскрыт. А жаль... народ следил затаив дыхание...
Дык... ноу-хау :))))
А потом люди думают - чего это индикаторы тормозят так...
Ну да ладно. "Секрет" про /Point() раскрыт. А жаль... народ следил затаив дыхание...
Индикаторы тормозят если делать неэкономный пересчёт на каждом тики :). А про скорость выполнения - так Вам и карты в руки - сказали "А", говорит и "Б" - приведите тест скорости выполнения с двумя вариантами кода (с MathPow и с делением на Point()).
Проводить эксперименты - вы же любите. Проведите. У меня на это времени нету к сожалению.
Проводить эксперименты - вы же любите. Проведите. У меня на это времени нету к сожалению.
Я таки провёл серию тестов - результаты оказались очень интересные. Сравниваются три вида вычисления дельты между двумя ценами:
Результаты:
Самый мегаскоростной метод оказался:
выполняется можно сказать мгновенно.
Наглядно приведено.
Единственно, всё же упомяну, что мне не удалось представить ситуацию в "реале", когда тот же MathPow(10,Digits()) требовалось бы вызывать в цикле каждый раз "по новой". /*Это ни в коей мере не какой-либо упрёк или "подколка" с моей стороны. "На скорую руку" приближенное к "идеальному" сложно сконструировать.*/ .
Поэтому я чуток изменила тестовый код. В т.ч., убрала функцию func2.
Вариант с моими изменениями так же "на скорую руку" и так же не идеален.
Результаты при замерах получаются "зависимыми" от i_reverse:
Если i_reverse=false:
Если i_reverse=true:
При этом (при неоднократных замерах) количество msec может немного различаться от приведённых цифр.Я таки провёл серию тестов - результаты оказались очень интересные. Сравниваются три вида вычисления дельты между двумя ценами:
Результаты:
Самый мегаскоростной метод оказался:
выполняется можно сказать мгновенно.
Дык... ноу-хау :))))
P./S.: Артём, sorry, но применение MathPow(10,Digits()) для получения разницы в пунктах - так-то не ноу-хау.
Я, например, давно такое применяю. /* По тому же символу - так это один раз вычисление в OnInit(), затем расчёты на основе вычисленного значения при новом баре. Т.е., и дальнейшие вычисления - не на каждом тике. <=Это просто уточнение, в связи с тем, что в своей практике не применяла никаким из вышеприведённых способов расчёты на каждом тике.*/
После того, как путём "проб и ошибок" открыла для себя такой способ, обнаружила на четвёртом форуме, что и я являюсь далеко не первооткрывателем в этом.
P./S.: Если память мне не изменяет, и у тебя где-то это встречалось на четвёртом(?) форуме. Но, насколько помню, не MathPow(), а аналог этой функции (pow()).
Хотя может я в чём-то тебя не поняла в текущей теме.