Реализация выбора произвольного диапазона в коде

 
Добрый день! Хочу заняться изучением mql5 сразу с решения практических задач, чтобы процесс был бы интересным и полезным. Для реализации этого подхода хотел бы найти подсказку или ссылку на материал, где можно бы было найти реализацию выбора произвольного диапазона баров на графике, где произвольный диапазон задается двумя вертикальными линиями. Заранее благодарен!
 
Значит нужно допустить, что линии будут нанесены человеком вручную?
 
Vladimir Karputov:
Значит нужно допустить, что линии будут нанесены человеком вручную?

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

 
Ёжик Вдурманен:

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

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

 

В кодабазе есть для четверки скрипт от компостера, но только там не диапазон баров, а ценовые уровни. Один из самых первых скриптов в кодабазе. 

При запуске скрипта на графике появляется линия и открывается мессаджбокс с кнопкой "ок", двигаешь линию куда надо, жмешь ок - и все: скрипт делает дело и отсоединяется от графика.

 
Vladimir Karputov:

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

 Я уже видел подобную штуку в индикаторе VP-Range (https://www.mql5.com/ru/code/15445). К сожалению, моих знаний не хватает в настоящий момент, чтобы вычленить нужную часть кода из этого индикатора.
Volume Profile + Range v6.0
Volume Profile + Range v6.0
  • www.mql5.com
Индикатор Volume Profile + Range v6.0 (бывший TPO). Распределение сделок по ценовым уровням на заданном временном участке. Показывается в виде гистограммы.
 
Ёжик Вдурманен:
Добрый день! Хочу заняться изучением mql5 сразу с решения практических задач, чтобы процесс был бы интересным и полезным. Для реализации этого подхода хотел бы найти подсказку или ссылку на материал, где можно бы было найти реализацию выбора произвольного диапазона баров на графике, где произвольный диапазон задается двумя вертикальными линиями. Заранее благодарен!

с учетом комментариев

сначала постройте две произвольные вертикальные линии при запуске программы

https://www.mql5.com/ru/docs/constants/objectconstants/enum_object/obj_vline

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_VLINE
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_VLINE
  • www.mql5.com
OBJ_VLINE - Типы объектов - Константы объектов - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Затем определите время расположения

https://www.mql5.com/ru/docs/objects/objectgettimebyvalue

Документация по MQL5: Графические объекты / ObjectGetTimeByValue
Документация по MQL5: Графические объекты / ObjectGetTimeByValue
  • www.mql5.com
ObjectGetTimeByValue - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Затем определите бары

https://www.mql5.com/ru/docs/series/ibarshift

Документация по MQL5: Доступ к таймсериям и индикаторам / iBarShift
Документация по MQL5: Доступ к таймсериям и индикаторам / iBarShift
  • www.mql5.com
iBarShift - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Renat Akhtyamov:

Затем определите бары

https://www.mql5.com/ru/docs/series/ibarshift

Огромное человеческое Спасибо!!!
 

Вот такой код: ожидает пока на графике появятся две вертикальные линии с заданными именами. После этого появится всплывающее окно и выбор двух кнопок. Действие бесконечное... 

//+------------------------------------------------------------------+
//|                                          Range Two OBJ_VLINE.mq5 |
//|                              Copyright © 2021, Vladimir Karputov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2021, Vladimir Karputov"
#property version   "1.000"
//--- input parameters
input string      InpLeftName    = "Left line";
input string      InpRightName   = "Right line";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(ObjectFind(ChartID(),InpLeftName)<0)
      return;
   if(ObjectFind(ChartID(),InpRightName)<0)
      return;
//---
   int res=MessageBox("Start?","We start to work",MB_YESNO);
   /*
   IDYES 6  "Yes" button has been pressed
   IDNO  7  "No"  button has been pressed
   */
   if(res==IDYES)
      Print("\"Yes\" button has been pressed");
   else
      if(res==IDNO)
         Print("\"No\" button has been pressed");
  }
//+------------------------------------------------------------------+
Файлы: