Здравствуйте! У меня вопрос по массивам. С горем пополам создали одномерный массив. Все бы хорошо, ведь на этапе компиляции ни каких ошибок, но вот стоит запустить в тестере и появляется ошибка EURUSD,M1: array out of range in ,, (218,12) указывающая как раз на положение моего горе-массива. Подскажите пожалуйста что с ним не так
int Totall=OrdersTotal();
double Price; // Цена выбранного ордераdouble Mas[]; //массив для упорядочивания всех ордеровfor(int i=0; i<OrdersTotal(); i++) // Цикл перебора ордер
{
if(OrderSelect(i,SELECT_BY_POS)) // Если есть следующий
{
Price=OrderOpenPrice();
Mas [i] = Price; //Как раз перед квадратной скобкой и есть ошибка array out of range in ,, (218,12)
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордераArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
}
}
Подскажите пожалуйста, может еще есть способы присвоить каждому элементу массива цену ордера?
Здравствуйте! У меня вопрос по массивам. С горем пополам создали одномерный массив. Все бы хорошо, ведь на этапе компиляции ни каких ошибок, но вот стоит запустить в тестере и появляется ошибка EURUSD,M1: array out of range in ,, (218,12) указывающая как раз на положение моего горе-массива. Подскажите пожалуйста что с ним не так
У вас в корне неверный код, но ошибка связана с тем, что перед заполнением не задан размер массива
if(OrderSelect(i,SELECT_BY_POS)) // Если есть следующий
{
Price=OrderOpenPrice();
ArrayResize(Mas, i+1);
Mas [i] = Price;
У вас в корне неверный код, но ошибка связана с тем, что перед заполнением не задан размер массива
Огромное спасибо! Подскажите пожалуйста, не верно выстроена последовательность? Задумка в определении цен ближайших к цене ордеров с низу и сверху. Скажите пожалуйста свою точку зрения.
Огромное спасибо! Подскажите пожалуйста, не верно выстроена последовательность? Задумка в определении цен ближайших к цене ордеров с низу и сверху. Скажите пожалуйста свою точку зрения.
У вас в цикле много лишнего. В цикле нужно забить массив ценами, а вне цикла уже с ним работать
for(int i=0; i<OrdersTotal(); i++) // Цикл перебора ордер
{
if(OrderSelect(i,SELECT_BY_POS)) // Если есть следующий
{
ArrayResize(Mas, i+1);
Mas[i] = OrderOpenPrice(); //Как раз перед квадратной скобкой и есть ошибка array out of range in ,, (218,12)/*
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убыванию
int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордера
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убыванию
int Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
*/
}
}
double Price; // Цена выбранного ордераdouble Mas[]; //массив для упорядочивания всех ордеровfor(int i=0; i<OrdersTotal(); i++) // Цикл перебора ордер
{
if(OrderSelect(i,SELECT_BY_POS)) // Если есть следующий
{
Price=OrderOpenPrice();
ArrayResize(Mas, i+1);
Mas [i] = Price;
}
}
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордера Вот в этой строкеArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
Vitaly Muzichenko:
Возможно. Одну и ту-же задачу можно реализовать несколькими способами.
Я только что вынес за цикл опредиление индексов ближайших елементов и в тестере указывает на ошибку в месте Mas[Blizko2] .Может это потому что при запуске советника еще нет ордеров?
Подскажите пожалуйста, возможно вы знаете где возможно посмотреть на что либо похожее?!)
Я только что вынес за цикл опредиление индексов ближайших елементов и в тестере указывает на ошибку в месте Mas[Blizko2] .Может это потому что при запуске советника еще нет ордеров?
Попробуйте так
if(ArraySize(Mas)>0) { // если массив не пустой, тоArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордераArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
}
Спасибо Огромное!! У меня еще вопрос: А я верно определяю индекс ближайшего меньшего по значению элемента к текушей цене, поменяв MODE_DESCEND на MODE_ASCEND??
Спасибо Огромное!! У меня еще вопрос: А я верно определяю индекс ближайшего меньшего по значению элемента к текушей цене, поменяв MODE_DESCEND на MODE_ASCEND??
Здравствуйте! У меня вопрос по массивам. С горем пополам создали одномерный массив. Все бы хорошо, ведь на этапе компиляции ни каких ошибок, но вот стоит запустить в тестере и появляется ошибка EURUSD,M1: array out of range in ,, (218,12) указывающая как раз на положение моего горе-массива. Подскажите пожалуйста что с ним не так
Здравствуйте! У меня вопрос по массивам. С горем пополам создали одномерный массив. Все бы хорошо, ведь на этапе компиляции ни каких ошибок, но вот стоит запустить в тестере и появляется ошибка EURUSD,M1: array out of range in ,, (218,12) указывающая как раз на положение моего горе-массива. Подскажите пожалуйста что с ним не так
У вас в корне неверный код, но ошибка связана с тем, что перед заполнением не задан размер массива
У вас в корне неверный код, но ошибка связана с тем, что перед заполнением не задан размер массива
Огромное спасибо! Подскажите пожалуйста, не верно выстроена последовательность? Задумка в определении цен ближайших к цене ордеров с низу и сверху. Скажите пожалуйста свою точку зрения.
Огромное спасибо! Подскажите пожалуйста, не верно выстроена последовательность? Задумка в определении цен ближайших к цене ордеров с низу и сверху. Скажите пожалуйста свою точку зрения.
У вас в цикле много лишнего. В цикле нужно забить массив ценами, а вне цикла уже с ним работать
У вас в цикле много лишнего. В цикле нужно забить массив ценами, а вне цикла уже с ним работать
Ясно. Огромное спасибо!! А задумку верно выразил?
Ясно. Огромное спасибо!! А задумку верно выразил?
Возможно. Одну и ту-же задачу можно реализовать несколькими способами.
Vitaly Muzichenko:
Возможно. Одну и ту-же задачу можно реализовать несколькими способами.
Я только что вынес за цикл опредиление индексов ближайших елементов и в тестере указывает на ошибку в месте Mas[Blizko2] .Может это потому что при запуске советника еще нет ордеров?
Подскажите пожалуйста, возможно вы знаете где возможно посмотреть на что либо похожее?!)Я только что вынес за цикл опредиление индексов ближайших елементов и в тестере указывает на ошибку в месте Mas[Blizko2] .Может это потому что при запуске советника еще нет ордеров?
Попробуйте так
Попробуйте так
Спасибо Огромное!! У меня еще вопрос: А я верно определяю индекс ближайшего меньшего по значению элемента к текушей цене, поменяв MODE_DESCEND на MODE_ASCEND??
Спасибо Огромное!! У меня еще вопрос: А я верно определяю индекс ближайшего меньшего по значению элемента к текушей цене, поменяв MODE_DESCEND на MODE_ASCEND??
Не отвечу, Я никогда не пользовался ArrayBsearch