Запрос исходного кода аналога ObjectGetValueByTime

 

Друзья, возможно кто то реализовывал собственный алгоритм расчета цены по аналогии с ObjectGetValueByTime?

Для реализации текущей моей задачи ObjectGetValueByTime не достаточно. По этому ищу исходник способный ее заменить.

Задача стоит получать цену без использования графического объекта, практика показала что с трендовой не надежно получается.

Поделитесь кому не жалко.

Документация по MQL5: Графические объекты / ObjectGetValueByTime
Документация по MQL5: Графические объекты / ObjectGetValueByTime
  • www.mql5.com
Возвращает значение цены для указанного времени указанного объекта. Параметры chart_id [in]  Идентификатор графика. 0 означает текущий график...
 
Vladimir Pastushak:

Друзья, возможно кто то реализовывал собственный алгоритм расчета цены по аналогии с ObjectGetValueByTime?

Для реализации текущей моей задачи ObjectGetValueByTime не достаточно. По этому ищу исходник способный ее заменить.

Задача стоит получать цену без использования графического объекта, практика показала что с трендовой не надежно получается.

Поделитесь кому не жалко.

Вам это быстро в общих чертах набросал. Проверьте - работает. Тонкие настройки сможете сами сделать. Вроде бы то что нужно.

Далее, в цикле ищете номер свечи на которую приходится старт линии (левую точку), и от неё вложенным циклом идёте вперёд(в будущее), до свечи на которой нужно значение линии получить, прибавляя дельту на каждом проходе цикла. Вот и будет точная цена на время открытия свечи.

250 свечей в цикле - условно поставил, можете там Bars()-1 поставить и break сделать.

            datetime dt_last_date = ObjectGetInteger(0,obj_name,OBJPROP_TIME,0);
            datetime dt_oldest_date = ObjectGetInteger(0,obj_name,OBJPROP_TIME,1);

            double price_last = ObjectGetDouble(0,obj_name,OBJPROP_PRICE,0);
            double price_oldest = ObjectGetDouble(0,obj_name,OBJPROP_PRICE,1);

            // Получаете дельту на свечу текущего ТФ, если нужно приближение до секунд, соответственно делите на кол-во секунд в свече текущего ТФ
           double delta_per_candle = CalculatePriceChangePerCandle(dt_last_date ,right_price,left_date,left_price); // Не знаю как у вас линии рисуются, может переменные местами нужно поменять будет
  
//+------------------------------------------------------------------+
//|            Получаем дельту на 1 свечу текущего ТФ                |
//+------------------------------------------------------------------+
double CalculatePriceChangePerCandle(datetime right_date,double right_price,datetime left_date,double left_price)
  {
   double delta=0;
   int candles_amount = 0;

   for(int i = 0; i < 250; i++)
     {
      if(iTime(Symbol(),PERIOD_CURRENT,i) <= right_date && iTime(Symbol(),PERIOD_CURRENT,i) >= left_date) // Тут сами настройте, включительно/исключительно ли будут учитываться свечи начала отсчета и конца отсчета 
        {
         candles_amount++;
        }
     }

   delta = (right_price - left_price) / candles_amount;
   return delta;
  }