Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 535
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Так нужно такую хотелку сразу оговаривать :) .
Ситуация такая - если на графике есть бар, то ему соответствует ячейка в индикаторном буфере. Пока Вы в эту ячейку чего-нибудь не запишите, в этой ячейке будет храниться мусор.
При делении целых чисел(int,long,datetime и т.п.) результат целое число, т.е. остаток отбрасывается. 00:00 сегодня и 23:59:59 вчера, разность будет равна 1дню.
Во-первых это не так - доказано экспериментально в индикаторе.
Во-вторых каким образом получится 1 - покажите математически, с учетом того, что изначально у нас расчет в секундах.
Точно так же, как и обнуление простых типов. Присваиванием им значения 0. Как только нужным полям присвоили значения 0 - используете обратную операцию StructToTime().
Обнулил:
MqlDateTime str1;
datetime Open_timePos=iTime(_Symbol,0,pos);
TimeToStruct(Open_timePos,str1);
str1.hour=0;
str1.min=0;
str1.sec=0;
datetime start_time=StructToTime(str1);
Print("день=",TimeToStr(start_time));
Aleksey Lebedev:
При делении целых чисел(int,long,datetime и т.п.) результат целое число, т.е. остаток отбрасывается. 00:00 сегодня и 23:59:59 вчера, разность будет равна 1дню.
-Aleks-:
Во-первых это не так - доказано экспериментально в индикаторе.
Не надо оспаривать основы)
-Aleks-:
Во-вторых каким образом получится 1 - покажите математически, с учетом того, что изначально у нас расчет в секундах.
Используйте преобразование через структуру, если оно проще понимаецо.
Не надо оспаривать основы)
Используйте преобразование через структуру, если оно проще понимаецо.
Понимается то с чем разобрался. Я Ваш код не пробовал запустить, но думаю Вы это сделали сами, поэтому объясните мне не разумному, как так получается:
86401/86400-86400/86400 равняется 1, если по правилам математики 1,000012-1=0,000012 , а int должен же округлить до целого числа, т.е. 0.
Понимается то с чем разобрался. Я Ваш код не пробовал запустить, но думаю Вы это сделали сами, поэтому объясните мне не разумному, как так получается:
86401/86400-86400/86400 равняется 1, если по правилам математики 1,000012-1=0,000012 , а int должен же округлить до целого числа, т.е. 0.
а таки запустите)
Начало дня 00:00:00 делится на 86400 без остатка, предыдущий хотяб на 1 секунду меньше. Округляется - отбрасывается остаток при делении, а не всё выражение.
86400/86400=1
86399/86400=0
а таки запустите)
Начало дня 00:00:00 делится на 86400 без остатка, предыдущий хотяб на 1 секунду меньше. Округляется - отбрасывается остаток при делении, а не всё выражение.
86400/86400=1
86399/86400=0
Парни! А можно программно вывести на график индикатор? Или только руками?