Проблемы с Time() - страница 2

 

Это тоже не работает...

Day() == 1 || Day() == 2 || Day() == 3 || Day() == 4 

RaptorUK уже ответил вам там выше, ссылаясь на TimeDayOfWeek(). Разница между Day(), TimeDayOfWeek() и DayOfWeek() заключается в следующем (читайте внимательно)

int Day() = возвращает текущий день месяца, т.е. день месяца последнего известного времени сервера.

int DayOfWeek() = возвращает текущий день недели на основе нуля (0-воскресенье,1,2,3,4,5,6) последнего известного времени сервера.

int TimeDayOfWeek(datetime Time) = Возвращает день недели на нулевой основе (0 означает воскресенье,1,2,3,4,5,6) для указанной даты.


Таким образом, Day() = 1 может быть любым днем с понедельника по воскресенье.

BTW, сегодня 31 мая, функция Day() вернет 31 (дата), а DayOfWeek() вернет 4 (четверг).

Завтра 1 июня, функция Day() вернет 1 (дата), а функция DayOfWeek() вернет 5 (пятница).

Используйте это в качестве сценария:

Alert ("TimeDay of local time ",TimeDayOfWeek(TimeLocal())," and TimeDay of server time ",TimeDayOfWeek(TimeCurrent()));
Alert ("Day () is ",Day()," and DayOfWeek is ", DayOfWeek ());
 
toCFx:

LOL!

Я начинаю думать, что большинство функций, основанных на "времени", в MT4 имеют серьезные недостатки.

Я имею в виду, что если я сброшу всю свою логику управления позициями на что-то такое обыденное, как: TimeHour(TimeCurrent()) == 23 && TimeHour(TimeCurrent()) == 59, и не смогу добиться закрытия одиночной сделки вообще (советник просто игнорирует код!), то я бы сказал, что в MT4 есть некоторые проблемы, которые необходимо исправить в отношении этих типов функций.

LOL Вы не думаете, что если функции MQL4 Time-based имеют такие серьезные недостатки, то кто-то другой, вероятно, уже заметил бы их?

Может быть, вы сначала попробуете исправить свой неполноценный код, прежде чем утверждать, что функции неполноценны?

в вашем критерии закрытия попробуйте изменить:

TimeHour(TimeCurrent()) == 23 && TimeHour(TimeCurrent()) == 59

на:

if(TimeHour(TimeCurrent()) == 23 && TimeMinute(TimeCurrent()) == 59)

toCFx:

Код не может быть более простым! Я даю советнику указание открыть чертову сделку между 00:00 и 00:05. Это совсем не сложно. Шестилетний ребенок мог бы это закодировать. Вот еще раз: [b]TimeHour(TimeCurrent()) == 00 && TimeHour(TimeCurrent()) <= 05[/b].

Также вы можете попробовать исправить и это lol

change:

TimeHour(TimeCurrent()) == 00 && TimeHour(TimeCurrent()) <= 05

to:

if(TimeHour(TimeCurrent()) == 0 && TimeMinute(TimeCurrent()) <= 5)

 

Дорогой CFx,

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

1. Если вы хотите закрывать сделки с понедельника по четверг, все в 23:57, а в пятницу в 21:57.

   if (
       (DayOfWeek () >= 1 && DayOfWeek() <= 4 && TimeHour(TimeCurrent()) >= 23 && TimeMinute(TimeCurrent()) >= 57)
       || (DayOfWeek() == 5                   && TimeHour(TimeCurrent()) >= 21 && TimeMinute(TimeCurrent()) >= 57)
      )
      {
      // close it
      }

И вы можете модифицировать тот же код для Open Trade.

Почитайте здесь о тестировании https://www.mql5.com/en/articles/1512 .


2. Это важно: вы упомянули "инструменты". Если вы будете так любезны уточнить, что вы имеете в виду под "инструментами" - это нормально, если вы упомянете их название здесь. Мы используем только MetaEditor. Здесь много форумчан, которые используют некоторые онлайн-инструменты и просят нас исправить ошибки. Вы должны сказать нам, в чем дело, потому что ваши коды могут быть полны ошибок - например, ваша логика верна, но вы используете неправильные функции mql4.

... who uses a tool for helping me build EAs. That tool allows the use of some MQL structure, but it does not execute on explicit MQL functions. It simply takes MQL code, evaluates whether the MQL based condition is true/false, and then executes a custom function such as OpenBuy, OpenSell, CloseBuy, CloseSell, DeletePendingBuy, DeletePendingSell, etc. But, it does not run MQL code explicitly. For example, you can(not) use the Print or Comment function to get something to appear on the chart window of MT4 (just one example).


3. Мне кажется, что вам нравится писать длинные страницы, и я ничего не могу с этим поделать, но, пожалуйста, помните об этом:

Это мой первый пост. Во-первых, прошу заметить, что я не являюсь разработчиком MQL. .

чтобы вы не попали в неловкое положение, особенно после того, как сказали...

Я не разработчик MQL, но я действительно хорош в разработке логических конструкций, и я могу обнаружить системную проблему , когда я ее чувствую.

Мы всегда готовы помочь, даже читая ваши длинные эссе.

Вот ваш - очень длинный - первый пост.

Здравствуйте, сообщество MQL4!

Это мой первый пост. Во-первых, пожалуйста, не забывайте, что я не разработчик MQL. Я трейдер, который использует инструмент для создания советников. Этот инструмент позволяет использовать некоторую структуру MQL, но он не выполняет явные функции MQL. Он просто принимает код MQL, оценивает, является ли условие, основанное на MQL, истинным/ложным, а затем выполняет пользовательскую функцию, такую как OpenBuy, OpenSell, CloseBuy, CloseSell, DeletePendingBuy, DeletePendingSell и т. д. Но это не приводит к явному выполнению кода MQL. Например, вы можете использовать функцию Print или Comment, чтобы заставить что-то появиться на окне графика MT4 (только один пример).

Итак, я знаю совсем немного о MQL, и этого достаточно для того, чтобы я мог использовать инструмент разработки советников, который я использую для создания своих советников. На данный момент я создал 10 советников с помощью этого инструмента и отказался от 7 из них из-за непригодности, что примерно на 30% лучше, чем соотношение успешных прототипов, которое я получал при создании торговых систем в Excel. Обычно я ожидаю, что 7-8 идей из 10 окажутся не такими прибыльными, как ожидалось, оставляя 2-3 проекта достаточно прибыльными, чтобы начать процесс оптимизации. Ладно, хватит обо мне и о том, как я работаю.

Вот моя проблема, и я надеюсь, что я пришел в правильное место за помощью!

Я запускаю этот код [b]для закрытия сделок:[/b]

Day() == 1 || Day() == 2 || Day() == 3 || Day() == 4 && TimeHour(TimeCurrent()) >=23 && TimeMinute(TimeCurrent()) >=57 || Day() == 5 && TimeHour(TimeCurrent()) >=21 && TimeMinute(TimeCurrent()) >=57

Примечание: Проблема заключается в том, что все сделки остаются открытыми с понедельника по четверг до 23:57. Также все сделки остаются открытыми в пятницу до 21:57.


Я также запускаю этот код через блок MQL [b]для открытия сделок:[/b].

TimeHour(TimeCurrent()) == 00 && TimeMinute(TimeCurrent()) <= 05

Примечание: Единственная сделка, которая открывается между 00:00 и 00:05, - это самая первая сделка бэк-теста при нажатии на кнопку Tester Start. Эта сделка открывается точно в 00:00. Однако ни одна из других сделок не открывается между 00:00 и 00:05 позже в течение недели.

Итого:

- Одна сделка открывается после нажатия на кнопку "Старт тестера" в 00:00.
- Ни одна сделка впоследствии не закрывается в 23:57 (М-Ту) или 21:57 (Пн).
- После этого ни одна сделка не открывается в период с 00:00 до 00:05.

Все указанные выше времена имеют достаточный доступный поток тиков. Таким образом, в данных, используемых тестером, нет пробелов.

Любая помощь будет принята с благодарностью. Почему эти сделки не закрываются в указанное время? Почему сделки не исполняются, когда всегда есть торговый сигнал с 00:00 до 00:05, с понедельника по пятницу?

Спасибо!
cfx

 
   if( DayOfWeek()<1 || DayOfWeek()>5 || TimeMinute(TimeCurrent()) < 57 )
      return(0);
   else if( TimeHour(TimeCurrent()) >= 23  || ( DayOfWeek() == 5 && TimeHour(TimeCurrent()) >= 21) ){
     //Close
   }
 
CFx:

Я не использовал никаких операторов Print для такой цели.

Почему бы не открыть ваш код в MetaEditor, добавить несколько функций Print, чтобы сообщить вам, что происходит....

В MT4 нет отладчика, поэтому один из единственных доступных нам инструментов - это Print ... другой - Comment . . и это все.

 
RaptorUK:

Почему бы не открыть ваш код в MetaEditor, добавить несколько функций Print, чтобы рассказать вам, что происходит....

В MT4 нет отладчика, поэтому один из единственных доступных нам инструментов - Print ... другой - Comment . . и это все.


Я также часто использую Alert() для этих целей.
 

Инструменты. Расскажите нам об инструментах, не стесняйтесь, я узнал из комментариев RaptorUK, dabbler и SDC на днях. Так что, пожалуйста, расскажите нам.

:D

 
SDC:

Я тоже часто использую Alert() для этой цели.
Не использую... вот почему я забыл об этом... спасибо за исправление :-)
 
onewithzachy:

LOL. Ты тот, кто нереален. Этот твой код ...

... никогда не вернется к истине.

Это вам нужно дальше развивать "свою" логическую конструкцию.

И построить это...


Может быть, вам стоит попробовать прочитать ОП. Там ясно сказано, что я не разработчик MQL. Более того, существует огромное (огромное) различие между способностью логически построить язык программирования и способностью логически построить стабильно прибыльную торговую систему. К сожалению, в этом бизнесе вы найдете множество программистов, которые не имеют ни малейшего представления о том, что требуется для исследования, проектирования, архитектуры, создания, разработки, интеграции и внедрения интеллектуальной торговой системы, которая действительно работает при любых рыночных условиях (бычьих, медвежьих и переходных). Поэтому я понимаю вашу неспособность понять, к чему я веду. Я создал эту интеллектуальную торговую систему, и я сделал это с помощью Excel (из всех вещей).

Она была прибыльной на постоянной основе в течение последних 3,27 лет, в то время как в течение последних 7 лет на неполный рабочий день она давала результаты намного лучше средних, пока ее продолжали проектировать, строить и оптимизировать - полностью интегрированная, поддерживающая принятие решений торговая система, разработанная на основе 100% пользовательских индикаторов. В моей системе нет стандартных индикаторов 50+-летней давности, так как каждый индикатор, используемый в системе, создан на основе нового дизайна и концепции индикаторов, которые я создал с нуля в результате многолетних исследований и тестирования. Единственное, что мне осталось сделать, это написать об этом книгу.

Итак, что касается разработки торговых систем, которые работают, я бы предположил, что вы, вероятно, давно не видели на этом форуме таких, как я - если вообще видели. Кого вы знаете, кто создал новый класс индикаторов? Я не говорю о том, чтобы взять существующий дизайн индикатора, подправить его и дать ему новое имя - это называется продвижением текущего поколения индикаторов. Я говорю о совершенно новой концепции индикатора, основанной на теории рынка, которая еще не обсуждалась в широком масштабе? Они называются [b]Delta Differential Class Indicators[/b] и они не основаны на традиционных теориях рынка из тех, что вы когда-либо видели раньше, уверяю вас в этом.

Мой интерес в MQL заключается в том, чтобы выяснить, имеют ли индикаторы класса D2 ценность на более низких тайм-фреймах, поскольку прототип системы, откуда они взяты, использует ТОЛЬКО ежедневные, еженедельные, ежемесячные и годовые бары данных, чтобы производить один (1) торговый сигнал в 24 часа, который был от 91% до 99% точен к заданной цели в течение последних 3,27 лет. Это примерно 850+ торговых сигналов с точностью 91-99%, в целевом диапазоне от 17 до 67 пунктов за 24 часа (основная медиана).

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

Этот тест, это POC, чтобы выяснить, может ли горстка моих индикаторов функционировать хорошо ниже временного интервала Daily bar. Если я смогу найти техническое обоснование для автоматизации более низких таймфреймов с помощью моих конструкций, тогда я смогу оправдать время, которое мне придется потратить на изучение ООП и превращение прототипа в отдельное проприетарное торговое приложение для Windows (не для продажи ни при каких обстоятельствах).

Трейдеры торгуют. Программисты программируют. Я пока НЕ программист.

 
onewithzachy:

Это тоже не работает...

RaptorUK уже ответил вам там выше, ссылаясь на TimeDayOfWeek(). Разница между Day(), TimeDayOfWeek() и DayOfWeek() заключается в следующем (читайте внимательно)

int Day() = возвращает текущий день месяца, т.е. день месяца последнего известного времени сервера.

int DayOfWeek() = возвращает текущий день недели на основе нуля (0-воскресенье,1,2,3,4,5,6) последнего известного времени сервера.

int TimeDayOfWeek(datetime Time) = Возвращает день недели на нулевой основе (0 означает воскресенье,1,2,3,4,5,6) для указанной даты.


Таким образом, Day() = 1 может быть любым днем с понедельника по воскресенье.

BTW, сегодня 31 мая, функция Day() вернет 31 (дата), а DayOfWeek() вернет 4 (четверг).

Завтра 1 июня, функция Day() вернет 1 (дата), а функция DayOfWeek() вернет 5 (пятница).

Используйте это в качестве сценария:


Я использовал DayOfWeek(), как показано в одном из моих сообщений, и это все равно не сработало должным образом.