ChartXYToTimePrice расчёт времени - страница 3

 
Karputov Vladimir:

Дальнейшая дискуссия будет пресекаться.

Это нормально?

comp:

iBarShift говорит одно, CTRL+D - другое.

 
Бан на 1 день для вдумчивого осознания всех высказанных истин.
 
// Возвращает значение времени, которое показывает CTRL+D
bool  MyChartXYToTimePrice( const long Chart_ID, const int X, const int Y, int &SubWindow, datetime &time, double &Price )
{
  const bool Res = ChartXYToTimePrice(Chart_ID, X, Y, SubWindow, time, Price);
  
  if (Res)
  {
    const int period = PeriodSeconds(ChartPeriod(Chart_ID));
    const bool NextBar = (time % period > period >> 1);
    
    time /= period;
    
    if (NextBar)
      time++;
      
    time *= period;
  }    
  
  return(Res);
}
 

В MT4 MyChartXYToTimePrice не всегда работает верно, поскольку ChartXYToTimePrice выдают отличные значения в одних и тех же ситуациях.

Что нужно сделать, чтобы получить в MT4 значение времени, что показывает CTRL+D? 

 
comp:

В MT4 MyChartXYToTimePrice не всегда работает верно, поскольку ChartXYToTimePrice выдают отличные значения в одних и тех же ситуациях.

Что нужно сделать, чтобы получить в MT4 значение времени, что показывает CTRL+D? 

Примерно так

datetime t = MathRound(Время/PeriodSecond())*PeriodSecond();

Можно ещё так

datetime t = Time[iBarShift(_Symbol, PERIOD_CURRENT, Время)];
 
Alexey Viktorov:

Примерно так

Можно ещё так

Оба варианта не дают полного совпадения с CTRL+D.
 
Slawa:

Вы мне предлагаете замерить расстояние между центрами свечей и убедиться? Я и без Вас знаю, что это 0, 1, 2, 4, 8, 16, 32.

На 4К-экранах расстояние в пикселях такое же?
 
comp:
Оба варианта не дают полного совпадения с CTRL+D.

Ну и как ты проверял???

#property copyright "Copyright 2016, Viktorov"
#property link      "v4forex@yandex.ru"
#property version   "1.00"
#property strict

/********************Script program start function********************/
void OnStart()
{
 datetime t = Time[iBarShift(_Symbol, PERIOD_CURRENT, D'2016.03.23 12:12:32')];
 Alert("Время бара ", t);
}/********************************************************************/

Результат.


 

И вот повтор с другим вариантом

#property copyright "Copyright 2016, Viktorov"
#property link      "v4forex@yandex.ru"
#property version   "1.00"
#property strict

/********************Script program start function********************/
void OnStart()
{
 datetime t = Time[iBarShift(_Symbol, PERIOD_CURRENT, D'2016.03.23 12:12:32')];
 
 datetime tt = MathRound((datetime)(D'2016.03.23 12:12:32')/PeriodSeconds(PERIOD_CURRENT))*PeriodSeconds(PERIOD_CURRENT);
 Alert("Время бара ", t);
 Alert("Время бара ", tt);
}/********************************************************************/


 
Alexey Viktorov:

Ну и как ты проверял???

Речь идет о написании MyChartXYToTimePrice. Надо, чтобы по расположению курсора выдавалось время, что показывается в CTRL+D. Для MT5 такой вариант написал. Для MT4 он не работает.