Logo

Вход

Войти с помощью соц. сетей
Пока нет объявлений.
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
  • #1 Свернуть

    Индекс бара

    Здавствуйте. Пишу функцию которая при определенных условиях должна вернуть индекс бара где это условие совпало.
    Вот код:

    MQL код:
    int indexBar()
    {
    datetime dt=0;
    int bar=0;
    if(условие1)
    {
    if(условие2)
    )
    {
    }else{
    dt=TimeCurrent();
    bar=iBarShift(Symbol(),PERIOD_CURRENT,dt,false);
    }
    }
    return(bar);
    }


    Проверял значения через "Comment()", значение времени(dt) возвращает как положено, а значение "bar" всегда равно нулю, что не так?
    Последний раз редактировалось Gold; 25.12.2016, 02:08.
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    Сообщение от avotsemen Посмотреть сообщение
    значение "bar" всегда равно нулю, что не так?
    Все так. Потому что TimeCurrent() может быть только на текущем, тобишь нулевом, баре.
     

    Комментарий

    • #3 Свернуть

      TimeCurrent() присваивает значение переменной dt при выполнении условий. Например, условие совпало в 9:00, dt теперь равно 9:00, допустим следующее условие совпало 9:45. И в период с 9:00 до 9:45 значение не меняется, но значение bar не изменялось, хотя значения dt присваиваются нормально.
       

      Комментарий

      • #4 Свернуть

        Сообщение от avotsemen Посмотреть сообщение
        TimeCurrent() присваивает значение переменной dt при выполнении условий. Например, условие совпало в 9:00, dt теперь равно 9:00, допустим следующее условие совпало 9:45. И в период с 9:00 до 9:45 значение не меняется, но значение bar не изменялось, хотя значения dt присваиваются нормально.
        TimeCurrent() совершенно пофигу, что там у вас и когда совпало, потому что при любых раскладах она вернет вам последнее полученное от сервера время. И это время всегда будет приходится на текущий(нулевой) бар не зависимо от того, что вы там проверяете в своих условиях. Во всяком случае это справедливо для вашего варианта кода. А если вы хотите лицезреть индекс бара даже когда условия не выполняются то вам надо:
        1. Объявить переменную dt , как статическую.
        2. Вынести iBarShift() за область действия условий.
        Пример:
        MQL код:
        int indexBar()
        {
        static datetime dt=0;
        int bar=0;
        if(условие1)
        {
        if(условие2)
        {
        }
        else
        {
        dt=TimeCurrent();
        }
        }
        bar=iBarShift(Symbol(),PERIOD_CURRENT,dt,false);
        return(bar);
        }
         
        Последний раз редактировалось ir0407; 25.12.2016, 11:03.

        Комментарий

        • #5 Свернуть

          Сообщение от ir0407 Посмотреть сообщение
          Вынести iBarShift() за область действия условий
          Спасибо, дошло что iBarShift() выполняется тоже при этих же условиях.
          Тему можно закрывать
           

          Комментарий

          • #6 Свернуть

            А как узнать индекс бара, когда по трендовой линии вторую координату по времени надо выставлять по такому условию, что когда горизонтальный луч пересекает цена, тогда выставляется вторая координата времени по факту пересечения ценой этой линии? И луч становится отрезком, как примерно на картинке [IMG][/IMG]

            Комментарий

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

              Сообщение от Вычислитель Посмотреть сообщение
              А как узнать индекс бара, когда по трендовой линии вторую координату по времени надо выставлять по такому условию, что когда горизонтальный луч пересекает цена, тогда выставляется вторая координата времени по факту пересечения ценой этой линии? И луч становится отрезком, как примерно на картинке [IMG][/IMG]
              Уважаемый, бар - это не цена - это интервал! Поэтому, либо точное время используй, а уже потом ищи интервал в который входит то время которое ты хочешь присвоить второй координате трендовой линии.
              Для случая со временем, изменения таймфрэйма графика, не повлияют на точность отрисовки линии.

              Комментарий

              Сейчас онлайн

              working...
              X