Есть несколько способов сделать это, я предпочитаю этот для «один раз в день» означает
string lastRunDate = null;
int Hour = 20;
int Minute = 20;
int OnInit()
{
Hour = timeTemp.hour;
Minute = timeTemp.min;
EventSetTimer(60);
}
void OnTimer()
{
MqlDateTime ActivationTime;
TimeToStruct(TimeLocal(), ActivationTime);
if (lastRunDate!=TimeToString(TimeCurrent(), TIME_DATE) && ActivationTime.hour == hour && ActivationTime.min == minute)
{
Print("This code should be printed once per day");
// ... after your codes, `remember today` !
lastRunDate = TimeToString(TimeCurrent(), TIME_DATE);
}
}
void OnDeinit(const int reason) {
EventKillTimer();
}
использовать TimeLocal()
. если вы знаете только время на своем сервере, рассчитайте временное смещение функции OnInit
между TimeLocal
и TimeCurrent
(если рынок не закрыт во время инициализации. *)
вы можете использовать TimeGMT()
, если вы можете определить свои условия по времени по Гринвичу.
Чтобы обнаружить закрытый рынок, вы можете проверить время последнего входящего тика. для валютных пар вы получаете много тиков в каждую минуту. поэтому, если последний тик старше одной минуты, рынок закрывается. чтобы проверить временные сбои в работе интернета, вы можете проверить время последнего тика с помощью более одной минуты триггера.
URIs пространства имен просто предназначены как уникальные идентификаторы (вот ссылка на правила для сравнения). Использование URI (по сравнению с, говорят, "нечто") может быть прослежен (я верю) к использованию URIs в XML DOCTYPE.
Который является также, я думаю, куда беспорядок прибывает относительно "восстанавливаемости" такого URIs. Спецификация XML требует, чтобы СИСТЕМНЫЙ идентификатор в DOCTYPE мог использоваться для получения DTD документа (я связываюсь с Аннотируемой Спецификацией XML, а не версией W3C, потому что я полагаю, что комментарий Tim Bray очень полезен).
Хотя другие спецификации (например, XML-схема) не требуют этого поведения, я полагаю, что это - полезная привычка следовать - особенно в случае целевых пространств имен Схемы. С одной стороны, это помогает потребителям Вашей схемы всегда найти корректное определение. Для другого, если Вы имеете право помещать документ в общедоступный URL, затем можно также удостовериться, что URI уникален.
Наконец: Универсальные идентификаторы ресурса (URIs) являются надмножеством Унифицированных указателей ресурсов (URL). У Вас может также быть Унифицированное имя ресурса (URN), и я верю (но не имейте спецификации удобной), что существует третья форма идентификатора.
Нет они не то же.
Самое большое различие было бы в формировании из относительного uris от той основы; с наклонной чертой относительный uri был бы потомком; без наклонной черты это был бы одноуровневый элемент - т.е. (Пример C#):
Uri uri = new Uri(@"http://www.w3.org/some-namespace/");
Console.WriteLine(new Uri(uri, "foo")); // http://www.w3.org/some-namespace/foo
uri = new Uri(@"http://www.w3.org/some-namespace");
Console.WriteLine(new Uri(uri, "foo")); //http://www.w3.org/foo
Да, w3c инструкции относительно URI, который Вы считали, корректны.
Эти два наличия пространств имен не равный строковый uri является различными пространствами имен. Даже капитализация и пробельные вопросы.
Uri пространства имен не означает, что издание запроса на него должно произвести веб-ответ. Поэтому любое обоснование, должно ли это или не должно заканчиваться "/", не слишком значимо.
На самом деле uri пространства имен не может даже удовлетворить синтаксические правила для URI, и он будет все еще служить своей цели для определения пространства имен. Совершенно полезно использовать пространство имен такой как, скажем:
"\/^%$#sdhfgds"
пока это уникально (обратите внимание, что никоим образом я не рекомендую такое использование :)). Существующие процессоры XML (такие как синтаксические анализаторы, процессоры XPath или XSLT) не повышают ошибок, когда они встречаются с таким пространством имен.