Logo

Вход

Войти с помощью соц. сетей
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
ТОП СООБЩЕНИЙ
30.05.2017, 22:16
Лучший ответ
Накопленные выплаты: 209 RUB
Сообщение от AgGreSsiVe Посмотреть сообщение
Пробовал так
Интересно... А по каким таким соображениям вы используете ObjectGetValueByShift()? Может все таки надо ObjectGetInteger()?
31.05.2017, 00:37
Лучший ответ
Сообщение от ir0407 Посмотреть сообщение
Может все таки надо ObjectGetInteger()?
Попробовал.
MQL код:

void iKBADRAT () {


for(int n=0;n<ObjectsTotal();n++)
{
string objName = ObjectName(n);
if(ObjectType(objName) == OBJ_RECTANGLE)
{
time1 = ObjectGetInteger(0,objName,OBJPROP_TIME);
time2 = ObjectGetInteger(0,objName,OBJPROP_TIME2);

}

}

}


Странные цифры.
Дело в том, что даже получив время из квадрата, как взять инфу с баров за это время ? Или хотя бы отступ справа.
Вложения
31.05.2017, 00:46
Лучший ответ
Накопленные выплаты: 209 RUB
Сообщение от AgGreSsiVe Посмотреть сообщение
Странные цифры.
Читаем внимательно описание функции.

Сообщение от AgGreSsiVe Посмотреть сообщение
Дело в том, что даже получив время из квадрата, как взять инфу с баров за это время ?
Какую инфу?
31.05.2017, 01:43
Лучший ответ
Сообщение от ir0407 Посмотреть сообщение
Какую инфу?
High, Low, Open, Close, Volume -
Баров которые внутри прямоугольника на картинке.
31.05.2017, 01:51
Лучший ответ
Чтобы точнее, на картинке индикатор он считает тики (Volume). Отдельно вверх отдельно вниз.
Как посчитать их внутри квадрата ?
31.05.2017, 03:56
Лучший ответ
Накопленные выплаты: 209 RUB
Сообщение от AgGreSsiVe Посмотреть сообщение
Как посчитать их внутри квадрата ?
Ну как как... Время для сторон квадрата ты уже знаешь, функция iBarShift() вернет тебе индексы крайних баров, которые попадают в этот квадрат. А остальное дело техники...
  • #1 Свернуть

    Снять данные (время, отступ, цена, объемы) с квадрата в MT4

    Добрый вечер.
    Помогите пожалуйста разобраться.
    Пробовал так
    MQL код:


    void iKBADRAT () {


    for(int n=0;n<ObjectsTotal();n++)
    {
    string objName = ObjectName(n);
    if(ObjectType(objName) == OBJ_RECTANGLE)
    {
    time1 = ObjectGetValueByShift(objName,OBJPROP_TIME);
    time2 = ObjectGetValueByShift(objName,OBJPROP_TIME2);

    ObjectCreate("_objName", OBJ_LABEL,0, 0, 0);
    ObjectSetText("_objName", "TM | " + time1 + time2 +" | ",18, "Calibri" ,Yellow);
    ObjectSet("_objName", OBJPROP_CORNER,3);
    ObjectSet("_objName", OBJPROP_XDISTANCE, 13);
    ObjectSet("_objName", OBJPROP_YDISTANCE, 13);
    ObjectSetInteger(0,"_objName",OBJPROP_SELECTABLE,f alse);
    ObjectSetInteger(0,"_objName",OBJPROP_SELECTED,fal se);
    ObjectSetInteger(0,"_objName",OBJPROP_HIDDEN,true) ;
    }

    }

    }




    не работает.
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    Сообщение от AgGreSsiVe Посмотреть сообщение
    Пробовал так
    Интересно... А по каким таким соображениям вы используете ObjectGetValueByShift()? Может все таки надо ObjectGetInteger()?

    Комментарий

    • #3 Свернуть

      Сообщение от ir0407 Посмотреть сообщение
      Может все таки надо ObjectGetInteger()?
      Попробовал.
      MQL код:

      void iKBADRAT () {


      for(int n=0;n<ObjectsTotal();n++)
      {
      string objName = ObjectName(n);
      if(ObjectType(objName) == OBJ_RECTANGLE)
      {
      time1 = ObjectGetInteger(0,objName,OBJPROP_TIME);
      time2 = ObjectGetInteger(0,objName,OBJPROP_TIME2);

      }

      }

      }


      Странные цифры.
      Дело в том, что даже получив время из квадрата, как взять инфу с баров за это время ? Или хотя бы отступ справа.
      Вложения
      Последний раз редактировалось AgGreSsiVe; 31.05.2017, 00:40.

      Комментарий

      • #4 Свернуть

        Сообщение от AgGreSsiVe Посмотреть сообщение
        Странные цифры.
        Читаем внимательно описание функции.

        Сообщение от AgGreSsiVe Посмотреть сообщение
        Дело в том, что даже получив время из квадрата, как взять инфу с баров за это время ?
        Какую инфу?

        Комментарий

        • #5 Свернуть

          Сообщение от ir0407 Посмотреть сообщение
          Какую инфу?
          High, Low, Open, Close, Volume -
          Баров которые внутри прямоугольника на картинке.

          Комментарий

          • #6 Свернуть

            Чтобы точнее, на картинке индикатор он считает тики (Volume). Отдельно вверх отдельно вниз.
            Как посчитать их внутри квадрата ?

            Комментарий

            • #7 Свернуть

              Сообщение от AgGreSsiVe Посмотреть сообщение
              Как посчитать их внутри квадрата ?
              Ну как как... Время для сторон квадрата ты уже знаешь, функция iBarShift() вернет тебе индексы крайних баров, которые попадают в этот квадрат. А остальное дело техники...

              Комментарий

              • #8 Свернуть

                Сообщение от ir0407 Посмотреть сообщение
                функция iBarShift() вернет тебе индексы крайних баров, которые попадают в этот квадрат.
                Вы могли бы кодом показать - как получить время квадрата и вставить в iBarShift() ?

                Комментарий

                • #9 Свернуть

                  Сообщение от AgGreSsiVe Посмотреть сообщение
                  Вы могли бы кодом показать - как получить время квадрата и вставить в iBarShift() ?
                  Легко... У меня получилось вот так:


                  Нажмите на изображение для увеличения.

Название:	49.png
Просмотров:	1
Размер:	37.7 Кб
ID:	26227777


                  Тут код скрипта.

                  MQL код:

                  //+------------------------------------------------------------------+
                  //| ShowBarInfoByRect.mq4 |
                  //| Copyright 2017, [email]ir0407@ruforum.mt5.com[/email] |
                  //| [email]ir0407@ruforum.mt5.com[/email] |
                  //+------------------------------------------------------------------+
                  #property copyright "Copyright 2017, [email]ir0407@ruforum.mt5.com[/email]"
                  #property link "ir0407@ruforum.mt5.com"
                  #property version "1.00"
                  #property strict
                  //+------------------------------------------------------------------+
                  //| Script program start function |
                  //+------------------------------------------------------------------+
                  void OnStart()
                  {
                  string msg = ""; //Сюда будем складывать результаты

                  //Получаем время для двух точек
                  datetime Time1 = (datetime)ObjectGetInteger(ChartID(), "Rect", OBJPROP_TIME, 0);
                  datetime Time2 = (datetime)ObjectGetInteger(ChartID(), "Rect", OBJPROP_TIME, 1);
                  //Сохраняем для вывода на экран
                  msg = StringConcatenate(msg, "Time1 = ", TimeToString(Time1), "
                  ",
                  "Time2 = ", TimeToString(Time2), "
                  ");

                  //Получаем индексы баров
                  int BarIndex1 = iBarShift(Symbol(), PERIOD_CURRENT, Time2, True);
                  int BarIndex2 = iBarShift(Symbol(), PERIOD_CURRENT, Time1, True);
                  //Сохраняем для вывода на экран
                  msg = StringConcatenate(msg, "BarIndex1 = ", IntegerToString(BarIndex1), "
                  ",
                  "BarIndex2 = ", IntegerToString(BarIndex2), "
                  ");

                  //Получаем инфу о барах вписанных в квадрат
                  for(int i = BarIndex1; !(i > BarIndex2); i++)
                  {
                  datetime BarTime = iTime(Symbol(), PERIOD_CURRENT, i);
                  double BarOpen = iOpen(Symbol(), PERIOD_CURRENT, i);
                  double BarHigh = iHigh(Symbol(), PERIOD_CURRENT, i);
                  double BarLow = iLow(Symbol(), PERIOD_CURRENT, i);
                  double BarClose = iClose(Symbol(), PERIOD_CURRENT, i);

                  //Сохраняем для вывода на экран
                  msg = StringConcatenate(msg, "Time[", IntegerToString(i), "] = ", TimeToString(BarTime),
                  "; Open[", IntegerToString(i), "] = ", DoubleToString(BarOpen, Digits),
                  "; High[", IntegerToString(i), "] = ", DoubleToString(BarHigh, Digits),
                  "; Low[", IntegerToString(i), "] = ", DoubleToString(BarLow, Digits),
                  "; Close[", IntegerToString(i), "] = ", DoubleToString(BarClose, Digits), "
                  ");
                  }

                  //Выводим на чарт
                  Comment(msg);
                  }
                  //+------------------------------------------------------------------+

                  Сначала кидаем на чарт квадрат, затем переименовываем его в "Rect", чтоб скрипт его смог найти и потом кидаем на чарт сам скрипт.

                  Я ж говорил, внимательно читаем описания функций...

                  Комментарий

                  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
                  • #10 Свернуть

                    Спасибо. Работает.

                    Комментарий

                    X