EventSetTimer,OnTimer - страница 3

 

Разработчики. Ещё раз про проблему.

В коде есть код который отрабатывается каждый тик, на первом тике открытие, за 3 секунды до конца свечи закрытие через таймер.

Кто первый начал выполнятся тот и выиграл. Таким образом то закрытие пропускается, то открытие.

Закрытие через то что на 57 секунде код в старте выполнялся.

Открытие потому что таймер пока закрывал ордера и пришел первый тик и второй...

 

eevviill:

...

Я прошу. Не флудите.

Если реально хотите помочь то тправтье в сервис деск ссылку с этой темой. Пусть метаквоты обратят свой божественный взор на простых сметрных.

Сам не могу так как заблокирован.

Хорошо,.. удалил свои сообщения... можете даже удалить свои ответы на них ... что бы ответного "флуда" не было

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

...

 
eevviill:

Разработчики. Ещё раз про проблему.

В коде есть код который отрабатывается каждый тик, на первом тике открытие, за 3 секунды до конца свечи закрытие через таймер.

Кто первый начал выполнятся тот и выиграл. Таким образом то закрытие пропускается, то открытие.

Закрытие через то что на 57 секунде код в старте выполнялся.

Открытие потому что таймер пока закрывал ордера и пришел первый тик и второй...

Разработчики Вашу проблему никак решить не могут.

У Вас есть все возможности. В OnTick Вы всегда можете узнать, что уже должен прийти таймер, в OnTimer Вы всегда можете определить, что пришёл новый тик

 
stringo:

Разработчики Вашу проблему никак решить не могут.

У Вас есть все возможности. В OnTick Вы всегда можете узнать, что уже должен прийти таймер, в OnTimer Вы всегда можете определить, что пришёл новый тик



ОК. Решить нет, а помочь как это сделать?

1) Ну узнаю в старте что на текущий тик 57 секунда. Запрещаю выполнение кода на этом тике. А если тик был на 56 секунде и то что в старте ещё выполняется и на 57 и на 58? Таймер пролетает?

2) Пока то что делается в таймере занимает больше 3 секунд. Скажем 6. На новом тике открытие ордеров если их 0. Но их не 0 потому что ещё закрываются ордера(6 секунд).

Вы хотябы дайте объяснение что выполняется раньше, паралельно это выполняется, прерывают ли проценсы друг друга, пропускается ли один процес, у кого преймущество.

 
eevviill:

ОК. Решить нет, а помочь как это сделать?

Не вопрос. https://www.mql5.com/ru/job
 
stringo:

Не вопрос. https://www.mql5.com/ru/job


Я в шоке. Никаокй информации не даёте. Как писал другой модератор Легче самому разузнать-проэесперементировать. Такое чувство что это секретный язык програмирования.

И после этого ещё и платно предлагаете? Не даром я "хорошо" отзывался про разработчиков.

Можете меня забанить чтобы я не надоедал и у меня вдруг не появилось желание писать что то? Или надо какие то матюки написать?

 
eevviill:


Я в шоке. Никаокй информации не даёте. Как писал другой модератор Легче самому разузнать-проэесперементировать. Такое чувство что это секретный язык програмирования.

И после этого ещё и платно предлагаете? Не даром я "хорошо" отзывался про разработчиков.

Можете меня забанить чтобы я не надоедал и у меня вдруг не появилось желание писать что то? Или надо какие то матюки написать?

Мы даём очень много информации. Видимо, настолько много, что Вы не в состоянии найти нужную Вам информацию

Вы знаете семантику слова "сотрудничество"?

Если не знаете, то скажу. Сотрудничество означает совместную работу. Реальную работу. Кто-то один делает одну часть реальной работы, кто-то другой делает другую часть реальной работы.

 
stringo:

Мы даём очень много информации. Видимо, настолько много, что Вы не в состоянии найти нужную Вам информацию

Вы знаете семантику слова "сотрудничество"?

Если не знаете, то скажу. Сотрудничество означает совместную работу. Реальную работу. Кто-то один делает одну часть реальной работы, кто-то другой делает другую часть реальной работы.


Это да. Больше информации я даже не смог бы представить.

OnTimer

Функция OnTimer() вызывается при наступлении события Timer, которое генерируется системным таймером только для экспертов и индикаторов – использовать ее в скриптах нельзя. Периодичность наступления этого события устанавливается при подписке на получение функцией EventSetTimer() уведомлений о событии Timer.

Отписывание от приема посылки событий таймера для конкретного эксперта производится функцией EventKillTimer(). Функция должна быть определена с типом void, параметров не имеет:

void OnTimer();
Рекомендуется вызывать функцию EventSetTimer() однократно в функции OnInit(), а функцию EventKillTimer() вызывать однократно в OnDeinit().

Каждый эксперт и каждый индикатор работает со своим таймером, и получает события только от него. При завершении работы mql4-программы таймер уничтожается принудительно, если он был создан, но не был отключен функцией EventKillTimer().
 
Очень туманно излагаете свои мысли. Может поможет информация о том, что новый бар (в реале) приходит совсем не обязательно на начало новой минуты ни по "серверному" времени (TimeCurrent()), ни по "местному" (TimeLocal()). Не верите - поэкспериментируйте.
 
IgRU4ek:
Очень туманно излагаете свои мысли. Может поможет информация о том, что новый бар (в реале) приходит совсем не обязательно на начало новой минуты ни по "серверному" времени (TimeCurrent()), ни по "местному" (TimeLocal()). Не верите - поэкспериментируйте.


Что тут туманного?

Спрашиваю разработчиков взаимодействие OnTimer() и OnTick()

(что выполняется раньше, паралельно это выполняется, прерывают ли проценсы друг друга, пропускается ли один процес, у кого преймущество)

Причина обращения: