А документацию почитать про массивы кто запрещает?
Там ведь есть сортировка массива. Соответственно в индексе 0 будет минимальная цена, а в последнем индексе максимальная. И вывод: индекс 1 это вторая по величине цена, и соответственно предпоследний индекс —*************
Alexey Viktorov #:
Я пробовал создавать динамический массив равный количеству открытых сделок, но при открытии новых сделок я получал ошибку "array out of range", если же я создаю массив с большим количеством то пустые места забиваються дубликатами и сложно отсортировать. Можете пожалуйста что-то посоветовать по этому поводу? А документацию почитать про массивы кто запрещает?
Там ведь есть сортировка массива. Соответственно в индексе 0 будет минимальная цена, а в последнем индексе максимальная. И вывод: индекс 1 это вторая по величине цена, и соответственно предпоследний индекс —*************
double RRatesS(string Par) { int a = CountSellPos(); double PriceSell[]; double one =0; double two = 0; int three = 0; int four = 0; ArrayResize(PriceSell,); if(CountSellPos()==0){ ArrayFree(PriceSell); } for(int i=PositionsTotal()-1; i>=0; i--){ if(a_position.SelectByIndex(i)) if(a_position.Symbol()==Symbol()) {//int PosType = a_position.Type(); ENUM_POSITION_TYPE pos_type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); if(pos_type==POSITION_TYPE_SELL){ PriceSell[i]=a_position.PriceOpen(); ArraySort(PriceSell); one = PriceSell[a-1]; if(a>1) two = PriceSell[a-2]; } } } if(Par == "one") return(one); else if(Par == "two") return(two); else if(Par == "three") return(three); else if(Par == "four") return(four); return(0); }
Fletchers97 #:
Я пробовал создавать динамический массив равный количеству открытых сделок, но при открытии новых сделок я получал ошибку "array out of range", если же я создаю массив с большим количеством то пустые места забиваються дубликатами и сложно отсортировать. Можете пожалуйста что-то посоветовать по этому поводу?
Я пробовал создавать динамический массив равный количеству открытых сделок, но при открытии новых сделок я получал ошибку "array out of range", если же я создаю массив с большим количеством то пустые места забиваються дубликатами и сложно отсортировать. Можете пожалуйста что-то посоветовать по этому поводу?
Надо менять размер массива перед заполнением, увеличивая размер на 1.
ArrayResize(PriceSell, ArraySize(PriceSell)+1);

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день столкнулся с проблемой сортировки цен. Я умею получать самую высшую и самую низшую цены ордеров, но мне нужно еще получать предпоследнюю цену(с конца и с начала).
Можно ли как то получить предпоследние значения по такому принципу как написал я? Или можно ли как то это сделать с помощью массива?
P.S. В данном случае мне нужно получить значение two и three.