Всем привет!
ни для кого ни секрет, что в тестере не работает функция OnChartEvent()
поэтому приходится пользоваться такой конструкцией:
Первая строка для реального графика, а вторая для тестера!
НО есть большое но!
Для того, чтобы интерфейс "не страдал", приходится читать состояние кнопок каждый тик.
Это влияет на скорость работы панели в тестере!
Есть ли какой-то способ выйти из этих тормозов? может я чего-то пропустил?
Именно так и есть, нужно смотреть состояние кнопки каждый тик. В принципе, это не критично, если это торговая панель, там и не нужна супер-скорость теста, не будешь успевать совершать сделки.
Именно так и есть, нужно смотреть состояние кнопки каждый тик. В принципе, это не критично, если это торговая панель, там и не нужна супер-скорость теста, не будешь успевать совершать сделки.
так то да. но если это просто информационная панель :-) но и хочется, чтобы она тоже в тестере была функциональна, но не "жрала" время.
по профилированию она жрет почти 40 % времени
вторую строку сделайте отдельной функцией + проверка IsVisualMode
плюс проверяйте не каждый тик, а например через тик, или через 10 тиков
будет в 10 раз быстрее
так то да. но если это просто информационная панель :-) но и хочется, чтобы она тоже в тестере была функциональна, но не "жрала" время.
по профилированию она жрет почти 40 % времени
Т.к. панелька нужна только в визуальном режиме, то вынести его имплементацию в отдельную часть.
typedef void (*RunFunc)(void); RunFunc TickFunc; void VisualTesterMode() {} void UsualMode() {} int OnInit() { TickFunc = UsualMode; if (IsTesting() && IsVisualMode()) { TickFunc = VisualTesterMode; } return(INIT_SUCCEEDED); } void OnTick() { TickFunc(); }Так получается проверка на тестер только в ините и специфичный код изолирован и не требует рантайм проверки каждый раз.
Всем привет!
ни для кого ни секрет, что в тестере не работает функция OnChartEvent()
поэтому приходится пользоваться такой конструкцией:
Первая строка для реального графика, а вторая для тестера!
НО есть большое но!
Для того, чтобы интерфейс "не страдал", приходится читать состояние кнопок каждый тик.
Это влияет на скорость работы панели в тестере!
Есть ли какой-то способ выйти из этих тормозов? может я чего-то пропустил?
А в каком месте размещён этот кусок кода?
Если в OnChartEvent() то непонятно как выполняется
ObjectGetInteger(0,"SAMPLE",OBJPROP_STATE)
Если-же в OnTick() то как выполняется
if((id==CHARTEVENT_OBJECT_CLICK && (sparam=="SAMPLE")))
Я-бы завернул выполнение в тестере в if((MQLInfoInteger(MQL_TESTER))
Ребята.
Вы немного не поняли:
Естественно стоит проверка на то: тестер это или нет!
Этот код только для тестера стратегий в визуальном режиме. В остальных режимах отключена.
Тормоза именно при визуальном тестировании, и они очевидны.
вторую строку сделайте отдельной функцией + проверка IsVisualMode
плюс проверяйте не каждый тик, а например через тик, или через 10 тиков
будет в 10 раз быстрее
:-) Но это же совсем неправильно. смысл? мне нужно, чтобы панелька работала идеально четко на любом графике.
Я-бы завернул выполнение в тестере в if((MQLInfoInteger(MQL_TESTER))
:-) Тогда смысл темы теряется :-)
:-) Тогда смысл темы теряется :-)
А на уточняющие вопросы не принято отвечать? И какой тогда смысл потеряется?
А на уточняющие вопросы не принято отвечать? И какой тогда смысл потеряется?
Функция находится в OnTick для тестера потому, что в тестере стратегий OnChartEvent - не работает.
Если бы он работал - то я бы не опрашивал бы каждый тик состояние нажатия кнопки.
Каждый тик нужно опрашивать потому, чтобы работа панели была такая же как на реальном графике. Например панель для тестера стратегий.
- www.metatrader5.com
Тормоза именно при визуальном тестировании, и они очевидны.
у вас прямо в ифе выполняется код и для нормального режима и для визуального. может вы немного не поняли?
так то да. но если это просто информационная панель :-) но и хочется, чтобы она тоже в тестере была функциональна, но не "жрала" время.
по профилированию она жрет почти 40 % времени
Скорость в визуализаторе может понадобиться только для быстрой прокрутки. В таком случае, сделайте, например, кнопку, нажатие на которую вырубает панель ровно на час. И включит ее раньше только в случае, если произошел OnTrade.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет!
ни для кого ни секрет, что в тестере не работает функция OnChartEvent()
поэтому приходится пользоваться такой конструкцией:
Первая строка для реального графика, а вторая для тестера!
НО есть большое но!
Для того, чтобы интерфейс "не страдал", приходится читать состояние кнопок каждый тик.
Это влияет на скорость работы панели в тестере!
Есть ли какой-то способ выйти из этих тормозов? может я чего-то пропустил?