Несовершенство алгоритма. В самом индикаторе цикл в цикле, и Вы еще в цикле iCustom вызываете. Храните предыдущие значения индикатора в массиве и вызывайте iCustom один раз на одном баре. Значительно полегчает.
И это странное действие:
int y=0; int t=500; while (y<t) { if (iOpen(NULL,0,t)==y) {return(0);} //.......... y++; }с чем Вы сравниваете цену открытия? Но это так, на глаза попало. А основная проблема - iCustom в цикле.
Если не сложно, помогите понять что не так при попытке считать данные буфера индикатора.
Вот код из советника:
В реале и на тестах поиск последнего значения через функцию работает, но тест катастрофически замедляется (тест полугодия растягивается на несколько суток).
Поэтому решил использовать подмену на тестировании и запоминать последнее значение в глобальную переменную - советник перестал видеть данные буфера. При чём, хотя пустые буферы равны 0, почему то переменные советника принимают значения EMPTY_VALUE и не меняются.
А наведение курсора на строку буфера в окне данных в подсказке появляются два значения, причём первое равно 0, например Value 5; 0.0000; 0.8855.
Я с этим никак не разберусь, хоть и ковырялся в коде индикатора. Поиск в интернете и в документации не помог. Может кто-нибудь подскажет, почему так затормаживается тест при обращении к этому индикатору?
Помогите пожалуйста!
а зачем вам глобальные переменные в режиме тестирования ? Они подгружают процессор и если каждый тик их дёргать то вполне могут быть причиной тормозов на слабой машине
подумайте как тестироваться без них
Несовершенство алгоритма. В самом индикаторе цикл в цикле, и Вы еще в цикле iCustom вызываете. Храните предыдущие значения индикатора в массиве и вызывайте iCustom один раз на одном баре. Значительно полегчает.
И это странное действие:
с чем Вы сравниваете цену открытия? Но это так, на глаза попало. А основная проблема - iCustom в цикле.Спасибо! С массивами я на вы, но Вы подсказали главное - пока попробую вызывать iCustom один раз на баре (кстати, раньше в советнике и был такой подход ко всем индикаторам) и сохранять в глобальную.
Странное действие- попытка проверить наличие котировок - видимо не получилось, но это и не важно.
Может вы сможете подсказать почему в случае
Trend = GlobalVariableGet(GV_tradesTrend); TrendUP = iCustom(NULL,0,"Used\\# Once Trades Trend",3,0); TrendDN = iCustom(NULL,0,"Used\\# Once Trades Trend",4,0); if (TrendUP>0) {Trend=1; GlobalVariableSet(GV_tradesTrend,1);} if (TrendDN>0) {Trend=-1;GlobalVariableSet(GV_tradesTrend,-1);} if (Trend==1) {GlobalVariableSet(GV_Trend,1);} if (Trend==-1) {GlobalVariableSet(GV_Trend,-1);} if (Trend==0) {GlobalVariableSet(GV_Trend,0);}
советник не получает данные от индикатора и переменные TrendUP и TrendDN становятся равны 2147483647 и не меняются (соответственно Trend==-1 на всём протяжении теста)?
- www.mql5.com
Вероятно, на нулевом баре сигнал не рассчитывается. Поставьте 1.
Индикатор медленный. Внутри он сам себя вызывает на различных таймфреймах. Ещё и куча циклов. Делали не подумав о скорости.
Здесь советник для примера, значения печатает в журнале.
Вероятно, на нулевом баре сигнал не рассчитывается. Поставьте 1.
Индикатор медленный. Внутри он сам себя вызывает на различных таймфреймах. Ещё и куча циклов. Делали не подумав о скорости.
Здесь советник для примера, значения печатает в журнале.
Огромное спасибо за помощь! Буду вникать.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Если не сложно, помогите понять что не так при попытке считать данные буфера индикатора.
Вот код из советника:
В реале и на тестах поиск последнего значения через функцию работает, но тест катастрофически замедляется (тест полугодия растягивается на несколько суток).
Поэтому решил использовать подмену на тестировании и запоминать последнее значение в глобальную переменную - советник перестал видеть данные буфера. При чём, хотя пустые буферы равны 0, почему то переменные советника принимают значения EMPTY_VALUE и не меняются.
А наведение курсора на строку буфера в окне данных в подсказке появляются два значения, причём первое равно 0, например Value 5; 0.0000; 0.8855.
Я с этим никак не разберусь, хоть и ковырялся в коде индикатора. Поиск в интернете и в документации не помог. Может кто-нибудь подскажет, почему так затормаживается тест при обращении к этому индикатору?
Помогите пожалуйста!