long currChart=ChartFirst();
int i=0;
while(currChart>=0)
{
Print(i,ChartSymbol(currChart)," ID =",currChart);
currChart=ChartNext(currChart); // на основании предыдущего получим новый график
i++;// не забудем увеличить счетчик
}
double GetExtremumZigZagPriceHigh(string symbol="",ENUM_TIMEFRAMES timeframe=0,int extremum_number=0)//,int depth=12,int deviation=5,int backstep=3)
{
if(symbol=="") //Если symbol = "" , то..
symbol=Symbol(); //Присвоить переменной symbol значение текущего символа на графике.//Объявить необходимые переменные:double price[]; //Цена экстремума выбранная из массива таймсерии.//datetime time[];int count; //Счетчик цикла.int bars_quantity=1000; //Количество баров на графике.int extremum_count=0; //Счетчик экстремумов.ArraySetAsSeries(price,true); //Устанавить флаг, чтобы индексация массива производилась как в таймсериях.CopyBuffer(handle,1,0,bars_quantity,price); //Скопировать в динамический массив price[] цены указанного количества баров.for(count=1; count<bars_quantity; count++) //Запустить цикл, который будет бежать по каждому бару.
{
if(price[count]!=0) //Если Цена Зигзага есть, то есть не равна нулю, то..
{
extremum_count++; //Увеличить счетчик экстремумов на одну единицу.if(extremum_count>extremum_number) //Если счетчик экстремумов превысил значение указанного номера экстремума, то..return(price[count]); //Вернуть эту цену.
}
}
//Print("GetExtremumZigZagPrice(): Экстремум ЗигЗага ",extremum_number," не найден"); //А до тех пор, пока ЗигЗаг не показывает цену,return(0); //Печатать Print, и возвращать ноль.
}
Количество скопированных элементов массива либо -1 в случае ошибки .
Примечание
При запросе данных из индикатора, если запрашиваемые таймсерии еще не построены или их необходимо загрузить с сервера, то функция сразу же вернет -1, но при этом сам процесс загрузки/построения будет инициирован.
При запросе данных из эксперта или скрипта, будет инициирована загрузка с сервера , если локально этих данных у терминала нет, либо начнется построение нужной таймсерии, если данные можно построить из локальной истории, но они еще не готовы. Функция вернет то количество данных, которые будут готовы к моменту истечения таймаута.
Проверять надо, не факт что у Вас там bars_quantity
Внимательно почитайте документацию и пример кода. У вас неправильно организован цикл.
Только не говорите, что цикл for и while одинаково работают. Проблема не в этом, а в выделенных строках.Спасибо, это я читал(с этого начал)
Все работает в моем коде, просто глюк в МТ4, графиков 8, а видит 7(
Маловероятно. Сколько раз я грешил на платформу, всегда оказывался неправ сам.
Может так попробуйте
Может так попробуйте
Тоже самое
А почему печать отличается? Другой код?
Сколько графиков открыто, какие? Символ, период.
Развёрнуты/свёрнуты?Спасибо, это я читал(с этого начал)
Все работает в моем коде, просто глюк в МТ4, графиков 8, а видит 7(
Очень плохо читал. Наверное как принудиловку в школе. Вроде прочёл, а в голове ничего не отложилось.
Вот тут возьмите пример. Там правда цель другая, но всё-же перебор открытых графиков не меняется в зависимости от цели этого перебора.
Или вот код
А почему печать отличается? Другой код?
Сколько графиков открыто, какие? Символ, период.
Развёрнуты/свёрнуты?Очень плохо читал. Наверное как принудиловку в школе. Вроде прочёл, а в голове ничего не отложилось.
Вот тут возьмите пример. Там правда цель другая, но всё-же перебор открытых графиков не меняется в зависимости от цели этого перебора.
Или вот код
Вопрос снят, перезапуск терминала решил проблему
Подскажите как избежать array out of range в этом коде
Ругается на это место
CopyBufferВозвращаемое значение
Количество скопированных элементов массива либо -1 в случае ошибки .
Примечание
При запросе данных из индикатора, если запрашиваемые таймсерии еще не построены или их необходимо загрузить с сервера, то функция сразу же вернет -1, но при этом сам процесс загрузки/построения будет инициирован.
При запросе данных из эксперта или скрипта, будет инициирована загрузка с сервера , если локально этих данных у терминала нет, либо начнется построение нужной таймсерии, если данные можно построить из локальной истории, но они еще не готовы. Функция вернет то количество данных, которые будут готовы к моменту истечения таймаута.
Проверять надо, не факт что у Вас там bars_quantity