Просто мне нужна небольшая помощь, тогда все будет хорошо. (Мне нужно знать последний ордер на покупку, последний ордер на продажу и предыдущий ордер на покупку или продажу).
Большое спасибо.
int LastOpenTicketForBuy(){
datetime lastTime = 0;
int lastTicket = -1; // None open.int magi.number=0;
//for(int pos=0; pos<OrdersTotal(); i++) {
OrderSelect(pos, SELECT_BY_POS);
for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
OrderSelect(pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber() == magic.number // my magic number
&& OrderSymbol() == Symbol() // and my pair.
&& OrderOpenTime() > lastTime
&& OrderType()==OP_BUY
){
lastTime = OrderOpenTime();
lastTicket = OrderTicket();
}
return(lastTicket);
}
int LastOpenTicketForSell(){
datetime lastTime = 0;
int lastTicket = -1; // None open.int magi.number=0;
for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
OrderSelect(pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber() == magic.number // my magic number
&& OrderSymbol() == Symbol() // and my pair.
&& OrderOpenTime() > lastTime
&& OrderType()==OP_SELL
){
lastTime = OrderOpenTime();
lastTicket = OrderTicket();
}
return(lastTicket);
}
int previousorderforbuy(){
datetime lastTime = 0;
int lastTicket = -1; // None open.int magi.number=0;
for(int pos--; pos >= 0 ; pos--) if (
OrderSelect(pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber() == magic.number // my magic number
&& OrderSymbol() == Symbol() // and my pair.
&& OrderOpenTime() > lastTime
&& OrderType()==OP_BUY
){
lastTime = OrderOpenTime();
lastTicket = OrderTicket();
}
return(lastTicket);
}
int previousorderforsell(){
datetime lastTime = 0;
int lastTicket = -1; // None open.int magi.number=0;
for(int pos--; pos >= 0 ; pos--) if (
OrderSelect(pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber() == magic.number // my magic number
&& OrderSymbol() == Symbol() // and my pair.
&& OrderOpenTime() > lastTime
&& OrderType()==OP_SELL
){
lastTime = OrderOpenTime();
lastTicket = OrderTicket();
}
return(lastTicket);
}
не могли бы вы взглянуть и сказать мне, что не так.
Мне нужно создать несколько функций для: 1- функция для получения и сохранения цены открытия последнего ордера на покупку. 2- функция для получения и хранения цены открытия последнего ордера на продажу. 3- функция для получения и хранения последнего закрытого ордера на покупку или продажу.
int LastOpenTicketForBuy(){ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. int magi.number= 0 ;
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber () == magic.number // my magic number
&& OrderSymbol () == Symbol () // and my pair.
&& OrderType ()==OP_BUY )
{ lastTime = OrderOpenTime ();
lastTicket = OrderTicket (); }
return (lastTicket);}
int LastOpenTicketForSell()
{ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open.int magi.number= 0 ;
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber () == magic.number // my magic number
&& OrderSymbol () == Symbol () // and my pair.
&& OrderType ()==OP_SELL )
{ lastTime = OrderOpenTime ();
lastTicket = OrderTicket (); }
return (lastTicket);}
int lastcloseorder()
{ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. int magi.number= 0 ;
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber () == magic.number // my magic number
&& OrderSymbol () == Symbol () // and my pair.
&& OrderCloseTime () > lastTime
&& OrderType ()==OP_BUY||OP_SELL )
{ lastTime = OrderCloseTime (); lastTicket = OrderTicket (); }
return (lastTicket);}
затем я поставлю, если ((LastOpenTicketForBuy()+LastOpenTi cketForSell())/2)<MarketInfo("EURUSD",MODE_BID)Clo se t the position
pos декрементируется до нуля. второй цикл заканчивается --> переходит обратно в первый, а первый цикл не знает, куда делся pos с прошлого раза. есть шанс, что pos = нулю.
По вашему мнению... что делает return(lastTicket);?
Возвращает номер билета для текущего выбранного ордера.
Вы сказали ...
"Мне нужно создать несколько функций для: 1- функция для получения и сохранения цены открытия последнего ордера на покупку. 2- функция для получения и сохранения цены открытия последнего ордера на продажу.
3- функция для получения и сохранения последнего закрытого ордера, будь то покупка или продажа ".
Так почему вы возвращаете номер билета? Прочитайте код, который вы копируете и вставляете, поймите его, научитесь...
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Просто мне нужна небольшая помощь, тогда все будет хорошо. (Мне нужно знать последний ордер на покупку, последний ордер на продажу и предыдущий ордер на покупку или продажу).
Большое спасибо.
ребята,
не могли бы вы взглянуть и сказать мне, что не так.
Мне нужно создать несколько функций для:
1- функция для получения и сохранения цены открытия последнего ордера на покупку.
2- функция для получения и хранения цены открытия последнего ордера на продажу.
3- функция для получения и хранения последнего закрытого ордера на покупку или продажу.
затем я поставлю, если ((LastOpenTicketForBuy()+LastOpenTi cketForSell())/2)<MarketInfo("EURUSD",MODE_BID)Clo se t the position
Вы имеете в виду, что я должен
1- поставить double LastOpenForBuy() вместо int
2-поставить double orderforbuy затем return( orderforbuy )
таким образом я смогу получить последний ордер, открытый только для покупки.
Вы имеете в виду, что я должен
Это вопрос... Я не имею в виду ничего другого, кроме ... каков ваш ответ?
Если вы хотите, чтобы я помог, вы должны ответить на мой вопрос ... и "Я не знаю" не является приемлемым ответом. Подумайте об этом немного.
Как вы считаете... что делает return(lastTicket); ?
Возвращает номер билета для текущего выбранного заказа.
Спасибо WHRoeder,
За реальную помощь. Если мне нужно получить последний ордер на покупку и последний ордер на продажу, то сравнить их, сделав :
if (last orderopenforbuy == OOTlastest)
{ сделайте что-нибудь }
else
{ } ....... нижеприведенный код будет работать.
действительно ли это работает????
первая петля
переходит во второй
pos декрементируется до нуля. второй цикл заканчивается --> переходит обратно в первый, а первый цикл не знает, куда делся pos с прошлого раза. есть шанс, что pos = нулю.
этот код может работать... просто нужно изменить одну вещь:
второй оператор for
на другой итератор, например
и аналогичным образом заменить pos на новый итератор (в данном случае a) во всей логике второго цикла ТОЛЬКО.
По вашему мнению... что делает return(lastTicket); ?
Возвращает номер билета для текущего выбранного ордера.
Вы сказали ...
"Мне нужно создать несколько функций для:1- функция для получения и сохранения цены открытия последнего ордера на покупку.
2- функция для получения и сохранения цены открытия последнего ордера на продажу.
3- функция для получения и сохранения последнего закрытого ордера, будь то покупка или продажа ".
Так почему вы возвращаете номер билета? Прочитайте код, который вы копируете и вставляете, поймите его, научитесь...