Заработай до
50000$
на приглашении друзей
получить StartUp Bonus
от ИнстаФорекс
Вложений не требуется!
Начни торговлю
без вложений и риска
С новым STARTUP бонусом 1000$
Получи бонус
55%
от ИнстаФорекс
на каждое пополнение
Ответить в теме

Показаны сообщения: с 1 по 3 из 3

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

 Перейти в классический вид темы
  1. линк#1
    Частый гость
    скальпер стараюсь положительно себя зарекомендовать Аватар для скальпер
    Регистрация:
    09.04.2011
    Пол:
    Мужчина
    Сообщений:
    243
    Накопленные выплаты (Подробнее):
    1062 RUB
    Поставил лайков:
    14
    Получено лайков:   33
    в 32 сообщениях
    14%
    ПодписатьсяПодписаться
    Подписано 0
    Пишу индикатор свечных паттернов. Столкнулся с тем, что функция CopyBuffer() напрочь отказывается читать данные с 1-го буфера. Хотя, с 0-го буфера читает. Написанный вариант индикатора я проверил, отрисовывая в местах каждого найдённого паттерна стрелочки. На данный момент, я всё лишнее убрал. Оставил лишь около 20 строк кода, где уже не ищу паттерн, а лишь сравниваю цены открытия и закрытия обоих предыдущих баров между собой. Сделал я так для упрощения. Так вот. На данный момент, написан элементарный индикатор. Условия помещения в буфер данных для обоих случаев заркальны и элементарны. Буфера в индикаторе 2. Они заполняются каждый раз, при выполнении условия. Если условие не выполнено, в буфер помещается значение EMPTY_VALUE.
    Вопрос, который сродни фантастики в том, что CopyBuffer() не может скопировать данные в буфера на индексе 1. Копирует данные лишь с 0-го индекса. Вот это очень странно. Я думал, что-то в моём коде, но упростив его до элементарнейшего варианта создаётся впечатление, что CopyBuffer() гонит.
    Я написал скрипт forOnce, чтобы проверить функцию CopyBuffer(). Сам индикатор называется Candles(). Библиотека, которую использует индикатор называется TimeSeries. Её я использую постоянно. Всё прилагаю к сообщению. Интересно обсудить этот странный момент к профессионалами.
    paperclip Вложения


  2. post_thanks Получено лайков: 2

    Незарегистрированный (2 пользователя)

    <title>InstaForex</title><meta name="description" content="InstaForex"><a href="https://instaforex.org/ru/pamm_system">InstaForex</a>
  3. линк#2
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,292
    Накопленные выплаты (Подробнее):
    169750 RUB
    Поставил(а) лайков:
    932
    Получено лайков:   7,418
    в 3,564 сообщениях
    102%
    ПодписатьсяПодписаться
    Подписано 4
    Цитата Сообщение от скальпер Посмотреть сообщение
    Столкнулся с тем, что функция CopyBuffer() напрочь отказывается читать данные с 1-го буфера. Хотя, с 0-го буфера читает.
    Смею предположить, что читать-то она читает, только значение того, что она читает = EMPTY_VALUE.


  4. post_thanks Получено лайков: 2

    Незарегистрированный (2 пользователя)

    ferrari
  5. линк#3
    Частый гость
    скальпер стараюсь положительно себя зарекомендовать Аватар для скальпер
    Регистрация:
    09.04.2011
    Пол:
    Мужчина
    Сообщений:
    243
    Накопленные выплаты (Подробнее):
    1062 RUB
    Поставил лайков:
    14
    Получено лайков:   33
    в 32 сообщениях
    14%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от ir0407 Посмотреть сообщение
    Смею предположить, что читать-то она читает, только значение того, что она читает = EMPTY_VALUE.
    Нет. Там косяк в документации. Она не доделанна. Да и в том, что не верно изначально спроектировано API. По сути, косяк в том, что нужно было объявлять буферы не так:
    MQL-Код:
    
      SetIndexBuffer(0, bearishEngulfingBuf, INDICATOR_DATA);    // Первый буфер - медвежьи поглощения 
    
    
    

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

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

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



Подписанные на тему (2)

Открыть

Похожие темы

  1. Размер буфера индикатора не увеличивается. Почему?
    от скальпер в разделе MQL-программирование, АТС
    Replies: 5
    Последнее сообщение: 12.10.2018, 15:17
  2. Функция для сортировки пар по амплитуде движений
    от DVS75 в разделе MQL-программирование, АТС
    Replies: 8
    Последнее сообщение: 24.11.2016, 23:54
  3. функция остановки советника
    от scherbakovss в разделе MQL-программирование, АТС
    Replies: 1
    Последнее сообщение: 14.08.2016, 01:44
  4. Функция CopyRates для EURUSD возвращает неизвестно что.
    от pusheax в разделе MQL-программирование, АТС
    Replies: 3
    Последнее сообщение: 22.03.2012, 16:00