Я просто не скопировал принты - они старые из старого кода подходят. Я вообще проверял:
А 2 последние строки сравнивают между собой оба варианта и выдают принт, если они не равны, но они у Вас будут постоянно принтовать. Просто оставьте нужные строки. Я не думал, что принты нужны для сова, если там автоматика работает.SQL:MqlDateTime str1; MqlRates rates[]; int copy_rates=0; bool begin=false; double High1=0.0; double Low1=10000.0; int day=32; for(int r=0; r<=62; r++) { copy_rates=CopyRates(_Symbol,PERIOD_D1,r,1,rates); if(copy_rates<1) {Print("Ошибка копирования данных"); break;} TimeToStruct(rates[0].time,str1); if(day>str1.day && !begin) {day=str1.day; continue;} if(day<str1.day && !begin) {day=32; begin=true;} if(begin) { if(day>str1.day) day=str1.day; else {begin=false; break;} if(High1<rates[0].high) High1=rates[0].high; if(Low1>rates[0].low) Low1=rates[0].low; } } Print("High= ",iHigh(_Symbol,PERIOD_MN1,1)); Print("High1=",High1); Print("Low= ",iLow(_Symbol,PERIOD_MN1,1)); Print("Low1=",Low1); if(iHigh(_Symbol,PERIOD_MN1,1)!=High1) Print(iHigh(_Symbol,PERIOD_MN1,1)," High ",High1); if(iLow(_Symbol,PERIOD_MN1,1)!=Low1) Print(iLow(_Symbol,PERIOD_MN1,1)," Low ",Low1);
Код считает сформированные данные 1-го месяца когда он уже сформирован полностью.
У меня отличаются только в марте этого года и все одинаковые результаты в каждой минуте одинаковые с первой по последнюю минуту, сколько бы тиков в ней не было.
В тестовом сове я ограничиваю работу - работает по открытию дневного бара, чтобы не тормозил по всем тикам.
Спасибо вам огромное за труд! Все получилось!!!
Насчет print. В предпоследнем коде я выводил по ценам открытия с помощью тех же Print("High1= ", High1) и Print("Low1= ", Low1). Но там было очень много строк за месяц, и они сильно отличались. И я не понимал, как пользоваться.
А в последнем коде стало все в порядке!!! Еще раз спасибо!