Функция CustomTicksAdd() содержит серьезную ошибку. Надеюсь, администратор поможет решить эту проблему. Спасибо! - страница 2

 
xiezhiqi #:

Например, в этом случае цена открытия 2025.06.02 04:05 вызовет ошибку. Правильная цена открытия — 5887,0, но фактическая цена открытия, сгенерированная функцией CustomTicksAdd(), составляет 5887,5.

Приложите короткий код, который воспроизводит ошибку. 

 
Aleksandr Slavskii #:

Совершенно верно.

Но проблема топикстартера в другом.

Если добавить в скрипт флаг 1300, то получим сообщение

2025.06.13 07:49:43.967 GetTickFlag (USDJPY,M1)  1030 TICK_FLAG_BID TICK_FLAG_ASK FLAG_UNKNOWN (1024)

Как вообще такое может быть, что флаг неизвестен?

Как я понимаю, проблема в том, что по этому флагу формируется открытие, и в последствии тело свечи/бара/К-линии, а ожидается, что тик будет пропущен.

 
Aleksey Vyazmikin #:
ожидается, что тик будет пропущен

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

 
Aleksey Vyazmikin #:

Если добавить в скрипт флаг 1300, то получим сообщение

Как вообще такое может быть, что флаг неизвестен?

Как я понимаю, проблема в том, что по этому флагу формируется открытие, и в последствии тело свечи/бара/К-линии, а ожидается, что тик будет пропущен.

Неизвестный флаг это нормально.

В формировании свечей флаги не принимают никакого участия.

Топикстартер вероятнее всего, отправляет в CustomTicksAdd() последний тик, а отправлять нужно последние тики.

Он пропускает тики, поэтому у него не правильная тиковая история получается.
 
Aleksandr Slavskii #:

В формировании свечей флаги не принимают никакого участия.

Суть в том, что это биржевые данные, и цена по краям стакана может болтаться, но это не будет менять свечу, и не будет соответственно формировать цену открытия, но функция CustomTicksAdd() начинает строить бар по полученным тикам, а не по ценам last.

 
xiezhiqi #:
но фактическая цена открытия, сгенерированная функцией CustomTicksAdd(), составляет 5887,5.

При создании пользовательского символа установлен соответствующий флаг, как в коде ниже?

CustomSymbolSetInteger(CUSTOM_SYMBOL_NAME, SYMBOL_CHART_MODE, SYMBOL_CHART_MODE_LAST);//Бары строятся по ценам Last
 
Aleksandr Slavskii #:
Неизвестный флаг это нормально.

Это где написано и из чего следует?

 
Aleksey Vyazmikin #:

При создании пользовательского символа установлен соответствующий флаг, как в коде ниже?

Это не имеет никакого отношения к флагам тиков. Это другой флаг.

 
Aleksey Vyazmikin #:

Это где написано и из чего следует?

Где то в учебнике попадалось. Сейчас искать не готов.

 
Aleksandr Slavskii #:

Это не имеет никакого отношения к флагам тиков. Это другой флаг.

Это настройка пользовательского символа, по идеи от неё зависеть должна интерпретация поступающих тиков - рисовать по цене тика ask/bid или по last бары.

Aleksandr Slavskii #:

Где то в учебнике попадалось. Сейчас искать не готов.

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