![MQL5 - Language of trade strategies built-in the MetaTrader 5 client terminal](https://c.mql5.com/i/registerlandings/logo-2.png)
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Here if Orderselect is FALSE how the EA can go back to the code line: for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
???
Here if Orderselect is FALSE how the EA can go back to the code line: for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
???
That code is wrong . . . .
cnt needs to start at OrdersTotal() - 1 and decrement down to cnt >= 0 . . . . the first entry is 0 not 1
This is why I asked to see the code . . . and you have shown enough to identify the problem . . . probably. ;-)
That code is wrong . . . .
cnt needs to start at OrdersTotal() - 1 and decrement down to cnt >= 0 . . . . the first entry is 0 not 1
This is why I asked to see the code . . . and you have shown enough to identify the problem . . . probably. ;-)
Very Correct. Thank you, Wizeman!
Very Correct. Thank you, Wizeman!
And another idea:
If I have many conditions, you may write:
If( X>b && B>S && NB<F......)
{
BBB= 5;
}f.e.
Here, the EA has to compute every condition within the bracket.
But, if you are looking fo efficiency (4,000 code lines...) I prefer to have:
If ( X>b )
{
while (B>S)
{
While (NB<F..)
{
BBB=5;
}
break;
}
break;
}
Are the 2 variations are the same?
Y.
crossy, when you write the code, please use SRC button, it will be much more readable
So it will be shown like this
There explanation about "if, while and for" loop in mql4 https://book.mql4.com/operators/assign
On second code, it's OK since you using break, however, that's a long way just to get BBB = 5, I prefer first code, it use less resources
And another idea:
If I have many conditions, you may write:
If( X>b && B>S && NB<F......)
{
BBB= 5;
}f.e.
Here, the EA has to compute every condition within the bracket.
But, if you are looking fo efficiency (4,000 code lines...) I prefer to have:
Use SRC button to display your code for better reading, please :)
You OrderSelect() is coded in a wrong way. Compare your code with this. Then write back if you still have the problem or not :)
Special Thanks to onewithzachy,
I did not know that the ORDERSELECT migth not catch, so you may have unknown errors.
My code that was 4016 code lines became almost 4500 lines - but without errors.
Thank you all, freinds.
Y.
Hello freinds,
After a long journy here, I had a good advamtage with my EA, but I have a one more problem, as follow:
I have the following code line:
CLOSE_Single_P(Pair1,"LONG",OrderT,OrderL);
as:
Pair1 is the Symbol,
"LONG" is a sign of a long trade,
OrderT is the order Ticket number,
OrderL is the order lot size.
The function is as follow:
void CLOSE_Single_P(string SYMB, string TREN, int TICKET, double LOTT)
{
double PRC;
bool Check = false;
for ( int cntt=0; cntt<20000; cntt++ )
{
if ( Check )
{
Check_Ini();
return;
}
for ( int vvv = OrdersTotal()-1; vvv >= 0; vvv-- )
{
if ( OrderSelect(vvv, SELECT_BY_POS, MODE_TRADES) )
{
Check = false;
if ( TREN == "LONG" )
PRC = MarketInfo(SYMB,MODE_BID);
else
if ( TREN == "SHORT" )
PRC = MarketInfo(SYMB,MODE_ASK);
Check = OrderClose(TICKET,LOTT,PRC,Slippage,Yellow);
if ( Check )
break;
}
}
}
return;
}
My PROBLEM is: The EA sometimes closes the trade very well, but sometimes the EA closes the tarde BUT it is continuing to look for the ticket to close it, although it was closed already.
(I get the error: "Unknown ticket number.." .
I think taht I have a logic mistake.
Thank you for you kind help.
Y
Please . . . . . .