Здравствуйте. Подскажите пожалуйста, как найти самый дальний ордер от цены. Нужен его тикет для дальнейшей работы с ним.
Спасибо.
перебрать все ордера и сравнить цену открытия ордера с рыночной.
кстати, дальний селл - это одно, а дальний бай - совсем другое.
перебрать все ордера и сравнить цену открытия ордера.
Логика ясна как дважды два. Перебрать ордера, сравнить цену, какая цена будет дальше от рыночной цены того ордера узнать тикет. Если бы мне было так просто написать код такой простой логики, то я бы не просил помощи. У меня сложности с кодом.
int i; double sMax=0; double bMin=10000; int ticketBuy=0,ticketSell=0; double BID=MarketInfo(Symbol(),MODE_BID); double ASK=MarketInfo(Symbol(),MODE_ASK); for(i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_BUY && bMin>OrderOpenPrice() && OrderOpenPrice()<BID) { bMin=OrderOpenPrice(); ticketBuy=OrderTicket();//тикет минимального BUY } if(OrderType()==OP_SELL && sMax<OrderOpenPrice() && OrderOpenPrice()>ASK) { ticketSell=OrderTicket();//тикет максимального SELL sMax=OrderOpenPrice(); } } } if(ticketBuy!=0) { //здесь Ваши действия } if(ticketSell!=0) { //здесь Ваши действия }
А не "самый нижний Бай из тех что ниже текущей цены, и самый верхний Селл из тех что выше текущей цены".
Ведь если существует ордер Бай выше текущей цены на большом расстоянии, то Ваш код его не найдёт. А возможно именно его ищет ТС.
Ну вообще-то топикстартер ищет "самый дальний ордер от цены".
А не "самый нижний Бай из тех что ниже текущей цены, и самый верхний Селл из тех что выше текущей цены".
Ведь если существует ордер Бай выше текущей цены на большом расстоянии, то Ваш код его не найдёт. А возможно именно его ищет ТС.
Дальний куда?
Дальше разберется без фрилансеров, 4 года на форуме болтается как никак...
Здравствуйте. Подскажите пожалуйста, как найти самый дальний ордер от цены. Нужен его тикет для дальнейшей работы с ним.
Спасибо.
int f_FindTicket() { double MaxDist=0; int ticket=0; double BID=MarketInfo(Symbol(),MODE_BID); double ASK=MarketInfo(Symbol(),MODE_ASK); for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_BUY && MaxDist<MathAbs(OrderOpenPrice()-BID)) { MaxDist=MathAbs(OrderOpenPrice()-BID); ticket=OrderTicket(); } if(OrderType()==OP_SELL && MaxDist<MathAbs(OrderOpenPrice()-ASK)) { MaxDist=MathAbs(OrderOpenPrice()-ASK); ticket=OrderTicket(); } } } return(ticket); }
сверху или снизу значит не важно?
Ок...
А если бай и селл будут находится на одном расстоянии от рыночной?
Тогда уж и тип ордера не нужно анализировать...
сверху или снизу значит не важно?
Ок...
Ну да ладно.
Услышим Спасибо - Хорошо, не услышим - побежим дальше работать ))) Отдохнули чуток тут )))
Я так понял фразу "самый дальний от цены".
Ну да ладно.
Услышим Спасибо - Хорошо, не услышим - побежим дальше работать ))) Отдохнули чуток тут )))
не, не отдохнул. Эта правка моего кода и в первую очередь самореклама.
Лично мне не приятно.
Свой пишите в следующий раз.
не, не отдохнул. Эта правка моего кода и самореклама.
Лично мне не приятно.
Свой пишите в следующий раз.
По моему так пишется в 99% случаев.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте. Подскажите пожалуйста, как найти самый дальний ордер от цены. Нужен его тикет для дальнейшей работы с ним.
Спасибо.