доброго времени суток!.. помогите.. Как найти цену первого и последнего ордеров??? допустим открыто 5 бай ордеров..
как найти цену первого бай ордера и последнего пятого бай ордера??
Цену чего? Открытия ордера?
Цену чего? Открытия ордера?
доброго времени суток!.. помогите.. Как найти цену первого и последнего ордеров??? допустим открыто 5 бай ордеров..
как найти цену первого бай ордера и последнего пятого бай ордера??
Как-то так:
int Magic = -1; // Любой void OnTick() { // ---- Comment Comment("Min BUY = ", MinPriceOpen(OP_BUY, Magic), // Min "\nMax BUY = ", MaxPriceOpen(OP_BUY, Magic), // Max "\nMin SELL = ", MinPriceOpen(OP_SELL, Magic), // Min "\nMax SELL = ", MaxPriceOpen(OP_SELL, Magic), // Max "\nMin BUYSTOP = ", MinPriceOpen(OP_BUYSTOP, Magic), // Min "\nMax BUYSTOP = ", MaxPriceOpen(OP_BUYSTOP, Magic), // Max "\nMin SELLLIMIT = ",MinPriceOpen(OP_SELLLIMIT, Magic), // Min "\nMax SELLLIMIT = ",MaxPriceOpen(OP_SELLLIMIT, Magic) // Max ); //- end } //=============================================================================================== //----------------------- Возвращает минимальную цену позиции или ордера -----------------------+ //=============================================================================================== double MinPriceOpen(int type=-1, int mg=-1) { double m=0; for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==_Symbol && OrderType()==type &&(mg<0||OrderMagicNumber()==mg)) { if(m==0 || m>OrderOpenPrice()) { m=OrderOpenPrice(); }}}} return(m); } //=============================================================================================== //----------------------- Возвращает максимальную цену позиции или ордера ----------------------+ //=============================================================================================== double MaxPriceOpen(int type=-1, int mg=-1) { double m=0; for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==_Symbol && OrderType()==type &&(mg<0||OrderMagicNumber()==mg)) { if(m<OrderOpenPrice()) { m=OrderOpenPrice(); }}}} return(m); }
Как-то так:
А что за тип ордера такой -1 ?
if(OrderSymbol()==_Symbol && OrderType()==type &&(mg<0||OrderMagicNumber()==mg))
Как-то так:
Товарищ просил цены первого и последнего ордера, а не мин/макс цены. )
доброго времени суток!.. помогите.. Как найти цену первого и последнего ордеров??? допустим открыто 5 бай ордеров..
как найти цену первого бай ордера и последнего пятого бай ордера??
// первый ордер double fFirstOrderPrice = 0; if(OrderSelect(0, SELECT_BY_POS) == true) fFirstOrderPrice = OrderOpenPrice(); // последний ордер double fLastOrderPrice = 0; if(OrderSelect(OrdersTotal() - 1, SELECT_BY_POS) == true) fLastOrderPrice = OrderOpenPrice();
Это основа, принцип. Для законченного кода ещё нужно делать проверки на символ, тип и мэджик, это сами.
Товарищ просил цены первого и последнего ордера, а не мин/макс цены. )
Тип: =-1, да фиг знает, не стал писать "0" или селл, вписал чтоб было "ничего". По сути многие функции можно вызвать по умолчанию: MaxPriceOpen( ); и в этой вернёт "0"Дело было ночью, видать плохо понял задачу, но зато ТС будет обладать кодом поиска макс/мин цены - в хозяйстве пригодится )
Вот та, что нужна - первого и последнего.
int Magic = -1; // Любой void OnTick() { // ---- Comment Comment("Первый BUY = ", FirstPriceOpen(OP_BUY, Magic), // First "\nПоследний BUY = ", LastPriceOpen(OP_BUY, Magic), // Last "\nПервый SELL = ", FirstPriceOpen(OP_SELL, Magic), // First "\nПоследний SELL = ", LastPriceOpen(OP_SELL, Magic), // Last "\nПервый BUYSTOP = ", FirstPriceOpen(OP_BUYSTOP, Magic), // First "\nПоследний BUYSTOP = ", LastPriceOpen(OP_BUYSTOP, Magic), // Last "\nПервый SELLLIMIT = ",FirstPriceOpen(OP_SELLLIMIT, Magic), // First "\nПоследний SELLLIMIT = ",LastPriceOpen(OP_SELLLIMIT, Magic) // Last ); //- end } //=============================================================================================== //------------------------- Возвращает цену первой позиции или ордера --------------------------+ //=============================================================================================== double FirstPriceOpen(int type=-1, int mg=-1) { datetime m=0; double p=0; for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==_Symbol && OrderType()==type &&(mg<0||OrderMagicNumber()==mg)) { if(m==0 || m>OrderOpenTime()) { m=OrderOpenTime(); p=OrderOpenPrice(); }}}} return(p); } //=============================================================================================== //------------------------ Возвращает цену последней позиции или ордера ------------------------+ //=============================================================================================== double LastPriceOpen(int type=-1, int mg=-1) { datetime m=0; double p=0; for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==_Symbol && OrderType()==type &&(mg<0||OrderMagicNumber()==mg)) { if(m<OrderOpenTime()) { m=OrderOpenTime(); p=OrderOpenPrice(); }}}} return(p); }
Как так можно подходить к созданию программ, работающих с деньгами?
Вы издеваетесь? Программу пишет прогер, и если он напишет бороду, то она работать будет, но криво, а вот при создании всегда проверяется в тестере, и если что не так, то правится.
Функция написана правильно, а вот входные параметры на совести пользователя функции.
Вы когда покупаете в магазине лампу на 12В, вы же её не сунете в патрон где 220В, потому как это опасно для здоровья, стёклами может глаза ранить, хотя стандарты патронов одинаковы. Используете по назначению, вот и тут нужно использовать по назначению, то есть ввести нужные параметры, а не по умолчанию. Поэтому и поставил =-1, чтоб не использовалась по умолчанию. Это так сказать "страховка от дурака", потому как действительно, программа работает с деньгами, и косяки нужно предостерегать.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
доброго времени суток!.. помогите.. Как найти цену первого и последнего ордеров??? допустим открыто 5 бай ордеров..
как найти цену первого бай ордера и последнего пятого бай ордера??