Загадочный биржевой индикатор
а чего тут выяснять - читайте документацию...
если OnCalculate возвращает 0 результат, то индикаторные буферы не отображаются в окне данных, иначе отображаются. Если то так то сяк, то мерцают :-)
а чего тут выяснять - читайте документацию...
если OnCalculate возвращает 0 результат, то индикаторные буферы не отображаются в окне данных, иначе отображаются. Если то так то сяк, то мерцают :-)
return(rates_total);
Ниже приведен сильно упрощенный (ООП полностью отсутствует) индикатор, который показывает проторгованный оборот на основании тиковой биржевой истории
Вот такая картинка должна быть
Загадочность этого индикатора заключается в области, помеченной зеленым на скрине . В этом месте либо ничего не показывается, либо показываются значения, но с мерцанием на каждом тике.
Предлагаю разобрать причины столь загадочного поведения индикатора. Потратил много часов на выяснение причин - тщетно.
Определённая зависимость от количества копируемых тиков. Всё-таки копирование 100000 элементов структуры - это затратная операция. При первом запуске - ещё ладно, ну а вот в процессе работы копировать по нескольку раз в секунду 100000 элементов - это много.
Не идет так такого количества копирования на каждом тике. Чаще всего - 1 тик. Редко - несколько десятков. 100 000 - это запас.
Логирование с момента запуска (снизу-вверх)
2016.09.27 18:19:01.675 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:19:01.608 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:19:01.538 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:19:01.473 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:19:01.404 TurnOver (Si-12.16,M1) CopyTicks_elements = 2, FreshTicks = 1 2016.09.27 18:19:00.403 TurnOver (Si-12.16,M1) CopyTicks_elements = 2, FreshTicks = 1 2016.09.27 18:19:00.090 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:18:59.916 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:18:58.815 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:18:58.748 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:18:58.688 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:18:58.621 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:18:58.553 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:18:58.478 TurnOver (Si-12.16,M1) CopyTicks_elements = 2, FreshTicks = 1 2016.09.27 18:18:58.136 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:18:58.070 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:18:57.997 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:18:57.937 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:18:57.867 TurnOver (Si-12.16,M1) CopyTicks_elements = 1, FreshTicks = 0 2016.09.27 18:18:57.805 TurnOver (Si-12.16,M1) CopyTicks_elements = 52555, FreshTicks = 52550 2016.09.27 18:18:57.734 TurnOver (Si-12.16,M1) CopyTicks_elements = 100000, FreshTicks = 99995 2016.09.27 18:18:57.661 TurnOver (Si-12.16,M1) CopyTicks_elements = 100000, FreshTicks = 99998 2016.09.27 18:18:57.598 TurnOver (Si-12.16,M1) CopyTicks_elements = 100000, FreshTicks = 99999 2016.09.27 18:18:57.530 TurnOver (Si-12.16,M1) CopyTicks_elements = 100000, FreshTicks = 100000
Ну если не заметно, повторю
не, незаметно... приведён "сильно упрощенный" вариант и кто его знает что в нём упрощенно :-)
посмотри что возвращает OnCalculate при каждом вызове
PS/ вернуть 0 - единственный известный мне документированный способ скрыть буферы из окна данных.
не, незаметно... приведён "сильно упрощенный" вариант и кто его знает что в нём упрощенно :-)
посмотри что возвращает OnCalculate при каждом вызове
PS/ вернуть 0 - единственный известный мне документированный способ скрыть буферы из окна данных.
Давайте без флуда в этой ветке.
где флуд?
советы по элементарной отладке - проверь сначала якобы очевидное..
самая простая и ясная гипотеза : периодически rates_total(возвращаемое значение из OnCalculate) на выходе получается 0...вполне несложно скинуть в лог его зхачение на входе и на выходе..
где флуд?
советы по элементарной отладке - проверь сначала якобы очевидное..
самая простая и ясная гипотеза : периодически rates_total(возвращаемое значение из OnCalculate) на выходе получается 0...вполне несложно скинуть в лог его зхачение на входе и на выходе..
Потратил много часов на выяснение причин - тщетно.
Как вариант - уйти от CopyTicks и заполнять индикаторный буфер из генератора случайных чисел. Думаю моргание пропадёт.
Ниже приведен сильно упрощенный (ООП полностью отсутствует) индикатор, который показывает проторгованный оборот на основании тиковой биржевой истории
Вот такая картинка должна быть
Загадочность этого индикатора заключается в области, помеченной зеленым на скрине . В этом месте либо ничего не показывается, либо показываются значения, но с мерцанием на каждом тике.
Предлагаю разобрать причины столь загадочного поведения индикатора. Потратил много часов на выяснение причин - тщетно.