У вас не стоит Flash Player
Настройки
#79920 - Mon Oct 10 2016 12:15 PM Прошу помочь с Parabolic SAR
Atomic Offline
newbie

Registered: Mon Oct 10 2016
Записи: 27
Здравствуйте!

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

Итак. Сначала, я загрузил исторические данные, наложил на них параболик: все было ок, индикатор отображался сразу на всю длину выбранной истории.

Но, когда я подключился к реальному серверу, произошло следующее:

в момент времени ИКС (допустим, в понедельник, 10:00) у нашего терминала не было данных по торгуемому инструменту.

Данные начали накапливаться по барам, и индикатор, соответственно, начал собственное построение с 10:00.

Однако, с каждым новым баром, время расчета скрипта все увеличивалось.
С одной стороны, это понятно - чем больше у нас баров, тем больше время расчета. С другой стороны, скрипт производит тонну ненужной работы - ведь он побарно производит пересчет одних и тех же данных!

В начале торгового дня, в понедельник, скрипт производил расчет за 2мс. Приемлемо.
Уже через час, время увеличилось до 10мс. Хуже, но тоже приемлемо.
Затем, скрипт начал обрабатывать 20 000 баров. Время 50мс. Появились пропуски входа и, что гораздо хуже - пропуски выхода.
Еще через некоторое время, скрипт начал обрабатывать 70 000 баров. Время работы скрипта увеличилось до 1200мс!!!

Тогда я понял, что нужно ограничивать скрипт по количеству обрабатываемых данных и вот тут-то были зарыты грабли:
Если мы ограничиваем параболик количеством баров, то, при достижении на инструменте их количества, наш интервал для расчета начинает сдвигаться, а сам параболик начинает скакать.

Причем, абсолютно неважно, обрабатываем ли мы 1000 баров (2мс стабильно) или 100 000 баров (1500-2000мс). С каждым новым баром, индикатор может переворачиваться. Цена была ниже индикатора в 17:30:40, через секунду, в это же время, цена уже выше индикатора. Еще через секунду - в это же время - опять ниже.

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

Вопрос знатокам
Подскажите, как лучше поступить в этой ситуации?

Мне нужно обрабатывать данные по каждому бару, ограничив длину расчета 1000 баров, однако значения параболика мне нужны хотя бы за 100 000 баров.

Т.е. в идеале, мне нужно создать отдельный буфер, в который будет сохраняться значение моего параболика побарно, начиная первым числом месяца. Этот буфер будет очищаться в конце каждого месяца.

При этом, на реальном инструменте, мой скрипт не должен производить расчет за целый месяц (цена уже сложилась, а значит, и функция цены тоже - индикатор не должен скакать!!!).
В идеале, скрипт должен обрабатывать только последние 1000 баров, а данные параболика, исходя из формулы, ему нужны только за предыдущий период SAR[i-1], которое он возьмет из буфера.

Т.е. наш параболик будет сохраняться вместе с историческими данными и НЕ будет пересчитываться побарно на всем отрезке.

Подскажите, как лучше поступить, чтобы получить нормальный индикатор?

Сейчас, мне приходится постоянно сдвигать опцию "дата от", "время от", но это приводит к неточности расчетов, т.к. значение индикатора в 17:30, рассчитанного от начала дня, отличается от значения индикатора, рассчитанного от 17:00.


Отредактировано Atomic (Mon Oct 10 2016 03:28 PM)

Наверх
#79921 - Mon Oct 10 2016 01:12 PM Re: Прошу помочь с Parabolic SAR [Re: Atomic]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8135
У меня один вопрос.
Это встроенный индикатор или это какой-то самописный индикатор?

Наверх
#79926 - Mon Oct 10 2016 03:16 PM Re: Прошу помочь с Parabolic SAR [Re: ViL]
Atomic Offline
newbie

Registered: Mon Oct 10 2016
Записи: 27
Originally Posted By: ViL
У меня один вопрос.
Это встроенный индикатор или это какой-то самописный индикатор?


Это встроенный индикатор Parabolic SAR.

Наверх
#79929 - Mon Oct 10 2016 03:42 PM Re: Прошу помочь с Parabolic SAR [Re: Atomic]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8135
Тогда всё просто. Вам необходимо загрузить необходимое кол-во баров для расчета индикатора, ограничить загрузку МаксБаров, таким образом, чтобы индикатору хватало истории для расчета и он не перерисовывался. А потом думать над тем, почему компьютер не справляется со скоростью.

Наверх
#79933 - Mon Oct 10 2016 04:10 PM Re: Прошу помочь с Parabolic SAR [Re: ViL]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
Vil, человек пишет не об этом. А о том что если фиксить по числу баров то начало графика смещается и расчет параболика тоже. И постоянно так происходит.

Если честно то помочь тут нечем. Пробуйте ставить МаксДней. Или конкретно ДатаОТ. Каждый день менять эту дату.
Я так понял вы какие то секунда или тики используете, что конечно добавляет проблем smile.

Ну или нужно писать ваш скрипт на АПИ и тогда не будет левых расчетов никаких. Будет все шибко, гладко и без пропусков входов и выходов.
_________________________
__


Наверх
#79937 - Mon Oct 10 2016 04:45 PM Re: Прошу помочь с Parabolic SAR [Re: ra81]
Atomic Offline
newbie

Registered: Mon Oct 10 2016
Записи: 27
Originally Posted By: ViL
Тогда всё просто. Вам необходимо загрузить необходимое кол-во баров для расчета индикатора, ограничить загрузку МаксБаров, таким образом, чтобы индикатору хватало истории для расчета и он не перерисовывался. А потом думать над тем, почему компьютер не справляется со скоростью.


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

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

Если ограничивать количеством баров (МаксБаров в свойствах скрипта), то он не будет производить расчет предыдущего, пусть и уже загруженного, периода.

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

Originally Posted By: ra81
Vil, человек пишет не об этом. А о том что если фиксить по числу баров то начало графика смещается и расчет параболика тоже. И постоянно так происходит.

Если честно то помочь тут нечем. Пробуйте ставить МаксДней. Или конкретно ДатаОТ. Каждый день менять эту дату.
Я так понял вы какие то секунда или тики используете, что конечно добавляет проблем smile.

Ну или нужно писать ваш скрипт на АПИ и тогда не будет левых расчетов никаких. Будет все шибко, гладко и без пропусков входов и выходов.


Ну, я пока что и ставлю ДатаОт - но это решение костыльное: точность параболика, тянущегося от начала дня, меньше точности параболика, тянущегося от начала месяца.

________________
Как мне сохранять результаты расчета индикатора (выгрузка во внешний файл, потоково), чтобы потом побарно их не пересчитывать?

И как после этого подгружать этот файл также потоком?


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

Так, для вычисления всех точек интервала, мы единожды производим расчет, сохраняем результат, а затем, по приходу нового бара, считаем только одно число - последнее, не пересчитывая предыдущие.

Для расчета значения индикатора на баре № 100 001, мы посчитаем только одно число (одна итерация), вместо расчета индикатора на каждом из уже сложившихся баров (100 001 итерация).

Это и даст производительность без потери точности.

Наверх


Moderator:  ViL, sar