Logo

Вход

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

    Функция CopyBuffer() считывает данные только с 0-го буфера

    Пишу индикатор свечных паттернов. Столкнулся с тем, что функция CopyBuffer() напрочь отказывается читать данные с 1-го буфера. Хотя, с 0-го буфера читает. Написанный вариант индикатора я проверил, отрисовывая в местах каждого найдённого паттерна стрелочки. На данный момент, я всё лишнее убрал. Оставил лишь около 20 строк кода, где уже не ищу паттерн, а лишь сравниваю цены открытия и закрытия обоих предыдущих баров между собой. Сделал я так для упрощения. Так вот. На данный момент, написан элементарный индикатор. Условия помещения в буфер данных для обоих случаев заркальны и элементарны. Буфера в индикаторе 2. Они заполняются каждый раз, при выполнении условия. Если условие не выполнено, в буфер помещается значение EMPTY_VALUE.
    Вопрос, который сродни фантастики в том, что CopyBuffer() не может скопировать данные в буфера на индексе 1. Копирует данные лишь с 0-го индекса. Вот это очень странно. Я думал, что-то в моём коде, но упростив его до элементарнейшего варианта создаётся впечатление, что CopyBuffer() гонит.
    Я написал скрипт forOnce, чтобы проверить функцию CopyBuffer(). Сам индикатор называется Candles(). Библиотека, которую использует индикатор называется TimeSeries. Её я использую постоянно. Всё прилагаю к сообщению. Интересно обсудить этот странный момент к профессионалами.
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    Сообщение от скальпер Посмотреть сообщение
    Столкнулся с тем, что функция CopyBuffer() напрочь отказывается читать данные с 1-го буфера. Хотя, с 0-го буфера читает.
    Смею предположить, что читать-то она читает, только значение того, что она читает = EMPTY_VALUE.

    Комментарий

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

      Сообщение от ir0407 Посмотреть сообщение
      Смею предположить, что читать-то она читает, только значение того, что она читает = EMPTY_VALUE.
      Нет. Там косяк в документации. Она не доделанна. Да и в том, что не верно изначально спроектировано API. По сути, косяк в том, что нужно было объявлять буферы не так:
      MQL код:
        SetIndexBuffer(0, bearishEngulfingBuf, INDICATOR_DATA);    // Первый буфер - медвежьи поглощения

      а вот так:
      MQL код:
        SetIndexBuffer(0, bearishEngulfingBuf, INDICATOR_CALCULATIONS);    // Первый буфер - медвежьи поглощения

      Нужно объявлять буферы как вспомогателные. Видимо, кому-то в голову стукнуло, что типа еслииндюк не рисует, значит его буферы все вспомогательные. Это не верно. Они же сами написали, что:
      INDICATOR_CALCULATIONS

      Вспомогательные буферы для промежуточных вычислений
      В общем, вопрос решён ещё 2 дня назад. А всё остальное, это уже не зависящий от нас фактор..

      Комментарий

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

      working...
      X