Автор Тема: EasyLanguage  (Прочитано 52380 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ihaar

  • Давно не был на форуме
  • *
  • Сообщений: 1 067
    • Просмотр профиля
EasyLanguage
« Ответ #50 : 12 Апреля 2014, 04:20:02 »
хочу ограничить расчёт своего индикатора только областью заключённой между двумя вертикальными линиями (startLine и endLine), с возможностью эти линии двигать руками интерактивно.

линию я уже нарисовал, её координата это дата и время, вот теперь хочу найти как эту координату получить в виде переменной

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 414
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #51 : 12 Апреля 2014, 05:23:16 »
хочу ограничить расчёт своего индикатора только областью заключённой между двумя вертикальными линиями (startLine и endLine), с возможностью эти линии двигать руками интерактивно.

линию я уже нарисовал, её координата это дата и время, вот теперь хочу найти как эту координату получить в виде переменной

Странно, но свойства для получения именно даты напрямую нет. Недоработка разработчиков.
Надо делать через обработку событий ChartingHost.

Оффлайн ihaar

  • Давно не был на форуме
  • *
  • Сообщений: 1 067
    • Просмотр профиля
EasyLanguage
« Ответ #52 : 12 Апреля 2014, 05:31:22 »
в описании класса вертикальной линии
https://help.tradestation.com/09_01/tsdevhelp/Subsystems/elobject/class/verticalline_class.htm#
есть среди свойств линии такой параметр
Цитировать
Position    double    Gets or sets the position of the vertical line as drawing object point.
я так понимаю он позволяет получить (gets) позицию данной линии на графике как точку (DTpoint например)
разве это не оно?
просто не понятно как это сделать

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 414
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #53 : 12 Апреля 2014, 05:56:50 »
я так понимаю он позволяет получить (gets) позицию данной линии на графике как точку (DTpoint например)
разве это не оно?
просто не понятно как это сделать

А никак. Смотрим под отладчиком:

ila_rendered

Свойство Price сделано доступным для чтения, а свойство с временем сделано недоступным. Баг разработчиков. Причем передаваемый в ChartingHost объект Args.Element тоже имеет кастрированные свойства. Нет ни доступа к исходному объекту, ни доступа к свойству Tag. Возможно в TS 9.5 они это пофиксили.

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 414
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #54 : 12 Апреля 2014, 06:19:33 »
У TrendLine эти удоты тоже заблокировали доступ ко времени начала линии. Можно обратиться к MTL.StartPoint.Price, MTL.EndPoint.Price, но нет доступа к данным по времени. Хотя нужные свойства под отладчиком просматриваются.

Оффлайн ihaar

  • Давно не был на форуме
  • *
  • Сообщений: 1 067
    • Просмотр профиля
EasyLanguage
« Ответ #55 : 12 Апреля 2014, 06:34:15 »
получается, что пока что это просто дополнительные возможности по добавлению графических элементов на чарты.
из-за отсутствия важной координаты по времени интерактива никакого не получится

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 414
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #56 : 12 Апреля 2014, 07:05:47 »
получается, что пока что это просто дополнительные возможности по добавлению графических элементов на чарты.
из-за отсутствия важной координаты по времени интерактива никакого не получится

Может я что-то не догоняю. У них ChartTrading сделан на Easy. Значит все должно быть предусмотрено. Пробую разобраться. Свой код прилагаю.
Если через ChartingHost можно получать как-то ссылку на исходный объект рисования, то любая интерактивность возможна.  А если нет, то нет.

Оффлайн ihaar

  • Давно не был на форуме
  • *
  • Сообщений: 1 067
    • Просмотр профиля
EasyLanguage
« Ответ #57 : 12 Апреля 2014, 07:23:14 »
в ChartTrading код большой, но я проверил поиском, там не используются классы линий и точек.
возможно там для интерактивного двигания линий ордеров созданы специальные классы именно для этих задач. а всё остальное интерактивным быть не может.
интеркативная работа с ордерами может интересовать только клиентов их брокерской части.
и возможно это причина по которой интерактив для обычных индикаторов может быть заблокирован - им более выгоден функционал который привлекает новых клиентов, а не работает на независимость платформы.
если такое положение вещей сохранится и в 9.5, то думаю так и есть.


Оффлайн Gelium

  • Администратор
  • Сообщений: 9 414
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #58 : 12 Апреля 2014, 07:28:21 »
Пока я не понял как определить какой из созданных в коде объектов рисования был выбран пользователем. ChartingHost не дает нужных свойств.

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

Не думаю, что они специально блокируют интерактивность. Просто забыли сделать видимыми свойства некоторых объектов. Мы же можем просто использовать таймер и проверять свойства объектов периодически. Так ведь нет всех нужных свойств. Плюс есть глюки с изменением свойств. Например, если менять свойства подписи, объект вообще исчезает с графика. Поэтому сначала надо удалить старый объект, потом создавать новый. В наличии глюки и плохо продуманная структура классов. Нет свойств для задания прозрачности. Возможно в TS 9.5 они поправили эти недоработки.

Оффлайн ihaar

  • Давно не был на форуме
  • *
  • Сообщений: 1 067
    • Просмотр профиля
EasyLanguage
« Ответ #59 : 12 Апреля 2014, 07:36:07 »
кстати, горизонтальная линия не имеет координаты время, а только цену, это свойство доступно.
Цитировать
Price    double    Gets or sets a double representing the Price value of the line.
но что-то я не могу заставить индикатор брать этот параметр у линии которую я передвинул руками
myHLine.Price.ToString() упрямо выдаёт цену на которой линия изначально была создана, а не цену на которую я её передвинул