Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Выведите через print результаты ObjectCreate, может там ошибка.
Спасибо. Обязательно проверю, но после устранения новой проблемы. Эксперт работал какое-то время и сейчас был автоматически удален с графика. Повторно поставить его не получается, пишет что массив переполнен.
Candle=1000. Компилятор нигде не ругается, в отладчике ничего не возникает. Пожалуйста, подскажите решение проблемы
Это уже поправили.
Следующий билд будет очень редко запрашивать сигналы, если ими не пользоваться.
Это уже поправили.
А почему ArrayResize=0?
И перед ним вроде ArrayInitialize добавить надо.
И
double H
в цикле каждый раз инициализируется что ли?
Объявите его перед функцией.
Upd и скобки перепроверьте, недосчитался одной } в
А почему ArrayResize=0?
Обнуляю массив High[]
Нет, вы его размер в 0 ставите.
А разме при размере 0 информация остается? Как правильно выполняется обнуление?
Вы размер в ноль ставите, а потом туда копируете массив.
Так попробуйте
void CreateLevels() { double High[]; ArrayResize(High,Candle); // размер = Candle ArrayInitialize(High,NULL); // инициализация нулем ArraySetAsSeries(High,true); CopyHigh(_Symbol,_Period,0,Candle,High); double H; // вынес int j; // вынес for(j=Nachalo;j<=Candle;j++) { //--- поиск макс ----------------------------------- if(iHighest(Symbol(),0,10,MN*2,j-MN)==j) { H=High[j]; } } } // скобки сразу парами ставьте, искать не прийдётся
Upd поправил код, еще int j вынесА разме при размере 0 информация остается?
А, если убить, то можно, наверно, ArrayResize два раза вызвать, с 0, потом с нужным размером массива.
Может даже быстрее будет... хотя хз, как это с перераспределением памяти будет выглядеть.