Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 855

 
День добрый всем. Я не сильный программист и поэтому не понимаю некоторых простых вещей. У меня такая проблема: надо в советнике среди закрытых ордеров выбрать последний закрытый по SL.
 
Igor Makanu:

нельзя усложнять простые задачи! ... сказал Я, который от нефиг делать даже ф-цию определения нового бара в класс обернул ))))

по сабжу:


идея понятна, только правильнее >= по всей видмости

if((timer1++)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((timer2++)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
leonerd:

идея понятна, только правильнее >= по всей видмости

не проверял, распринтуйте переменные сразу увидите, если на 1 ошибся, то или Ваш вариант или не обнуляйте, а присваивайте значения =1 счетчикам timer1 и timer2

как вариант, можно и так попробовать:


if((++timer1)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((++timer2)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
Igor Makanu:

не проверял, распринтуйте переменные сразу увидите, если на 1 ошибся, то или Ваш вариант или не обнуляйте, а присваивайте значения =1 счетчикам timer1 и timer2

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

 
leonerd:

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

а где Вам гарантированно в Виндовс системах можно получить таймер реального времени? - если система перегружена, то будут задержки

так и в MQL - если Вы нагрузили сложными расчетами OnTick() , то пока он не выполнится событие OnTimer() не  произойдет

имхо, даже МТ4 хватает для сложных расчетов, если не хватает то МТ5 - он реально на уровне С++ работает, но обычно нехватка производительности связана с плохим алгоритмом расчета - используйте профилировщик, не выполняйте вычисления каждый тик там где пока не появится новый бар нечего вычислять, не обсчитывайте всю историю если используете сигналы на последних 1-3 барах - вычислите всего 100 баров ... вариантов много

ЗЫ: работа с графическими обьектами очень тормозит все, работа со строками тоже снижает производительность - в теории, но в последнее время не замечал такого, вроде и работа с ф-циями преобразования времени тоже накладная - однозначно все в профилировщике видно, где много времени потратили - этот участок кода пытаемся реже использовать

Профилирование кода - Разработка программ - MetaTrader 5
Профилирование кода - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Профилирование — это сбор характеристик программы во время ее выполнения. При профилировании замеряется время выполнения и количество вызовов отдельных функций и строк в коде программы. При помощи этого инструмента программист может найти наиболее медленные участки кода и провести их оптимизацию. Профилирование можно проводить на обычном...
 
Igor Makanu:

а где Вам гарантированно в Виндовс системах можно получить таймер реального времени? - если система перегружена, то будут задержки

так и в MQL - если Вы нагрузили сложными расчетами OnTick() , то пока он не выполнится событие OnTimer() не  произойдет

имхо, даже МТ4 хватает для сложных расчетов, если не хватает то МТ5 - он реально на уровне С++ работает, но обычно нехватка производительности связана с плохим алгоритмом расчета - используйте профилировщик, не выполняйте вычисления каждый тик там где пока не появится новый бар нечего вычислять, не обсчитывайте всю историю если используете сигналы на последних 1-3 барах - вычислите всего 100 баров ... вариантов много

ЗЫ: работа с графическими обьектами очень тормозит все, работа со строками тоже снижает производительность - в теории, но в последнее время не замечал такого, вроде и работа с ф-циями преобразования времени тоже накладная - однозначно все в профилировщике видно, где много времени потратили - этот участок кода пытаемся реже использовать

Согласен, стандартный таймер также ничего не гарантирует. Ну спасибо, будем пробовать.

 

Добрый день, уважаемые!

Подскажите, пожалуйста, есть ли возможность в МКЛ4 задать открытие позиции по одному символу в момент открытия позиции по другому символу? Может такой вопрос уже обсуждался, тогда дайте ссылку.

Спасибо.

 
novichok2018:

Добрый день, уважаемые!

Подскажите, пожалуйста, есть ли возможность в МКЛ4 задать открытие позиции по одному символу в момент открытия позиции по другому символу? Может такой вопрос уже обсуждался, тогда дайте ссылку.

Спасибо.

Вопрос сформулирован не полностью.
Но вообще - можно. Но не одновременно, а последовательно в любом из двух случаев.
 
Artyom Trishkin:
Вопрос сформулирован не полностью.
Но вообще - можно. Но не одновременно, а последовательно в любом из двух случаев.

Отлично. А как это описать в коде? Например, если в 9-00 сложились условия и открылся БАЙ по фунту, то и по евро тоже открыть БАЙ (в 9-00).

 
novichok2018:

Отлично. А как это описать в коде? Например, если в 9-00 сложились условия и открылся БАЙ по фунту, то и по евро тоже открыть БАЙ (в 9-00).

Открылся как? Причина открытия какова?
Причина обращения: