пересечение линии на тиках?

 
Подскажите пожалуйста, как просто (а значит быстро работающая программа) определять пересечение какой-либо горизонтальной линии основываясь на тиках.
 
Например
OltTick < Level && Tick > Level
 
т.е. все же приходится определять переменную OldTick на глобальном уровне, нет возможности вытащить предыдущий тик из какого-нибудь массива?

А как быть с запаздыванием тиков (кто-нибудь сталкивался с этим?), для чего-то нужна функция RefreshRates( ) ?
 
Idol:
Подскажите пожалуйста, как просто (а значит быстро работающая программа) определять пересечение какой-либо горизонтальной линии основываясь на тиках.
А зачем мудрить? Пусть у тебя есть горизонтальная линия. Значит ее значение - высота обоих точек - это некая цена. Если цена открытия бара ниже твоей линии, а текущая цена выше, значит факт пересечения налицо. Также и наоборот. Если цена открытия выше твоей линии, а текущая цена ниже, значит опять имеем пересечение.
 
Idol:
т.е. все же приходится определять переменную OldTick на глобальном уровне, нет возможности вытащить предыдущий тик из какого-нибудь массива?

А как быть с запаздыванием тиков (кто-нибудь сталкивался с этим?),
С этим сталкивается эксперт. Он просто игнорирует тех, кто опоздал. Что по сути правильно. Ведь разные тики по TCP/IP протоколу могут прийти на клиентский терминал не обязательно в том порядке, каком они были отправлены сервером.

для чего-то нужна функция RefreshRates( ) ?
Чтобы освежиться
 
Reshetov:
Idol:
Подскажите пожалуйста, как просто (а значит быстро работающая программа) определять пересечение какой-либо горизонтальной линии основываясь на тиках.
А зачем мудрить? Пусть у тебя есть горизонтальная линия. Значит ее значение - высота обоих точек - это некая цена. Если цена открытия бара ниже твоей линии, а текущая цена выше, значит факт пересечения налицо. Также и наоборот. Если цена открытия выше твоей линии, а текущая цена ниже, значит опять имеем пересечение.
Это работает не корректно, особенно на часовых барах и выше. Цена за это время, к примеру, успевает подняться, пересекая нужную линию и опустить ниже цены открытия бара. Результат: никакого пересечения и не было.
Возможно, этот вариант пройдет для определенных случаев, но он не универсален.
 
Reshetov:
Idol:
т.е. все же приходится определять переменную OldTick на глобальном уровне, нет возможности вытащить предыдущий тик из какого-нибудь массива?

А как быть с запаздыванием тиков (кто-нибудь сталкивался с этим?),
С этим сталкивается эксперт. Он просто игнорирует тех, кто опоздал. Что по сути правильно. Ведь разные тики по TCP/IP протоколу могут прийти на клиентский терминал не обязательно в том порядке, каком они были отправлены сервером.

для чего-то нужна функция RefreshRates( ) ?
Чтобы освежиться
Хотелось бы знать в каких случаях нужно "освежаться". ;)
 
Idol:
Reshetov:
Idol:
т.е. все же приходится определять переменную OldTick на глобальном уровне, нет возможности вытащить предыдущий тик из какого-нибудь массива?

А как быть с запаздыванием тиков (кто-нибудь сталкивался с этим?),
С этим сталкивается эксперт. Он просто игнорирует тех, кто опоздал. Что по сути правильно. Ведь разные тики по TCP/IP протоколу могут прийти на клиентский терминал не обязательно в том порядке, каком они были отправлены сервером.

для чего-то нужна функция RefreshRates( ) ?
Чтобы освежиться
Хотелось бы знать в каких случаях нужно "освежаться". ;)
Когда у тебя программуля мудрит так долго, что время ее работы превышает значение функции Period()
 
Idol:
Reshetov:
Idol:
Подскажите пожалуйста, как просто (а значит быстро работающая программа) определять пересечение какой-либо горизонтальной линии основываясь на тиках.
А зачем мудрить? Пусть у тебя есть горизонтальная линия. Значит ее значение - высота обоих точек - это некая цена. Если цена открытия бара ниже твоей линии, а текущая цена выше, значит факт пересечения налицо. Также и наоборот. Если цена открытия выше твоей линии, а текущая цена ниже, значит опять имеем пересечение.
Это работает не корректно, особенно на часовых барах и выше. Цена за это время, к примеру, успевает подняться, пересекая нужную линию и опустить ниже цены открытия бара. Результат: никакого пересечения и не было.
Возможно, этот вариант пройдет для определенных случаев, но он не универсален.
У меня это работает корректно, т.к. проверка осуществляется по приходу каждого тикета, а не после if (prevtime = Time[0]) return(0);
 
Idol:
Хотелось бы знать в каких случаях нужно "освежаться". ;)
Reshetov:
Когда у тебя программуля мудрит так долго, что время ее работы превышает значение функции Period()
Глупости =)
RefreshRates() нужно использовать для получения свежих (актуальных, последних) рыночных данных (например, Аск и Бид).
А они могут "устареть" (поменяться) и за секунду ;)
 
komposter:
Idol:
Хотелось бы знать в каких случаях нужно "освежаться". ;)
Reshetov:
Когда у тебя программуля мудрит так долго, что время ее работы превышает значение функции Period()
Глупости =)
RefreshRates() нужно использовать для получения свежих (актуальных, последних) рыночных данных (например, Аск и Бид).
А они могут "устареть" (поменяться) и за секунду ;)
т.е. советник который обрабатывает каждый тик более ~секунды будет работать некорректно или запаздывать. Но в этом случае и RefreshRates() не поможет. Или я чего-то не улавливают или одно из двух :). ???
Какой-нибудь пример, что ли, для наглядности.
Причина обращения: