вобщем фишка походу с ресайзом, но в чем там именно проблема все еще понять не могу...
Начните с того, что Вы не проверяете код возврата функции ArrayResize()
ну, ресайз он делает и размер буфера и массива становятся одинаковыми. что там может пойти не так?
я хз может и не в ресайзе дело - попробуйте посмотрите файл я выложил
ArraySize(MADif1) можно вычислить однократно и присвоить переменной, а потом ресайзить остальное. Зачем 16 раз обращаться к этой функции, если достаточно одного?
это уже будет на этапе оптимизации кода, сейчас пока что алгоритмы разные пробую
ну, ресайз он делает и размер буфера и массива становятся одинаковыми. что там может пойти не так?
я хз может и не в ресайзе дело - попробуйте посмотрите файл я выложил
Если Вы "всё знаете", то зачем спрашиваете?
PS. У Вас может банально памяти не хватать, ресайз ничего перераспределять не будет (код возврата = -1), и будет выход за пределы выделенной под массивы памяти.
Если Вы "всё знаете", то зачем спрашиваете?
PS. У Вас может банально памяти не хватать, ресайз ничего перераспределять не будет (код возврата = -1), и будет выход за пределы выделенной под массивы памяти.
ресайз проходит говорю ж))
отслеживал размер массива я)
ресайз проходит говорю ж))
отслеживал размер массива я)
Чем отслеживали? У Вас нет проверки.
Чем отслеживали? У Вас нет проверки.
одна строчка которой ЗДЕСЬ нет=)
если бы здесь был весь тот код что я использовал для проверки состояния того или другого объекта прога была бы в 2 раза длиннее уже))
FiftyStars, приветствую!
Индикатор, без указанных Вами недостатков во вложении.
В обмен расскажите о том как интерпретировать результаты данного инструмента. :) Ниже вставка с моими изменениями.
// Если появился новый бар, увеличиваем размерность массива и сдвигаем значения на единицу if (isNewBar()) { int Size = ArraySize(MADif1); ArrayResize(Bulls,Size); ArrayResize(Bears,Size); ArrayResize(BullsMA1,Size); ArrayResize(BearsMA1,Size); ArrayResize(BullsMA2,Size); ArrayResize(BearsMA2,Size); ArrayResize(BullsMA3,Size); ArrayResize(BearsMA3,Size); ArrayResize(BullsMA4,Size); ArrayResize(BearsMA4,Size); ArrayResize(BullsMAMA1,Size); ArrayResize(BearsMAMA1,Size); ArrayResize(BullsMAMA2,Size); ArrayResize(BearsMAMA2,Size); ArrayResize(BullsMAMA3,Size); ArrayResize(BearsMAMA3,Size); ArrayResize(BullsMAMA4,Size); ArrayResize(BearsMAMA4,Size); for(i=Bars-1;i>0;i--) { Bulls[i]=Bulls[i-1]; Bears[i]=Bears[i-1]; BullsMA1[i]=BullsMA1[i-1]; BearsMA1[i]=BearsMA1[i-1]; BullsMA2[i]=BullsMA2[i-1]; BearsMA2[i]=BearsMA2[i-1]; BullsMA3[i]=BullsMA3[i-1]; BearsMA3[i]=BearsMA3[i-1]; BullsMA4[i]=BullsMA4[i-1]; BearsMA4[i]=BearsMA4[i-1]; BullsMAMA1[i]=BullsMAMA1[i-1]; BearsMAMA1[i]=BearsMAMA1[i-1]; BullsMAMA2[i]=BullsMAMA2[i-1]; BearsMAMA2[i]=BearsMAMA2[i-1]; BullsMAMA3[i]=BullsMAMA3[i-1]; BearsMAMA3[i]=BearsMAMA3[i-1]; BullsMAMA4[i]=BullsMAMA4[i-1]; BearsMAMA4[i]=BearsMAMA4[i-1]; } Bulls[0]=0.; Bears[0]=0.; BullsMA1[0]=0.; BearsMA1[0]=0.; BullsMA2[0]=0.; BearsMA2[0]=0.; BullsMA3[0]=0.; BearsMA3[0]=0.; BullsMA4[0]=0.; BearsMA4[0]=0.; BullsMAMA1[0]=0.; BearsMAMA1[0]=0.; BullsMAMA2[0]=0.; BearsMAMA2[0]=0.; BullsMAMA3[0]=0.; BearsMAMA3[0]=0.; BullsMAMA4[0]=0.; BearsMAMA4[0]=0.; } ....................... //+------------------------------------------------------------------+ //| возвращает true если появлися новый бар, иначе false | //+------------------------------------------------------------------+ bool isNewBar() { //---- bool res=false; if (indBars!=Bars) { indBars=Bars; res=true; } //---- return(res); }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вот код, не могу понять в чем проблема - при помещении на график история рассчитывается корректно, а в процессе работы что то не так проиходит....можете посмотреть что именно на тестере стратегий...перерасчет бара идет корректно, но при появлении следующего бара предыдущий принимает значение пред-предыдущего и в итоге чертится прямая горизонтальная
Подскажите плиз что не так