Ваши вопросы по языку MQL4

st2050

Гуру форума
Я тут, часть разговора пропустил, а шо тут у Вас происходит?

В моЁм понимании, не на панель надо стремиться, а на автомат. В смысле автоматической торговле.
А Вы что подумали?


Происходит обсуждение как легко скрыть/отобразить линии цены и как получить по челчку мышкой на линии ордера его тикет (этот вопрос я еще не решил).
Про автомат я задумываюсь, но пока не собрался с духом, собираюсь я долго. Торговать руками - это что-то вроде мазохизма.
А пока итог недели +18,95%. И Вам не хворать!
 
Последнее редактирование:

ref2015

Интересующийся
Подскажите как дописать (пауза после сигнала в секундах) для советника, при появлении сигнала на покупку или продажу советник выдерживал паузу.
 

_SERG_

Активный участник
Подскажите как дописать (пауза после сигнала в секундах) для советника, при появлении сигнала на покупку или продажу советник выдерживал паузу.

Я бы не паузу Sleep(), а задержку использовал, в виде разницы.
GetTickCount() окончания - GetTickCount() начала= Разница во времни.
Почему?
Потому, что Sleep() Задерживает выполнение эксперта на определенный интервал.
И не факт, что после задержки придёт котировка, и время задержки будет именно "минута".
Да и "минута", тоже понятие относительное.
А может, чуть больше, а может чуть меньше, но это уже вопрос выбора критерия условия.
Поэтому, анализ интервала надо разместить в функции OnTimer(), с частотой дискретизации в 10 раз больше времени анализируемого параметра. (Как минимум.)

Соль, перец, другие рекомендации, по вкусу.
 
Последнее редактирование:

mobidik

-----
Я бы не паузу Sleep(), а задержку использовал, в виде разницы.
GetTickCount() окончания - GetTickCount() начала= Разница во времни.
Почему? Потому, что Sleep() Задерживает выполнение эксперта на определенный интервал.

То, что можно с помощью GetTickCount() - согласен, а вот на счет:
...И не факт, что после задержки придёт котировка, и время задержки будет именно "минута".
А причем тут: после задержки придёт котировка - произошла задержка на выполнения кода на определенное значение времени, после чего код выполняется дальше и не имеет значения была ли котировка в этот промежуток времени. А вот с GetTickCount() нужно составлять условие, которое выполнится спустя N-е время с приходом нового тика, который может и задержаться. В связи с этим, задержка составит больше установленного времени, если код работает не по таймеру/OnTimer(), имхо.
 

_SERG_

Активный участник
То, что можно с помощью GetTickCount() - согласен, а вот на счет:

А причем тут: после задержки придёт котировка - произошла задержка на выполнения кода на определенное значение времени, после чего код выполняется дальше и не имеет значения была ли котировка в этот промежуток времени. А вот с GetTickCount() нужно составлять условие, которое выполнится спустя N-е время с приходом нового тика, который может и задержаться. В связи с этим, задержка составит больше установленного времени, если код работает не по таймеру/OnTimer(), имхо.

GetTickCount() понятно, что по условию, и вызов чего-то дальше......
"N-е время" Это как? Вопрос больше в обработке "события", которое не связано с приходом котировки. Ну раз "минута".

"А при чем..." А при том, что для выполнения операций с ордерами не требуется приход котировки.

Поправочка: На одном инструменте, или на нескольких.
Методика отличается.
 
Последнее редактирование:

mobidik

-----
GetTickCount() понятно, что по условию, и вызов чего-то дальше......
"N-е время" Это как?

Например, так (не по таймеру):
- выполнилось условие, подняли флаг и ждем "минуту" с помощью GetTickCount()
- последняя котировка была, когда задержка отработала уже 59 сек., ждем...
- следующая котировка пришла спустя 17 сек. и выполнилось условие по GetTickCount.
и что имеем, задержка составила уже "минута" + 16 сек. - вот и N-е время...
Как-то так.

PS.
Нам не известны все нюансы связанные с задержкой по задумке автора, реализовать можно по разному, все зависит от поставленных целей.
 

_SERG_

Активный участник
Например, так (не по таймеру):
- выполнилось условие, подняли флаг и ждем "минуту" с помощью GetTickCount()
- последняя котировка была, когда задержка отработала уже 59 сек., ждем...
- следующая котировка пришла спустя 17 сек. и выполнилось условие по GetTickCount.
и что имеем, задержка составила уже "минута" + 16 сек. - вот и N-е время...
Как-то так.

PS.
Нам не известны все нюансы связанные с задержкой по задумке автора, реализовать можно по разному, все зависит от поставленных целей.

Вопросы по аффтору понятны, пусть он нас простит. :laugh:
Яж про частоту дискеризации сказал, и про GetMicrosecondCount(), я в курсе, минута +17 цыфирь ОШИБОЧНАЯ.
Ну и про 59 и 00, тож понятно.
Давай на милисекунды перекинемся, аще тёрка будет конкретная.
Тут простой вопрос обработка события, а как? Это же вопрос результата, устраивающего афффффтора.
 

_SERG_

Активный участник
Sleep затримує, а не зупиняє виконання коду.

Зповагою до співрозмовника.
Так, дійсно, код не виконується, але і життя не зупиняється, мить, коли код продовжить працювати, стан подій вже зміниться, та не тільки ціна, а й наприклад сред, чи своп, чи взагалі зв'язок зникне.
ВИСНОВОК: Призупинений код шкодить загальному аналізу, чи стратегії, а продовження роботи, дозволяе відстежувати ті події, які стануться з моменту призупинення коду, до його відновлення.
"Зайва" додаткова перевірка захиістить від хибних висновків та дій.

Да действительно, код не выполняется, но жизнь продолжается, в момент, когда продолжит работать код, состояние событий измениться, и не только цена, а например спрэд, или своп, или связь пропадёт.
ВЫВОД: Остановленный код вредит общему анализу, или стратегии, а продолжение работы, позволяет отследить те события, которые произойдут с момента приостановки кода, до возобновления его работы.
Одна "лишняя" проверка убережет от неправильных выводов и действий.


:laugh::laugh::laugh::laugh:

Формулировку, я из хєлпа взял, так, что Метаквотовцы написали, то и процитировал.
 
Последнее редактирование:

eevviill2

Местный знаток
Зповагою до співрозмовника.
Так, дійсно, код не виконується, але і життя не зупиняється, мить, коли код продовжить працювати, стан подій вже зміниться, та не тільки ціна, а й наприклад сред, чи своп, чи взагалі зв'язок зникне.
ВИСНОВОК: Призупинений код шкодить загальному аналізу, чи стратегії, а продовження роботи, дозволяе відстежувати ті події, які стануться з моменту призупинення коду, до його відновлення.
"Зайва" додаткова перевірка захиістить від хибних висновків та дій.

Да действительно, код не выполняется, но жизнь продолжается, в момент, когда продолжит работать код, состояние событий измениться, и не только цена, а например спрэд, или своп, или связь пропадёт.
ВЫВОД: Остановленный код вредит общему анализу, или стратегии, а продолжение работы, позволяет отследить те события, которые произойдут с момента приостановки кода, до возобновления его работы.
Одна "лишняя" проверка убережет от неправильных выводов и действий.


:laugh::laugh::laugh::laugh:

Формулировку, я из хєлпа взял, так, что Метаквотовцы написали, то и процитировал.
RefreshRates()
все інше викликається і взнається по ходу коду.
 

_SERG_

Активный участник
RefreshRates()
все інше викликається і взнається по ходу коду.

Яж сказал, тут, как аффтор порешит, я свою точку зрения обозначил.

Может условия заставят её пресмотреть когда то.

Но в текущих условиях (моих) мне приходится укладывать код в некое время , и тратить это время на остановку кода считаю нецелесообразным. ИХМО.:laugh:

Про RefreshRates(), на одном инструменте, пользоваться можно, а на нескольких, из одного советника, не совсем.
А приобретённые привычки потом сложно менять.
 
Последнее редактирование:

ref2015

Интересующийся
нужно еще после задержки дописывать повторную проверку сигнала если нет сигнала и сделки нет
 

eevviill2

Местный знаток
...
Про RefreshRates(), на одном инструменте, пользоваться можно, а на нескольких, из одного советника, не совсем.
А приобретённые привычки потом сложно менять.
;)
Наприклад шоб взнати бід gbpusd MarketInfo("GBPUSD",MODE_BID) треба.
А це функція, її данні отримуються при виклику.
 
Верх