Ошибки, баги, вопросы - страница 3026

 
Сергей Таболин:

А на каком старшем ТФ свеча появляется не вместе со свечёй на младшем?

индикатор на М1 использует другой индикатор с М5.

вообще, это была бы не проблема, если бы не повышенные необоснованные затраты вычислительных ресурсов, критичных при оптимизации (в моём случае каждый новый М5 вызывает полную перерисовку индикатора на всей истории, а проект ещё не полностью завершён, планируется использовать 16 индикаторов с различных ТФ).

 
Andrey Dik:

индикатор на М1 использует другой индикатор с М5.

вообще, это была бы не проблема, если бы не повышенные необоснованные затраты вычислительных ресурсов, критичных при оптимизации (в моём случае каждый новый М5 вызывает полную перерисовку индикатора на всей истории, а проект ещё не полностью завершён, планируется использовать 16 индикаторов с различных ТФ).

Андрей, но ведь свеча М5 открывается в тот же момент что и свеча М1. Или ты имеешь в виду нагрузку от перерисовывающихся (пересчитывающихся) индикаторов? Получается, если им запретить перерисовываться, то и нафиг они тогда нужны? Тогда от них не получишь новых данных...

 

Ошибка при компиляции:

#define MACRO( X )      X##X
void OnStart()
{
    Print( 11 );        //(1) нормально
    Print( MACRO( 1 )); //(2) Error: '11' - undeclared identifier
}
а какая разница между (1) и (2) ?
 
Сергей Таболин:

Андрей, но ведь свеча М5 открывается в тот же момент что и свеча М1. Или ты имеешь в виду нагрузку от перерисовывающихся (пересчитывающихся) индикаторов? Получается, если им запретить перерисовываться, то и нафиг они тогда нужны? Тогда от них не получишь новых данных...

как только появляется новый бар таймфрейма, с которого получаются данные, счетчик prev_calculated обнуляется. это значит, что индикатор весь пересчитается заново так, как будто он запущен в первые.

такая конструкция знакома?:

if (rates_total == prev_calculated) return rates_total;
  
int startInd = rates_total - prev_calculated;

for (int i = startInd; i >= 0; i--)
{
  //тут считаем индикатор, который обращается к другому индикатору на старшем ТФ
}

дело не в логике советника (перерисовывающий, неперерисовывающий, недорисовывающий или какой то ещё), а втом, что prev_calculated обнуляется в то время как его об этом никто не просил!

 
Andrey Dik:

как только появляется новый бар таймфрейма, с которого получаются данные, счетчик prev_calculated обнуляется. это значит, что индикатор весь пересчитается заново так, как будто он запущен в первые.

такая конструкция знакома?:

дело не в логике советника (перерисовывающий, неперерисовывающий, недорисовывающий или какой то ещё), а втом, что prev_calculated обнуляется в то время как его об этом никто не просил!

Индикаторы - это моё САМОЕ слабое место )))

Но!

Или я вооще ничего не понимаю, или ты маленько ошибаешься. 

Насколько я знаю, prev_calculated это счётчик не обсчитанных данных. А раз поступившие данные посчитаны, то и этот счётчик обнуляется... Типа, всё, парень, нет больше новых данных для расчёта.... )))

И по какой причине индикатор должен полностью пересчитаться в таком случае - я не знаю!

---------------

Соврал маленько )))

Перерисовываются не индикаторы, а "индюки" только для того, чтобы "красиво" выглядеть на истории ;)

 
Сергей Таболин:


Соврал маленько )))

Перерисовываются не индикаторы, а "индюки" только для того, чтобы "красиво" выглядеть на истории ;)

Поэтому они и расходятся как горячие пирожки. Потому что всегда выглядят "КРАСИВО и БОГАТО". 

 
Vladislav Andruschenko:

Поэтому они и расходятся как горячие пирожки. Потому что всегда выглядят "КРАСИВО и БОГАТО". 

100500 ))))))

 
Сергей Таболин:


Насколько я знаю, prev_calculated это счётчик не обсчитанных данных.

Увы, ваши знания не соответствуют документации.

OnCalculate()

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Функции обработки событий - Функции - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Как внутри программы узнать, что EX5 скомпилирован в Debug-режиме? Не запущен в Dеbug-режиме, а именно скомпилирован когда-то через Debug и запущен обычным способом.

Нашел.

void OnStart()
{      
  #ifdef _DEBUG
    Alert("EX5 - debug.");
  #endif

  if (MQLInfoInteger(MQL_DEBUG))
    Alert("Debugging...");
}


И как узнать, что EX5 - protected?