Все дело в том что мне нужно делить на число int n, которое ранее используется для обращения к массиву arr[] и потому не может быть double
С делением еще туда сюда :) Можно разобраться. а вот что делать с количеством циклов ?
Не знаю сталкивался ли еще кто с такой ситуацией ( или на это не обращают внимание- в смысле не проверяют - так ли уж все правильно работает на больших объемах исторических даннаых ? Я вот люблю все пощупать сам.)
А ситуация следующая- сделал обычный скрипт - простенький
Выводит количество баров в истории - и показывает Дату и Цену Открытия и Закрытия
И что получается - Баров в истории к примеру 2391, а выводит данных только по 114.
Причем все дело в цикле - for - Не хочет приничать переменная i - которая определенна как счетчик количества циклов значение всего количества баров истории графика.
Можете сами убедиться. Максимальное количество циклов удалось сделать 255.
И все. О каком тогда иссследовании истории можно говорить?
Кто то сам проверял? Так ли действительно правильно работает оператор FOR. И действительно ли мы получаем ту информацию ( надеясь что все правильно работает) которую запрашиваем.
Для интересующихся даю скрипт- кто хочет проверит.
С делением еще туда сюда :) Можно разобраться. а вот что делать с количеством циклов ?
Не знаю сталкивался ли еще кто с такой ситуацией ( или на это не обращают внимание- в смысле не проверяют - так ли уж все правильно работает на больших объемах исторических даннаых ? Я вот люблю все пощупать сам.)
А ситуация следующая- сделал обычный скрипт - простенький
Выводит количество баров в истории - и показывает Дату и Цену Открытия и Закрытия
И что получается - Баров в истории к примеру 2391, а выводит данных только по 114.
Причем все дело в цикле - for - Не хочет приничать переменная i - которая определенна как счетчик количества циклов значение всего количества баров истории графика.
Можете сами убедиться. Максимальное количество циклов удалось сделать 255.
И все. О каком тогда иссследовании истории можно говорить?
Кто то сам проверял? Так ли действительно правильно работает оператор FOR. И действительно ли мы получаем ту информацию ( надеясь что все правильно работает) которую запрашиваем.
Для интересующихся даю скрипт- кто хочет проверит.
Попробуй то же самое сделать в советнике. Скрипт на истории не работает, а только на видимой части. Или поменяй в настройках количество видимых баров
Подскажите пожалуйста как поделить число 1 на 2 чтобы получилось 0,5
Пробовал 1/2 получилось 0
Пробовал 1 % 2 получилось 5
КАК ПОЛУЧИТЬ 0.5! ???
В справке по mql ничего не написано
1. Дробная часть значения, полученного при делении целых чисел, отбрасывается. Поэтому если int A=1.0 и int B = 2 ,то результатом вычисления значения выражения А/В будет целое число: 1/2 = 0,5 но ,5 отбрасывается, а остаётся 0
2. Если doubl A=1.0 и int B = 2 ,то при вычислении значения выражения А/В используется правило неявного преобразования типов. Тип double имеет более высокий приоритет, поэтому значение выражения, получаемое в результате выполнения операции деления, будет иметь тип double, т.е. будет иметь дробную часть, результат будет 0.5
3. Существует ещё правило явного преобразования типов. Пусть doubl A=1.0 и int B = 2
Если int С = А/В ,то действительное значение 0.5 выражения в правой части от знака равенства должно быть присвоено целой переменной С. При выполнении операции присваивания выполняется приведение типа значения: сначала действительное 0.5 преобразуется в целое 0 (ноль, с отбрасыванием дробной части), а затем 0 присвоится переменной С. Здесь С=0
Если double С = А/В ,то преобразования типов не происходит, т.к. действительное значение 0.5 спокойно присваивается действительной переменной С. Здесь С = 0.5
Попробуй то же самое сделать в советнике. Скрипт на истории не
работает, а только на видимой части. Или поменяй в настройках
количество видимых баров
Скрипт на истории работает. Скрипт отличается от советника
главным образом свойствами специальной функции start(). В советнике
эта функция запускается на исполнение многократно (на ближайшем
тике, пришедшем после окончания предыдущего сеанса исполнения),
а в скрипте - один раз, и после окончания работы больше не запускается.
Все операторы работают как положено и в экспертах и в скриптах. Если запустить такой код:
int start() { int i, k; // Инициализируем переменную for (i = Bars-1; i >= 0; i--) // Цикл { k++; // Счётчик итераций } Alert ("Значение Bars = ",Bars," Количество итераций = ",k); return; }
то (на моей истории) получается такой результат:
Попробуй то же самое сделать в советнике. Скрипт на истории не
работает, а только на видимой части. Или поменяй в настройках
количество видимых баров
Скрипт на истории работает. Скрипт отличается от советника
главным образом свойствами специальной функции start(). В советнике
эта функция запускается на исполнение многократно (на ближайшем
тике, пришедшем после окончания предыдущего сеанса исполнения),
а в скрипте - один раз, и после окончания работы больше не запускается.
Все операторы работают как положено и в экспертах и в скриптах. Если запустить такой код:
int start() { int i, k; // Инициализируем переменную for (i = Bars-1; i >= 0; i--) // Цикл { k++; // Счётчик итераций } Alert ("Значение Bars = ",Bars," Количество итераций = ",k); return; }
то (на моей истории) получается такой результат:
К сожалению скрипт на истории все таки не работает, а только на видимой части.
Все дело в том что мне нужно делить на число int n, которое ранее используется для обращения к массиву arr[] и потому не может быть double
int I(double x) { return(MathRound(x)); }
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите пожалуйста как поделить число 1 на 2 чтобы получилось 0,5
Пробовал 1/2 получилось 0
Пробовал 1 % 2 получилось 5
КАК ПОЛУЧИТЬ 0.5! ???
В справке по mql ничего не написано