void ClosePosition() { int ticket = OrderTicket(); int total = OrdersTotal(); for(int i=total-1;i>=0;i--) { if(OrderSelect(ticket,SELECT_BY_TICKET)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()== 0) { if(OrderType()==OP_BUYLIMIT) { int a=OrderOpenTime(); } if(OrderType()==OP_SELLLIMIT) { int b=OrderOpenTime(); } if((OrderType()==OP_BUY)&&(TimeCurrent() - a > maxDuration * ( 60) )) { OrderClose(OrderTicket(),OrderLots(),Bid,2,Red); } if((OrderType()==OP_SELL)&&(TimeCurrent() - b > maxDuration * ( 60) )) { OrderClose(OrderTicket(),OrderLots(),Ask,2,Red); } } } } }
Why do you have the loop? you don't use i at all.
Where does the variable ticket get its value from?
Why do you have the loop? you don't use i at all.
Where does the variable ticket get its value from?
I forget to delete some lines, i tried with Select_by_pos earlier but it won`t work because the position won`t be the same. The loop line is deleted.
Ticket should be get from a file? As i read from topics, it is easier to use select_by_pos but this won't work in my case. Do you have any ideas how to deal with it? (i am not sure if i include the ordersend in code i will be able to get it from there).
Or should i call as a pair, because i will have only one open order from each currencies. So i start a loop for pos and symb for each currencies to search for pendings, and save the orderopentime than i should make another loop for pos for each order opened and compare current time with the orderopentime from pendings? It is something that i tried up before, but i should include the loops now. It will works better like this maybe?
Thank you for your time
OrderClose(OrderTicket(),OrderLots(),Bid,2,Red);
Check your return codes (OrderSelect) What are Function return values ? How do I use them ? - MQL4 forum and Common Errors in MQL4 Programs and How to Avoid Them - MQL4 Articles- If this doesn't execute:
if(OrderType()==OP_BUYLIMIT){ int a=OrderOpenTime(); }
What does this do?if((OrderType()==OP_BUY)&&(TimeCurrent() - a > maxDuration * ( 60) )) { OrderClose(OrderTicket(),OrderLots(),Bid,2,Red); }
My post was intended to make you think about your code and rectify the first mistakes that you have made.
Then we can talk about other mistakes such as variable a is given a value if the order is a buy limit, then you try to use the variable if the order is a buy. This cannot work, because if the order is a buy, no value will be assigned to a
EDIT: took me a while to write my post and William has already pointed out the mistake in the code regarding variable a

- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hello, i have next code and as title says i would like to have the expiry from pending to be used for the open position.
eg.: I open pending at 2:15 with expiry at 3:15. If position will be open at 3:14 i would like to be close at 3:15.
I tried to work with this but have no success, any idea about what should i change in my code or if there is anything right in the flow of code?
Thanks,