//=================================BUY========================================= int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY {
//=================================SELL========================================= int handle3 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения if(handle3<0)//если в текстовом файле меньше 0, то есть -1, то открывать 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());
谢谢你的帮助,但在实际交易中,如何取价没有区别? 毕竟,你必须把指标和EA都放在图表上?
在真实的交易中,你将能够获得数据。只要你不意外地删除指标线...
有了真实的,你就能接收数据。如果你没有不小心把指示线 移开...
所以,我还有一个问题。这是个很好的EA。但它需要这样做:当它越过一条线时,在这个方向上开出一个额外的订单,然后在盈利时关闭...如何使获利平仓后,不再开立额外的订单? 直到指标线被更新?
下午好!需要一点帮助的代码有哪些。
如果文件11112222.txt包含1,则打开BUY。
如果文件11112222.txt包含-1,则打开卖出。
如果文件11112222.txt包含0,则关闭所有订单。
给定文件11112222.txt,只能有三个条目:1、-1或0
我不明白这段代码有什么问题;由于某些原因,如果我在文件11112222.txt中看到0,就会打开BUY订单,而不是关闭订单代码,我只是不知道哪里出了问题。
唉,还有一个问题,当EA运行时,几乎总是无法打开11112222.txt,它说该文件正被另一个程序忙着,所以为了解决这个问题,我把" FileClose(handle2); //关闭文本文件 "放在所有地方,但它没有帮助,我需要EA在文件 11112222.txt被打开 后检查1、-1或0,然后关闭它,因为该文件被另一个程序定期使用,记录1、-1或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); // закрытие текстового файла
}
//=================================конец кода ЗАКРЫТИЕ ВСЕХ ОРДЕРОВ=========================================
下午好!需要一点帮助的代码有哪些。
如果文件11112222.txt包含1,则打开BUY。
如果文件11112222.txt包含-1,则打开卖出。
如果文件11112222.txt包含0,则关闭所有订单。
给出文件11112222.txt,它可能只有三个条目:1、-1或0。
由于某些原因,当0在文件11112222.txt中时,它打开了BUY订单,而它应该触发订单关闭代码;我不明白错误是什么。
所以,还有一个问题,当EA运行时,几乎总是无法打开11112222.txt,因为它说这个文件正被另一个程序忙着。 我把FileClose(handle2); //关闭文本文件;但它不起作用,我需要EA检查11112222.txt文件 的1、-1或0并关闭它,因为每一秒都有另一个程序使用这个文件,把1、-1或0放在里面。
因为文件柄不是文件内容。
你必须先读取文件的内容,然后才能设置条件。反过来说,你通过句柄有一个条件,然后读取文件并关闭它。
因为文件的句柄不是文件的内容。
你必须先读取文件的内容,然后才提出条件。在你的例子中,情况正好相反,通过句柄的条件,然后读取文件并关闭它。
1) - 这一部分打开文件11112222.txt,从其中读取数据。
//=================================BUY=========================================
int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
2) - 接下来是如果handle2>0的条件
if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
{
3) - 这是我不明白的部分。
Print(FileReadString(handle2));
4) - 这一部分关闭了文件。
FileClose(handle2); // закрытие текстового файла
5) - 由于满足handle2>0的条件,即文件11112222.txt中含有1,它就会开出一个买入指令。
//ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
{
OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle2); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle2); // закрытие текстового файла
}
//=================================конец кода BUY=========================================
问候试图写一个脚本来关闭订单。
如果我交替开了几个卖单 和买单,并试图用这个订单关闭它们,只有几个被关闭,其余的得到错误129(价格不正确)。
我试图做一个脚本,例如根据订单的数量进行10次尝试,在出现错误时暂停。
它通常在经过相当多的尝试后才完成任务,在这时会出现同样的129错误。但是,虽然它试图,经过多次尝试,关闭订单出可以手动关闭,这不会导致错误,他们关闭。
我做错了什么?
问候试图写一个脚本来关闭订单。
如果我交替开了几个卖单 和买单,并试图用这个订单关闭它们,只有几个被关闭,其余的得到错误129(价格不正确)。
我试图做一个脚本,比如说,根据订单的数量进行10次尝试,在出现错误时暂停一下。
它通常在经过相当多的尝试后才完成任务,在这时会出现同样的129错误。但是,虽然它试图,经过多次尝试,关闭订单出可以手动关闭,这并不引起错误,他们关闭。
我做错了什么?
一般来说,你写的东西是不允许在真实账户上交易的,它只适用于测试者。
一般来说,你写的东西不应该被允许在真实账户中进行交易,它只适用于测试者。
这很有帮助,谢谢你。
一般来说,你写的东西是不允许在真实账户上交易的,它只适用于测试者。
你能详细说明为什么 "不允许交易... "吗?
你能否详细说明为什么 "不允许交易"?
没有检查错误,如果服务器关闭并产生一个关键错误,专家顾问仍将继续冲击服务器,这就有禁止进一步自动交易的味道。