Any questions from newcomers on MQL4 and MQL5, help and discussion on algorithms and codes - page 239
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
Thanks for the help, but in real trading it makes no difference how to take the price? After all, you will have to put both indicator and EA on the chart?
In real trading you will be able to get the data. As long as you don't accidentally delete the indicator lines...
With a real one you will be able to receive data. If you don't accidentally remove the indicator lines...
So, I have one more question. this is an awesome EA. But it needs to do this: when it crosses a line, an additional order is opened in this direction, and then it closes on profit... How to make so that after closing on profit, the additional order is not opened again? Until the indicator line is updated?
Good afternoon! Need a little help with the code which:
opens BUY if file 11112222.txt contains 1;
opens SELL if file 11112222.txt contains -1;
closes all orders if file 11112222.txt contains 0;
Given file 11112222.txt, there can be only three entries: 1, -1 or 0
I don't understand what is wrong with this code; for some reason, if I see 0 in file 11112222.txt, it opens BUY order, instead of closed order code, I just don't know what is wrong.
Ay, there is also a problem, when EA is running, it's almost always impossible to open 11112222.txt, it says the file is busy with another application, so to fix this problem I put FileClose(handle2); // Close text file; but it doesn't help and I need the EA to check file 11112222.txt for 1, -1 or 0 after it was opened and then close it, because the file is periodically used by another program to add 1, -1 or 0.
int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
{
Print(FileReadString(handle2));
FileClose(handle2); // закрытие текстового файла
//ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
{
OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle2); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle2); // закрытие текстового файла
}
//=================================конец кода BUY=========================================
//=================================SELL=========================================
int handle3 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
if(handle3<0)//если в текстовом файле меньше 0, то есть -1, то открывать SELL
{
Print(FileReadString(handle3));
FileClose(handle3); // закрытие текстового файла
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на продажу
{
OrderSend(Symbol(), OP_SELL, 0.01, Bid, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle3); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle3); // закрытие текстового файла
}
//=================================конец кода SELL=========================================
//=================================ЗАКРЫТИЕ ВСЕХ ОРДЕРОВ=========================================
int handle4 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
if(handle4=0)//если в текстовом файле равно 0, то закрыть все ордера
{
Print(FileReadString(handle4));
FileClose(handle4); // закрытие текстового файла
//-----------------код закрывает все ордера--------------------
bool result;
int error;
while (OrdersTotal()>0)
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{ if(OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if(OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
OrderDelete(OrderTicket());
if(result!=TRUE) { error=GetLastError();
Print("LastError = ",error, " ",Symbol()); }
else error=0; }
else Print( "Error when order select ", GetLastError());
FileClose(handle4); // закрытие текстового файла
}
//------------конец кода закрывающего ордера------------------
FileClose(handle4); // закрытие текстового файла
}
//=================================конец кода ЗАКРЫТИЕ ВСЕХ ОРДЕРОВ=========================================
Good afternoon! Need a little help with the code which:
opens BUY if file 11112222.txt contains 1;
opens SELL if file 11112222.txt contains -1;
closes all orders if file 11112222.txt contains 0;
The file 11112222.txt is given and it may have only three entries: 1, -1 or 0.
For some reason, when 0 is in file 11112222.txt, it opens a BUY order, while a close order code should be triggered; I don't understand what the error is.
So, there is also a problem, when the EA is running, it's almost always impossible to open 11112222.txt, because it says the file is busy with another application. To fix it, I put FileClose(handle2); // Close text file; but it doesn't work and I need the EA to check the file 11112222.txt for 1, -1 or 0 and close it, because every second another program uses this file to put 1, -1 or 0 in it.
Because the file handle is not the file contents.
You have to read the contents of the file first, and only then set the condition. It's the other way around, you have a condition by handle, then read the file and close it.
Because the handle of the file is not the contents of the file.
You have to read the contents of the file first, and only then put the condition. In your case it's vice versa, condition by handle, then read file and close it.
1) - This part opens file 11112222.txt to read data from it:
//=================================BUY=========================================
int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
2) - Next comes the condition if handle2>0
if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
{
3) - This is the part I don't understand:
Print(FileReadString(handle2));
4) - This part closes the file:
FileClose(handle2); // закрытие текстового файла
5) - Since the handle2>0 condition is met, i.e. file 11112222.txt contains 1, it opens a buy order:
//ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
{
OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle2); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle2); // закрытие текстового файла
}
//=================================конец кода BUY=========================================
Greetings trying to write a script to close orders.
If I open several sell and buy orders alternately and try to close them with this order, only a few are closed, the rest get error 129 (Incorrect price).
I tried to make a script which for example makes 10 attempts * on the number of orders, with pause in case of error.
It usually copes with its task after quite a number of attempts, at which the same 129 error is issued. But while it tries, with many attempts, to close orders out can be closed manually, and this does not cause errors, they close.
What am I doing wrong?
Greetings trying to write a script to close orders.
If I open several sell and buy orders alternately and try to close them with this order, only a few are closed, the rest get error 129 (Incorrect price).
I tried to make a script which for example makes 10 attempts * on the number of orders, with pause in case of error.
It usually copes with its task after quite a number of attempts, at which the same 129 error is issued. But while it tries, with many attempts, to close orders out can be closed manually, and this does not cause errors, they close.
What am I doing wrong?
In general, what you write is not allowed to trade on a real account, it is only for a tester
In general, what you write should not be allowed to trade in a real account, it is only for the tester
It helps, thank you.
In general, what you write is not allowed to trade on a real account, it's only for a tester
Can you elaborate on why "not allowed to trade..."?
Can you elaborate on why "not allowed to trade"?
There is no check for errors, and if the server closes and generates a critical error, the Expert Advisor will still continue to pound the server, and this smells like a ban for further auto-trading.