Пропуски баров на графике - страница 2

 

ну ещё как вариант - у тебя в том месте 0 (нулевое значение) буфера - попробуй поменять

void SetIndexEmptyValue( int index, double value)
Устанавливает значение пустой величины для линии индикатора. Пустые значения не рисуются и не показываются в DataWindow. По умолчанию значение пустой величины - EMPTY_VALUE.

и может у тебя как здесь

//---- значение 0 отображаться не будет

SetIndexEmptyValue(0,0.0);

SetIndexEmptyValue(1,0.0);

====

попробуй за 1000 баров Принтом вывести в лог значения расчитываемых данных ( аргументы и результат) и погляди где там 0 получаются...

---

или чтото такое поставь в ИНИиндикатора

DRAW_ZIGZAG 4 Отрезки между непустыми значениями чётной и нечётной линий (зигзаг)
 
Спасибо! за варианты получения адекватных расчётов! Я их
Mislaid:

Идея - переписать индикатор VininI_Supertrend, он то, точно, не расчитан на отсутствие баров в истории. Наличие символа в обзоре рынка влияет на закачку истории по символу, если только открыт график по инструменту, или вы ее запрашиваете через одну из функций:

iClose, iHigh, iLow, iOpen

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

Я не готов дискусировать на предмет какя цена лучше: вместо 10 бара с 9-го бара (будущее) или с 20 - го бара (прошлое). Моё мнение - ближайшая, что и делает стандартная функция iBarShift().

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

 
Aleksander:

ну ещё как вариант - у тебя в том месте 0 (нулевое значение) буфера - попробуй поменять

void SetIndexEmptyValue( int index, double value)
Устанавливает значение пустой величины для линии индикатора. Пустые значения не рисуются и не показываются в DataWindow. По умолчанию значение пустой величины - EMPTY_VALUE.

и может у тебя как здесь

//---- значение 0 отображаться не будет

SetIndexEmptyValue(0,0.0);

SetIndexEmptyValue(1,0.0);

====

попробуй за 1000 баров Принтом вывести в лог значения расчитываемых данных ( аргументы и результат) и погляди где там 0 получаются...

---

или чтото такое поставь в ИНИиндикатора

DRAW_ZIGZAG 4 Отрезки между непустыми значениями чётной и нечётной линий (зигзаг)


У меня при и нициализации индикаторные буфера инициализируются НУЛЯМИ.
Если в свойсвах линии поставить вместо:
    SetIndexStyle (4, DRAW_LINE);

заменить на

    SetIndexStyle (4, DRAW_ZIGZAG);

то рисоваться линия будет от предпоследнего значения к последнему, но на пропущенных барах информация ведь НЕ ПОЯВИТСЯ!!!

P.S. Кстати провёл эксперимент на предложенную замену - вообще рисоваться перестало!

 

Видимо, проблемы не понял.

На приведенных здесь картинках сравниваются инструменты, которые вообще котируются по-разному: круглосуточно, 9 часов в сутки, 14 часов в сутки. И все нормально, несмотря на такие естесственные "дыры".

 
hrenfx:

Видимо, проблемы не понял.

На приведенных здесь картинках сравниваются инструменты, которые вообще котируются по-разному: круглосуточно, 9 часов в сутки, 14 часов в сутки. И все нормально, несмотря на такие естесственные "дыры".

Ваш подход в получении корректных цен заслуживает внимания. Я ещё более подробно не смотрел, но для получения эквити корзины от момента StartTime до Time[0]. Я тоже создавал своё решение. А мне нужно было получить не только Close, но и Open, High и Low. Конечно же на этом пути мне пришлось делать допущения для получения коррекного значения.

Но данный казус с которым я столкнулся, лежит в плоскости отстутсвия значений вообще (на отдельных барах) при приемлемом качестве истории. И даже, если бы история на баре отсутствовала, то значение (хоть какое-нибудь) но должно было быть. А его НЕТ!!!!

 
если нет, тогда Делай Print аргументов и их результат - и проверяй ручками.... у тебя ошибки в формулах расчёта :)
 
TarasBY:

Но данный казус с которым я столкнулся, лежит в плоскости отстутсвия значений вообще (на отдельных барах) при приемлемом качестве истории. И даже, если бы история на баре отсутствовала, то значение (хоть какое-нибудь) но должно было быть. А его НЕТ!!!! 

Если возможно, опишите на примере. 

 

В окне данных что пишет на тех точках, где нет значений?

П.С. Кстати, Игорь, заметь, моим советом ты не воспользовался и код целиком не выложил. Как результат, сидим-гадаем, что было предсказуемо.

 

ХА-ХА-ХА!!!

Пропринтовал все получаемые данные (привожу кусочек лога):

09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: Buf_OUT[5 - 2010.12.09 05:30] = -4; Buf_UPHigh = 0; Buf_UP = 0
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[4 - 2010.12.09 06:00] = 0.9744; SuperTrend 1 = 0.9744; SuperTrend 2 = 0.9747
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[4 - 2010.12.09 06:00] = 1.315; SuperTrend 1 = 1.314; SuperTrend 2 = 1.3135
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[4 - 2010.12.09 06:00] = 0.9682; SuperTrend 1 = 0.9682; SuperTrend 2 = 0.9682
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[4 - 2010.12.09 06:00] = 0.8404; SuperTrend 1 = 0.8404; SuperTrend 2 = 0.8404
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[4 - 2010.12.09 06:00] = 82.4986; SuperTrend 1 = 82.4986; SuperTrend 2 = 82.4986
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[4 - 2010.12.09 06:00] = 1.3505; SuperTrend 1 = 1.3505; SuperTrend 2 = 1.3505
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[4 - 2010.12.09 06:00] = 62.8135; SuperTrend 1 = 62.8135; SuperTrend 2 = 62.8391
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[4 - 2010.12.09 06:00] = 1.342; SuperTrend 1 = 1.3417; SuperTrend 2 = 1.3417
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[4 - 2010.12.09 06:00] = 1.7732; SuperTrend 1 = 1.7725; SuperTrend 2 = 1.7721
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: Buf_OUT[4 - 2010.12.09 06:00] = -3; Buf_UPHigh = 0; Buf_UP = 0
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[3 - 2010.12.09 06:30] = 0.9744; SuperTrend 1 = 0.9744; SuperTrend 2 = 0.9744
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[3 - 2010.12.09 06:30] = 1.315; SuperTrend 1 = 1.315; SuperTrend 2 = 1.314
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[3 - 2010.12.09 06:30] = 0.9682; SuperTrend 1 = 0.9682; SuperTrend 2 = 0.9682
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[3 - 2010.12.09 06:30] = 0.8404; SuperTrend 1 = 0.8404; SuperTrend 2 = 0.8404
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[3 - 2010.12.09 06:30] = 82.5136; SuperTrend 1 = 82.4986; SuperTrend 2 = 82.4986
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[3 - 2010.12.09 06:30] = 1.3505; SuperTrend 1 = 1.3505; SuperTrend 2 = 1.3505
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[3 - 2010.12.09 06:30] = 62.8135; SuperTrend 1 = 62.8135; SuperTrend 2 = 62.8135
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[3 - 2010.12.09 06:30] = 1.342; SuperTrend 1 = 1.342; SuperTrend 2 = 1.3417
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[3 - 2010.12.09 06:30] = 1.7732; SuperTrend 1 = 1.7732; SuperTrend 2 = 1.7725
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: Buf_OUT[3 - 2010.12.09 06:30] = 2; Buf_UPHigh = 0; Buf_UP = 2
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[2 - 2010.12.09 07:00] = 0.9741; SuperTrend 1 = 0.9744; SuperTrend 2 = 0.9744
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[2 - 2010.12.09 07:00] = 1.315; SuperTrend 1 = 1.315; SuperTrend 2 = 1.315
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[2 - 2010.12.09 07:00] = 0.9682; SuperTrend 1 = 0.9682; SuperTrend 2 = 0.9682
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[2 - 2010.12.09 07:00] = 0.8404; SuperTrend 1 = 0.8404; SuperTrend 2 = 0.8404
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[2 - 2010.12.09 07:00] = 82.5516; SuperTrend 1 = 82.5136; SuperTrend 2 = 82.4986
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[2 - 2010.12.09 07:00] = 1.3505; SuperTrend 1 = 1.3505; SuperTrend 2 = 1.3505
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[2 - 2010.12.09 07:00] = 62.8135; SuperTrend 1 = 62.8135; SuperTrend 2 = 62.8135
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[2 - 2010.12.09 07:00] = 1.342; SuperTrend 1 = 1.342; SuperTrend 2 = 1.342
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[2 - 2010.12.09 07:00] = 1.7732; SuperTrend 1 = 1.7732; SuperTrend 2 = 1.7732
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: Buf_OUT[2 - 2010.12.09 07:00] = 0; Buf_UPHigh = 0; Buf_UP = 0
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[1 - 2010.12.09 07:30] = 0.9741; SuperTrend 1 = 0.9741; SuperTrend 2 = 0.9744
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[1 - 2010.12.09 07:30] = 1.315; SuperTrend 1 = 1.315; SuperTrend 2 = 1.315
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[1 - 2010.12.09 07:30] = 0.9682; SuperTrend 1 = 0.9682; SuperTrend 2 = 0.9682
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[1 - 2010.12.09 07:30] = 0.8404; SuperTrend 1 = 0.8404; SuperTrend 2 = 0.8404
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[1 - 2010.12.09 07:30] = 82.5516; SuperTrend 1 = 82.5516; SuperTrend 2 = 82.5136
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[1 - 2010.12.09 07:30] = 1.3501; SuperTrend 1 = 1.3505; SuperTrend 2 = 1.3505
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[1 - 2010.12.09 07:30] = 62.8135; SuperTrend 1 = 62.8135; SuperTrend 2 = 62.8135
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[1 - 2010.12.09 07:30] = 1.342; SuperTrend 1 = 1.342; SuperTrend 2 = 1.342
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[1 - 2010.12.09 07:30] = 1.7732; SuperTrend 1 = 1.7732; SuperTrend 2 = 1.7732
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: Buf_OUT[1 - 2010.12.09 07:30] = 1; Buf_UPHigh = 0; Buf_UP = 1
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[0 - 2010.12.09 08:00] = 0.9741; SuperTrend 1 = 0.9741; SuperTrend 2 = 0.9741
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[0 - 2010.12.09 08:00] = 1.3154; SuperTrend 1 = 1.315; SuperTrend 2 = 1.315
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[0 - 2010.12.09 08:00] = 0.9685; SuperTrend 1 = 0.9682; SuperTrend 2 = 0.9682
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[0 - 2010.12.09 08:00] = 0.8404; SuperTrend 1 = 0.8404; SuperTrend 2 = 0.8404
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[0 - 2010.12.09 08:00] = 82.5624; SuperTrend 1 = 82.5516; SuperTrend 2 = 82.5516
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[0 - 2010.12.09 08:00] = 1.3497; SuperTrend 1 = 1.3501; SuperTrend 2 = 1.3505
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[0 - 2010.12.09 08:00] = 62.8135; SuperTrend 1 = 62.8135; SuperTrend 2 = 62.8135
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[0 - 2010.12.09 08:00] = 1.342; SuperTrend 1 = 1.342; SuperTrend 2 = 1.342
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: SuperTrend[0 - 2010.12.09 08:00] = 1.7735; SuperTrend 1 = 1.7732; SuperTrend 2 = 1.7732
09:00:16 i-PSI@S-Trend_Basket EURCAD,M30: Buf_OUT[0 - 2010.12.09 08:00] = 1; Buf_UPHigh = 0; Buf_UP = 1

Как и следовало ожидать, "VininI_Supertrend" отрабатывает без претензий! И в выходном буфере (Buf_OUT[]) значение ЕСТЬ!!!

Одна загвоздочка (это специфика работы терминала). Буфер инициализируем в данном случае 0.0 и в случае, если, полученное значение тоже является тем же самым 0.0, то на грфике ничего не рисуется! И стоило проинициализировать буфер EMPTY_VALUE (пустым значением) - значение 0.0 тоже начало отрисовываться на графике!!!
Aleksander, твоя правда была... ;)

Спасибо всем не равнодушным!!!

 
alsu:

В окне данных что пишет на тех точках, где нет значений?

П.С. Кстати, Игорь, заметь, моим советом ты не воспользовался и код целиком не выложил. Как результат, сидим-гадаем, что было предсказуемо.

Алексей! Не в факте "не выкладывания всего кода" дело - большинство (подавляющее), заглянувших на эту страничку, даже в выложенный код не глянуло... Вся система (часть которой представляет данный индикатор - достаточно сложна, и зачем народу (я это понимаю) забивать свою голоу чужим кодом, поэтому, я и упростил задачу для тех, кто готов поделиться своими мыслями, а самое главное, схожим опытом... :)
Причина обращения: