Как проверить, во сколько будет время линии, если она нарисована на старшем таймфрейме?

 

Я нарисовал эту линию:


Линия is проведена в H4. Теперь я хочу знать, где будет линия в M1 или в любое другое более низкое время.

Может ли кто-нибудь намекнуть мне или сообщить, как это сделать?

 
jaffer wilson:

Я нарисовал эту линию:

Линия is проведена в H4. Теперь я хочу знать, где будет линия в M1 или в любое другое более низкое время.

Может ли кто-нибудь намекнуть мне или сообщить, как это сделать?

Высчитайте среднее количество пунктов на бар для h4. На нужном баре м1 возьмите дату. По дате определите к какому бару h4 принадлежит этот m1 бар. Посчитайте сколько баров прошло с начала построения линии на h4 графике. Умножьте это количество баров на средне количество пунктов и добавьте/отнимите от стартовой цены

 
Извините, но я не могу понять, пожалуйста, возьмите пример и помогите мне понять, что говорит ваша формула?
 
jaffer wilson:
Извините, но я не могу понять, пожалуйста, возьмите пример и помогите мне понять, что говорит ваша формула?
double findPrice(string trendLineName, ENUM_TIMEFRAMES trendLineTf, int currentBarIndex) {
   double price1 = ObjectGetDouble(ChartID(),trendLineName,OBJPROP_PRICE,0);
   double price2 = ObjectGetDouble(ChartID(),trendLineName,OBJPROP_PRICE,1);
   datetime time1 = ObjectGetInteger(ChartID(),trendLineName,OBJPROP_TIME,0);
   datetime time2 = ObjectGetInteger(ChartID(),trendLineName,OBJPROP_TIME,1);
   int barIndex1 = iBarShift(_Symbol,trendLineTf,time1,false);
   int barIndex2 = iBarShift(_Symbol,trendLineTf,time2,false);

   double pointsPerBar = MathAbs(price1-price2)/MathAbs(barIndex1 - barIndex2);
   
   datetime currentBarTime = iTime(_Symbol,PERIOD_CURRENT,currentBarIndex);
      int whichUpperTfBelongsThisBar = iBarShift(_Symbol,trendLineTf,currentBarTime);
      double findingPrice = 0;
      if(price1 > price2) {
         findingPrice = price1 - (barIndex1-whichUpperTfBelongsThisBar)*pointsPerBar;
         return findingPrice;
      } else {
         findingPrice = price1 + (barIndex1-whichUpperTfBelongsThisBar)*pointsPerBar;
         return findingPrice;
      }
   
   return 0;
}
 
// -----------------------------------------------------------------------------
// Определить значение уровня (HLine/Trend/Rectangle)
// -----------------------------------------------------------------------------
static double UChart::CalcLevel(string nameObj, datetime dtime, NLevel kindLevel = levUnknown) {
    double price = 0;
    long typeObj = ObjectGetInteger(0, nameObj, OBJPROP_TYPE);
    double p1 = ObjectGetDouble(0, nameObj, OBJPROP_PRICE, 0);
    double p2 = ObjectGetDouble(0, nameObj, OBJPROP_PRICE, 1);

    if (typeObj == OBJ_HLINE) 
        price = p1;
    else if (typeObj == OBJ_TREND) {
        datetime t1 = (datetime)ObjectGetInteger(0, nameObj, OBJPROP_TIME, 0);
        datetime t2 = (datetime)ObjectGetInteger(0, nameObj, OBJPROP_TIME, 1);
        price = p1 + (p2 - p1) * (1.0 * (dtime - t1) / (t2 - t1));
    }
    else if (typeObj == OBJ_RECTANGLE) {
        if (kindLevel == levResistance) price = MathMax(p1, p2);
        else if (kindLevel == levSupport) price = MathMin(p1, p2); 
    }
    return price;
}
 
jaffer wilson:

Я нарисовал эту линию:


Линия is проведена в H4. Теперь я хочу знать, где будет линия в M1 или в любое другое более низкое время.

Может ли кто-нибудь намекнуть мне или сообщить, как это сделать?

Может быть Вам больше подойдет решение через уравнение прямой? Только нужно будет учесть выпадение данных в выходные дни. Нетривиальная задача, но решаемая.

 
jaffer wilson:

Я нарисовал эту линию:


Линия is проведена в H4. Теперь я хочу знать, где будет линия в M1 или в любое другое более низкое время.

Может ли кто-нибудь намекнуть мне или сообщить, как это сделать?

Какой вопрос - такой ответ. 

Вы построили линию на Н4 руками,- теперь переходите на Н1 и уточняйте руками же координаты её точек. Это легко. 

Ну и дальше - так же. М30, М15, М5, М1... 

 
jaffer wilson:
Я нарисовал эту линию:
Линия is проведена в H4. Теперь я хочу знать, где будет линия в M1 или в любое другое более низкое время.
Может ли кто-нибудь намекнуть мне или сообщить, как это сделать?

Начало линии, самый левый конец линии, будет иметь то же самое время

Другое дело, если наоборот. Если линию нарисовать на М1, то на М5 время ее начала округлится до 5 минут и так далее

 
Konstantin Erin:

Начало линии, самый левый конец линии, будет иметь то же самое время

Другое дело, если наоборот. Если линию нарисовать на М1, то на М5 время ее начала округлится до 5 минут и так далее

Нет. Координаты линии не зависят от параметров графика. 

 
Алексей Тарабанов:

Нет. Координаты линии не зависят от параметров графика. 

Вы правы. Я имел в виду время открытия бара, с которого начинается линия
 
Алексей Тарабанов:

Нет. Координаты линии не зависят от параметров графика. 

Алексей, ты не прав...не то чтобы совсем, но не совсем

на M1 переменное кол-во баров/час. Поэтому линию проведённую по экстремумам H4 (это недели до месяца примерно), никак верно не соотнести с M1 не выйдет. 

ситуации когда бары M1 просто тупо не возникают в течении 15 мин, ты в жизни видел. 

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