Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2091

 
JRandomTrader #:

Простой вариант получения начала суток:

Гораздо более быстрый вариант:

Прошу прощения, но мне нужно получить переменную начала суток для дальнейшего сравнения с действующим времени суток. У меня в этой переменной времени

должны меняться только год, месяц и день, а время постоянно должно быть на ноле  00:00:00  

 
vladeimirami #:

Прошу прощения, но мне нужно получить переменную начала суток для дальнейшего сравнения с действующим времени суток. У меня в этой переменной времени

должны меняться только год, месяц и день, а время постоянно должно быть на ноле  00:00:00  

Так я это и показал. Не понимаю, в чём проблема.

Сделайте

TimeToStruct(TimeCurrent()/(3600*24)*(3600*24),stm);

А для текущего времени суток удобно взять остаток от деления на число секунд в сутках.

TimeCurrent()%(3600*24); // к-во секунд, прошедших с начала суток 

И сравнивать его с "Часы*3600+Минуты*60+Секунды"

 
JRandomTrader #:

Так я это и показал. Не понимаю, в чём проблема.

Сделайте

А для текущего времени суток удобно взять остаток от деления на число секунд в сутках.

И сравнивать его с "Часы*3600+Минуты*60+Секунды"

Он просто не знает как это присвоить какой либо переменной.

 
vladeimirami #:

Прошу прощения, но мне нужно получить переменную начала суток для дальнейшего сравнения с действующим времени суток. У меня в этой переменной времени

должны меняться только год, месяц и день, а время постоянно должно быть на ноле  00:00:00  

Начало суток только в ОнТаймер, да и ваще время как таковое, не привязанное ни чему, т.к. ОнТик будет получать время в момент прихода тика, и это не начало суток до миллисекунд, это либо в прошлых сутках, либо уже в нынешних с определенным временем.

 
JRandomTrader #:

Так я это и показал. Не понимаю, в чём проблема.

Сделайте

А для текущего времени суток удобно взять остаток от деления на число секунд в сутках.

И сравнивать его с "Часы*3600+Минуты*60+Секунды"

JRandomTrader, я протупил. Все получилось. Спасибо за консультацию.

 
JRandomTrader #:

Так я это и показал. Не понимаю, в чём проблема.

Сделайте

А для текущего времени суток удобно взять остаток от деления на число секунд в сутках.

И сравнивать его с "Часы*3600+Минуты*60+Секунды"

 

Я очень сильно извиняюсь, что опять вставляю свой пятак. Но...

Хочу и я внести свою лепту.

Просто не много не доганяю с вычислениями  /(3600*24)*(3600*24) ??????? Если у вас хватит терпения и выдержки то пожалуста объясните как

для самого бестолкового ход этих вычислений. Я не думаю что это заумно, просто я чего то немного не въеду.


Но я пошел другим путем. Для меня просто здесь  лучше видно при отладке какое время для дальнейшего сравнения.

Я посмотрел в скобки и увидел.

   string newtime="00:00:00";

  Print(StringToTime(newtime));


Вот и распечатка в тестере:

2022.12.29 21:03:28.486 2016.02.17 00:08:00   2016.02.17 00:00:00

и распечатка с терминала:

2022.12.29 20:55:48.910 BTCUSD_H1 (BTCUSD,D1) 2022.12.29 00:00:00


Огромное спасибо за помощь. Ваш опыт огромная сила.

 
vladeimirami #:

 

Просто не много не доганяю с вычислениями  /(3600*24)*(3600*24) ??????? Если у вас хватит терпения и выдержки то пожалуста объясните как

для самого бестолкового ход этих вычислений. Я не думаю что это заумно, просто я чего то немного не въеду.

TimeCurrent()

возвращает к-во секунд, прошедшее с 01.01.1970 00:00:00

Если мы разделим это число на к-во секунд в сутках (24ч * 60м * 60с === 24 * 3600), получим к-во прошедших суток.

Если отбросим дробную часть или просто разделим нацело, отбросив остаток (а именно так работает деление для целых - integer чисел) - получим к-во прошедших целых суток.

И умножив его, опять же, на к-во секунд в сутках, получим к-во прошедших секунд на момент начала суток.


StringToTime() и TimeToString() - довольно "дорогие" (медленные) функции, и по возможности их стоит избегать, если они выполняются многократно - например, на каждом тике или в цикле.

 
JRandomTrader #:

возвращает к-во секунд, прошедшее с 01.01.1970 00:00:00

Если мы разделим это число на к-во секунд в сутках (24ч * 60м * 60с === 24 * 3600), получим к-во прошедших суток.

Если отбросим дробную часть или просто разделим нацело, отбросив остаток (а именно так работает деление для целых - integer чисел) - получим к-во прошедших целых суток.

И умножив его, опять же, на к-во секунд в сутках, получим к-во прошедших секунд на момент начала суток.


StringToTime() и TimeToString() - довольно "дорогие" (медленные) функции, и по возможности их стоит избегать, если они выполняются многократно - например, на каждом тике или в цикле.

JRandomTrader огромное спасибо. Дошло. Все понял. Я не доганял из за этого - (а именно так работает деление для целых - integer чисел). Теперь все стало понятно.

С благодарностью ваш внимательно слушающий ученик.

 
Aleksandr Egorov #:
ребят подскажите есть ли сервис где можно слепить несколько отчетов в один для статистики ?
Report Manager - программа для работы с отчетами. Если вы это имели в виду. 
 
Добрый день
.помогите найти или сделать бота...который тупо откр и закр позы с ТП и СЛ. 
Время откр и закр бота рег.
Без индюков...
Бот просто следует за ценой и по ТП или СЛ. Кроет позы, и одновременно выставляя следующие .
Точка входа начало любого тайфре
 Вот на селл и Вот на вуа. Если мт5
Есть интересный мат алг. Хочу проверить его на истории...
Всех с новым годом....