Создание линии-индикатора показывающей потенциальный профит

 
Привет! Захотелось мне сделать такой индикатор-линию, но столкнулся с проблемой: сделать это после события не проблема (то есть взяли линию потащили куда нужно отпустили и появился нужный расчет профита), но вот сделать это во время движения линии никак не получается... Думаю дело в обработчике событий, но не найду нужного типа событий... Может кто наставить на путь истинный? 
 
На мой взгляд описание слишком скудное. Я лично совсем не понял задачу.
 
Alexey Viktorov:
На мой взгляд описание слишком скудное. Я лично совсем не понял задачу.

Да, я подозревал что так будет... Попробую иначе: у нас есть 3 ордера рыночных без стопов и профитов. Я кидаю на график линию OBJ_HLINE и в том месте где она появилась появляется так же OBJ_LABEL с посчитанным потенциальным профитом или лосом НА ЦЕНЕ ЛИНИИ. Примерно так:

дальше я выделяю линию и тащу ее вниз и ВО ВРЕМЯ движения показатели метки меняются, то есть прибыль или убыток меняются... Ну как смог так и объяснил:)

 

Пробовал так:

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
   {
      if(id==CHARTEVENT_OBJECT_CLICK)
      {
         ObjectSetInteger(0,"Profit Box",OBJPROP_XDISTANCE,(int)lparam);
         ObjectSetInteger(0,"Profit Box",OBJPROP_YDISTANCE,(int)dparam-18);
      }
   }   

работает, но только по завершении движения...

получается как бы все обработчики событий срабатывают уже после завершения самого события...

 

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

Я-бы сделал её по текущей цене или между аском и бидом. И на каждом тике менял ей цену вместе с изменением цены инструмента. А когда руками линию сдвинули, тут и рисуем лейбл. Это в обработчике OnChartEvent() а потом в OnCalculate() считается расстояние до линии, множится на цену тика и лот, каждый тик и меняется текст лейбла. Вот и всё.

 
Alexey Viktorov:

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

Я-бы сделал её по текущей цене или между аском и бидом. И на каждом тике менял ей цену вместе с изменением цены инструмента. А когда руками линию сдвинули, тут и рисуем лейбл. Это в обработчике OnChartEvent() а потом в OnCalculate() считается расстояние до линии, множится на цену тика и лот, каждый тик и меняется текст лейбла. Вот и всё.

Нет, кажется вы не поняли суть задачи... я не знаю как еще объяснить

 

Думаю понял правильно.

Это скрипт, описание внутри.

 
Alekseu Fedotov:

Думаю понял правильно.

Это скрипт, описание внутри.

Все равно не то! Как посчитать профит я знаю, здесь главное изменять данные ВО ВРЕМЯ ДВИЖЕНИЯ ЛИНИИ (как в тейк профите стандартном если эго руками перетягивать то в левом конце пунктирной линии видно меняющееся значение профита и количества пипсов)

 
Maksim Neimerik:

Все равно не то! Как посчитать профит я знаю, здесь главное изменять данные ВО ВРЕМЯ ДВИЖЕНИЯ ЛИНИИ (как в тейк профите стандартном если эго руками перетягивать то в левом конце пунктирной линии видно меняющееся значение профита и количества пипсов)

Так вроде так есть, двигая линию показывает данные "Баланс: **** Профит ***** ( **% от Depo)"


Ну ладно, рад был помочь 

 
Ну, теперь понятно, что замысел нереального. Дело в том, что прочесть цену линии можно только тогда, когда она "свободна".  Может попробовать читать координаты мыши в момент перетаскивания?
 
Alexey Viktorov:
Ну, теперь понятно, что замысел нереального. Дело в том, что прочесть цену линии можно только тогда, когда она "свободна".  Может попробовать читать координаты мыши в момент перетаскивания?

Я тоже так думал, но какое событие обрабатывать? Нет такого события... Клик есть, клик на объекте есть а передвижение мыши - нет, ну или я плохо искал...

Причина обращения: