Библиотеки: Функция работы программы по времени - страница 2

 
Alexander Puzanov:

 

9.9 из 10 пользователей оставят пустое место или поставят 0 в поле ненужной сессии

 

 

Вот. Это хорошее замечание. 

 

Ну вот.

Теперь код стал жирным и неповоротким.

Больше так делать не буду. 

 
Vasyl Nosal:

Круто.

А что ж ты мне какую то недофункция предлагал когда я просил помочь с этой? А сейчас играешь царя горы? 

Я дал самую главную функцию и пример её использования для 2х сессий - больше чем вы просили. А учить писателя функций читать код - запроса не было и это ваще не ко мне. Если таки продолжите строить собственную Москву (ну или там Київ) - вникните, та функция и метод её использования оптимальны для неООП. Останется достроить преобразование строки в секунды
 
Alexander Puzanov:
Я дал самую главную функцию и пример её использования для 2х сессий - больше чем вы просили. А учить писателя функций читать код - запроса не было и это ваще не ко мне. Если таки продолжите строить собственную Москву (ну или там Київ) - вникните, та функция и метод её использования оптимальны для неООП. Останется достроить преобразование строки в секунды

Там нету 2 сессий:)))))

P.S. Преобразование уже сделано раз в сутки. 

 
Vasyl Nosal:

Там нету 2 сессий:)))))

Alexander Puzanov:
учить писателя функций читать код ... это ваще не ко мне
:)
 
Alexander Puzanov:
:)
Нуда. По такой логике там 4500 сессий. Только надо вызывать функцию проверки 4500 раз:)))
 

Профи минусуют.)))) 

Думаю пройдусь, гляну какие есть функции работы по времени. Нашел такое, это типа у меня хуже? :))))))))))))))))))))))))))))))))

if((Hour()>=3 && Hour()<6)||(Hour()>=8 && Hour()<12)||(Hour()>=14 && Hour()<17))
...
http://docs.mql4.com/ru/dateandtime
...
bool CheckHour(){
   if (HourStart==-1 || HourStop==-1) return(true);
   if (HourStart == HourStop && TimeHour(Time[0])==HourStart) return(true);
   if (HourStart<HourStop)
      if (HourStart<=TimeHour(Time[0]) && TimeHour(Time[0])<=HourStop) return(true);
   if (HourStart>HourStop)
      if (HourStart>=TimeHour(Time[0]) || TimeHour(Time[0])>=HourStop) return(true);
   return(false);
}
...
if (Hour()>=10&&Hour()<21)
...
extern int  BeginHour = 10;
extern int  EndHour = 20;
 
 
if(Hour() >= BeginHour && Hour() < EndHour)
 {
  // можно работать
  }
...
if ( (TimeCurrent()-StrToTime("StartTime1")) < 60){Alert ("ДА");}
if ( (TimeCurrent()-StrToTime("StartTime2")) < 60){Alert ("ДА");}
...
 
Alexander Puzanov:
1. Если у пользователя вашей функции не 3 "промежутка времени", а 1 или 2 или 4 или ещё сколько-ть ваша функция пользователю бесполезна? Дайте осмысленное название, чтобы было видно что функция рассчитана исключительно на 3 "промежутка времени"

2. Если у пользователя вашей функции другие, более осмысленные имена переменных - не start1 stop1 итд - ему ваша функция бесполезна? Сделайте её хотя бы минимально приспособленной к жизни за пределами вашего личного кода - передавайте функции параметры вместо использования конкретных имён глобальных переменных

3. Если пользователь вставит пробел напр перед двоеточием - обычное дело с текстовым полем ввода - функция накроется тазом? Как мало ей надо. Сделайте хотя бы проверку параметров, если корректировку наиболее популярных ошибок ввода не сможете

---

Кто-то сможет вставлять эту функцию скажем в десяток своих кодов, где будут нужны проверки "промежутков времени"? Да вы сами будете её каждый раз переписывать даже для собственных кодов. В чём же смысл помещать это в кодобазу и называть 'библиотекой'?

rev2

1) Если надо 1 или 2 промежутка, то при оставлении пустого значения старт-стоп функция просто пропустит этот интервал. Так как StringToTime вернёт 1970 год. Тоесть старт и стоп равны. А в функции только проверку если старт больше или меньше стопа.

2) Дык. Смысл передавать глобальные переменные через вызов функции?

3) Если пользователь вставит хоть 5 пробелов то  StringToTime всё ровно вернёт верное значение.

 

P.S. Только одна толковая подсказка была это раз в сутки преобразовывать стринг в тайм. За это спасибо.

 

Коллеги, все-таки хорошо уже то, что у кого-то есть желание делиться своим наработками и тем самым развивать MQL-сообщество. Другое дело, что автор пока совсем начинающий, и прежде чем что-либо выкладывать на всеобщее обозрение, неплохо было бы поинтересоваться у разных "гур" как правильно было бы сделать. А потом уже это делать под мудрым руководством Ким Ир Сена.

В общем, по грамотному, задача должна решаться через маску состояний и никак иначе. То, что автор использует три диапазона дат - лишь частный случай, т.к. во-первых, торговых состояний может быть больше чем два (торговать/не торговать)  а во-вторых, самих временных диапазонов может быть множество, а может быть и всего один. Поэтому предложенная функция, как и сам подход конечно же не применимы.

 
Vasiliy Sokolov:

Коллеги, все-таки хорошо уже то, что у кого-то есть желание делиться своим наработками и тем самым развивать MQL-сообщество. Другое дело, что автор пока совсем начинающий, и прежде чем что-либо выкладывать на всеобщее обозрение, неплохо было бы поинтересоваться у разных "гур" как правильно было бы сделать. А потом уже это делать под мудрым руководством Ким Ир Сена.

В общем, по грамотному, задача должна решаться через маску состояний и никак иначе. То, что автор использует три диапазона дат - лишь частный случай, т.к. во-первых, торговых состояний может быть больше чем два (торговать/не торговать)  а во-вторых, самих временных диапазонов может быть множество, а может быть и всего один. Поэтому предложенная функция, как и сам подход конечно же не применимы.

:)))))

 во-первых, торговых состояний может быть больше чем два (торговать/не торговать)

??????

 

 а может быть и всего один период

один,два не проблема. Нужно 4, дописывай строки по аналогии. Даже не программист поймёт как.