我三个月前写的EA现在不能通过策略测试,但它在两三个月前运行得很好!!。

 
我三个月前写的EA现在不能通过测试,但它在MetaQuotes-Demo服务器上运行良好。 有谁遇到过同样的问题吗?错误代码总是像 "未能在1.38103即时卖出0.10 EURUSD sl: 1.38253 tp: 1.38053 [无效请求]"和 "OrderSend failed with error #4756"。我的版本是5.00 Build 540。帮助,我完全困惑了。
-----------------------------------------------------------------------------------
如果(condition1)
{
sell.action = TRADE_ACTION_DEAL;
sell.type = ORDER_TYPE_SELL;
sell.symbol = _Symbol;
sell.deviation = 0;
sell.price = NormalizeDouble(mtick.bid,_Digits);
sell.volume = 0.1;
sell.tp = NormalizeDouble(sell.price - mtp*_Point,_Digits)。
sell.sl = NormalizeDouble(sell.price + msl*_Point,_Digits)。
sell.type_filling =ORDER_FILLING_AON;
如果(OrderSend(sell,result_sell)==false)
{
Print("OrderSend failed with error #",GetLastError())。
ResetLastError()。
}
}
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5
 

尝试添加ZeroMemory(sell)。

if (condition1)
{
ZeroMemory(sell);
sell.action = TRADE_ACTION_DEAL;
sell.type = ORDER_TYPE_SELL;
sell.symbol = _Symbol; 
我们已经修复了这个问题,请等待下一个版本。
 
Rosh:

尝试添加ZeroMemory(sell)。

我们已经修复了这个问题,请等待下一个版本。

Rosh,刚刚更新到.565,确实得到了同样的信息#4756

ZeroMemory(struct)有帮助。那么,这个问题是否已经解决了呢?

谢谢

 
Rosh:

尝试添加ZeroMemory(sell)。

我们已经修复了这个问题,请等待下一次构建。

我也有同样的错误,尽管我是按照准确的方法来组成订单的。 为什么? 我使用的是597版本。

2012.02.26 20:08:18 Core 1 2012.02.23 08:00:00 Alert: The Buy order request could not be completed -error:4756

2012.02.26 20:08:18 Core 1 2012.02.23 08:00:00 市场买入失败 0.10 EURUSD sl: 1.32438 tp: 1.33738 [不支持的填充模式]

如果(Buy_Condition_3 && Buy_Condition_4)

{

//任何已开的买入头寸?

如果(Buy_opened)

{

Alert("我们已经有了一个买入头寸!!")。

return; // 不要建立新的买入头寸。

}

ZeroMemory(mrequest);

mrequest.action = TRADE_ACTION_DEAL; // 立即执行订单

mrequest.type = ORDER_TYPE_BUY; // 买入订单

mrequest.符号 = _Symbol; // 货币对

mrequest.偏差=0; // 与当前价格的偏差

mrequest.price = NormalizeDouble(latest_price.ask,_Digits); // 最新的卖价。

mrequest.volume = Lot; // 交易的手数

mrequest.tp = NormalizeDouble(new_price.ask + TKP*_Point,_Digits); // Take Profit

mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss

mrequest.type_filling =ORDER_FILLING_AON; // 订单执行类型

//---- 发送订单

OrderSend(mrequest,mresult);

// 获得结果代码

if(mresult.retcode==10009 || mresult.retcode==10008) //请求已完成或已下订单

{

Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!") 。

}

否则

{

Alert("买入订单请求无法完成-错误:",GetLastError())。

ResetLastError();

返回。

}

Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5
 

我注意到在MQL5的参考资料中(今天刚更新的最新版本),不再有ORDER_FILLING_AON,但即使我使用ORDER_FILLING_FOK,我仍然遇到错误4756。 请指示。

enum_order_type_filling

识别码

说明

订单_填单_福克

该交易可以用指定的数量以等于或优于订单指定的价格独家执行。如果订单符号上没有足够的报价量,订单将不会被执行。这种填充方式用于SYMBOL_TRADE_EXECUTION_INSTANT SYMBOL_TRADE_EXECUTION_REQUEST 执行模式

Order_filling_ioc

同意以与订单指定价格相同或更好的价格执行具有最大市场容量的交易。在这种情况下,将不会对未成交的数量发出额外的订单。 这种类型的填充在SYMBOL_TRADE_EXECUTION_MARKET SYMBOL_TRADE_EXECUTION_EXCHANGE 执行模式下使用 ,取决于交易服务器上的符号设置。

订单_填充_返回

同意以与订单指定价格相同或更好的价格执行最大市场容量的交易。在这种情况下,会有一个未成交的额外订单。这种类型的填充只用于挂单(TRADE_ACTION_PENDING)。

 
嗨,在我放弃MT5,回到MT4之前,有什么意见吗? 非常感谢其实我对这两样东西都很陌生,但会先试一下MT5,虽然我知道它很新。
 
lingwuchung:
嗨,在我放弃MT5,回到MT4之前,有什么意见吗? 非常感谢!其实我对这两样东西都很陌生,但会先试一下MT5,虽然我知道它很新。

在mrequest之前添加这个。

 ZeroMemory(mrequest);
   ZeroMemory(mresult); 

我遇到了和你一模一样的问题,它为我解决了这个问题。

 

我现在有同样的问题。

我的专家顾问工作得非常好。但现在它们都不能通过测试器。

当我编译文件的时候,会出现以下信息。

ORDER_FILLING_AON'-未声明的标识符

如何解决这个问题?

这是不是终端更新的结果?(5.00版Build 642)

(2012年4月24日)

希望有人能帮助我

Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5
 
lamme.vandriel:

当我编译文件的时候,会出现以下提示。

'ORDER_FILLING_AON' - 未声明的标识符

如何解决这个问题?

将ORDER_FILLING_AON改为ORDER_FILLING_FOK(见订单属性)

 
JohnnyDoe:

在mrequest之前添加这个。

我遇到过与你完全相同的问题,它为我解决了这个问题。

你好,我已经在代码中 添加了这两行,但错误4756仍然存在(贸易请求发送失败)。

你能不能精确地告诉我应该在哪里添加这两行?关于mrequest的那条已经存在了。添加这两行对我来说没有任何改变。谢谢你的帮助,我很感激。

我正在运行rel.5 build 842。

 ZeroMemory(mrequest);
   ZeroMemory(mresult); 
 
Vivaldi:

你好,我已经在代码中 添加了这两行,但错误4756仍然存在(贸易请求发送失败)。

你能不能准确地告诉我应该在哪里添加这两行?关于mrequest的那条已经存在了。添加这两行对我来说没有任何改变。谢谢你的帮助,我很感激。

我正在运行rel.5 build 842。

显示你的代码,这样我们可以告诉你在哪里添加这一行。
原因: