- Ошибка копирования буферов индикатора - номер ошибки:4806
- Вопросы новичка в MQL5. Профи не проходите мимо.
- вопрос от самоучки
Да DLL все правильно делает. Отладочные ПРИНТЫ выдают то, что нужно на всех тф-ах. Ошибка не в ней а в том, что почему то только на дневке отрисовывается индикатор.
Странный Вы человек. В базе храните дневки, а пытаетесь минутки рисовать
А Вас не смущает, что Вы берете данные из дневной базы? Может попробовать из часовой?
Просто: в базе датавремя + координата - нужно отрисовать в окне индюка вне зависимости от ТФ-а.
На примере дневного графика какой-нибудь пары, вместо него может быть и часовые значения какого-то временного ряда:
1 строка колонки date = "23.06.2013 00:00"
1 строка колонки close = 1.001 (К примеру)
Понятно что на дневном тФ-е в мт4 - баршифт будет равен x, а на 4-х часовом баршифт для этой же датывремени будет равен y. Мне нужно, чтобы индюк рисовал close по одной определенной дате, но на на разных баршифтах(в соответствии с выбранным ТФ).
Ведь запись "23.06.2013 00:00" может быть отнесена и к минутному бару и 4-хчасовому и к дневному и т.п? Или тут я ошибаюсь?
Разве формат ДАТЫ/ВРЕМЕНИ для бара зависит от таймфрэйма? По моему нет. Я видел кучу индюков, которые грузят набор данных с сервера на график, потом меняй тф и график сам будет перестраиваться. ПРимер - СОТ. Если загрузить на дневном ТФ-е получаетс график, перейти на минутки - будет продолжение прямой на каждом следующем баре, пока не дойдем, до бара, со временем которого связано следующее значение СОТ.
Сори, если очень запутанно объяснил.
Попробуй, замени
iShift = iBarShift(NULL,0, StrToTime(sqlite_get_col (handle, 0)));
на
iShift = iBarShift(NULL,1440, StrToTime(sqlite_get_col (handle, 0)));
Проблема такая. Данные из базы загружаются, все печатается, но график индикатора отрисовывается только на дневном таймфрэйме. На других пустое окно. Да, на 4-хчасовке и на дневке баршифт разный, но почему не отрисовывается?
Сначала нужно поменять стиль с DRAW_LINE на DRAW_SECTION. Может, оно рисует, только вы не видите.
Если это не поможет, тогда оформить вычисления процедурой и одноразово выполнить ее внутри start(). В init() не все всегда работает. Я обычно делаю так:
bool FirstStart; // определяем на глобальном уровне FirstStart = true; // пишем в init() if ( FirstStart ) // пишем в start() { // здесь выполняем процедуру FirstStart = false; }
Сначала нужно поменять стиль с DRAW_LINE на DRAW_SECTION. Может, оно рисует, только вы не видите.
Если это не поможет, тогда оформить вычисления процедурой и одноразово выполнить ее внутри start(). В init() не все всегда работает. Я обычно делаю так:
Спасибо. DRAW_SECTION помогло.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования