请教简单的ordersend()发送问题 新评论 Liang Liu 2022.09.22 08:45 我写了段简单的箱体突破开多单或开空单的代码,出现以下问题: 1、ordersend()返回的总是错误——2022.09.22 16:37:02.504 箱体突破开仓 (USDJPY,M1) OrderSend USDJPY ORDER_TYPE_BUY_STOP 1.00 at 142.39000 error 4752 2、即使价格能向下突破箱体,开空单的代码却好像没有被执行,没有打印出任何信息。 #define EXPERT_MAGIC 0;//--- input parametersinput double volume=0.0;input double longprice=0.0;input double shortprice=0.0;input double longstoploss=0.0;input double shortstoploss=0.0; //+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {//--- create timer EventSetTimer(60); //--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- destroy timer EventKillTimer(); }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() { MqlTradeRequest request={}; MqlTradeResult result={}; //开多单 if(SymbolInfoDouble(Symbol(),SYMBOL_ASK)==longprice) { ZeroMemory(request); ZeroMemory(result); request.action =TRADE_ACTION_PENDING; // 交易操作类型 request.position =0; // 关闭情况下的持仓单号 request.symbol =Symbol(); // 交易品种 request.volume =volume; // 交易量 request.type =ORDER_TYPE_BUY_STOP; // 订单类型 request.price =longprice; // 交易价格 request.stoplimit=longstoploss; //止损价格 request.deviation=10; // 可允许的价格偏差 request.magic =EXPERT_MAGIC; // 订单幻数 //--- 发送请求 if(!OrderSend(request,result)) { //--- 显示数据失败 PrintFormat("OrderSend %s %s %.2f at %.5f error %d", request.symbol,EnumToString(request.type),volume,request.price,GetLastError()); } //--- 通知成功操作 PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order); } //-------------------------------------------------------------------------------------------------------- //开空单 if(SymbolInfoDouble(Symbol(),SYMBOL_BID)==shortprice) { ZeroMemory(request); ZeroMemory(result); request.action =TRADE_ACTION_PENDING; // 交易操作类型 request.position =0; // 关闭情况下的持仓单号 request.symbol =Symbol(); // 交易品种 request.volume =volume; // 交易量 request.type =ORDER_TYPE_SELL_STOP; // 订单类型 request.price =shortprice; // 交易价格 request.stoplimit=shortstoploss; //止损价格 request.deviation=10; // 可允许的价格偏差 request.magic =EXPERT_MAGIC; // 订单幻数 //--- 发送请求 if(!OrderSend(request,result)) { //--- 显示数据失败 PrintFormat("OrderSend %s %s %.2f at %.5f error %d", request.symbol,EnumToString(request.type),volume,request.price,GetLastError()); } //--- 通知成功操作 PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order); } } 请教EA开仓问题 开单疑问 MT5EA下不了单求助 Hung Wen Lin 2022.09.22 11:36 #1 故障代碼 ERR_TRADE_DISABLED 4752 EA交易禁止交易 Liang Liu 2022.09.23 00:53 #2 Hung Wen Lin #: 故障代碼 ERR_TRADE_DISABLED 4752 EA交易禁止交易 为什么会这样?我在mt5网站下载的mt5,账号也是在安装软件后自动获得的模拟交易账号。为什么禁止交易呢?怎么解决? Hung Wen Lin 2022.09.23 01:01 #3 EA的基本操作應該知道吧 這兩個選項不知道你有沒操作 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我写了段简单的箱体突破开多单或开空单的代码,出现以下问题:
1、ordersend()返回的总是错误——2022.09.22 16:37:02.504 箱体突破开仓 (USDJPY,M1) OrderSend USDJPY ORDER_TYPE_BUY_STOP 1.00 at 142.39000 error 4752
2、即使价格能向下突破箱体,开空单的代码却好像没有被执行,没有打印出任何信息。
#define EXPERT_MAGIC 0;
//--- input parameters
input double volume=0.0;
input double longprice=0.0;
input double shortprice=0.0;
input double longstoploss=0.0;
input double shortstoploss=0.0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(60);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
MqlTradeRequest request={};
MqlTradeResult result={};
//开多单
if(SymbolInfoDouble(Symbol(),SYMBOL_ASK)==longprice)
{
ZeroMemory(request);
ZeroMemory(result);
request.action =TRADE_ACTION_PENDING; // 交易操作类型
request.position =0; // 关闭情况下的持仓单号
request.symbol =Symbol(); // 交易品种
request.volume =volume; // 交易量
request.type =ORDER_TYPE_BUY_STOP; // 订单类型
request.price =longprice; // 交易价格
request.stoplimit=longstoploss; //止损价格
request.deviation=10; // 可允许的价格偏差
request.magic =EXPERT_MAGIC; // 订单幻数
//--- 发送请求
if(!OrderSend(request,result))
{
//--- 显示数据失败
PrintFormat("OrderSend %s %s %.2f at %.5f error %d",
request.symbol,EnumToString(request.type),volume,request.price,GetLastError());
}
//--- 通知成功操作
PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
}
//--------------------------------------------------------------------------------------------------------
//开空单
if(SymbolInfoDouble(Symbol(),SYMBOL_BID)==shortprice)
{
ZeroMemory(request);
ZeroMemory(result);
request.action =TRADE_ACTION_PENDING; // 交易操作类型
request.position =0; // 关闭情况下的持仓单号
request.symbol =Symbol(); // 交易品种
request.volume =volume; // 交易量
request.type =ORDER_TYPE_SELL_STOP; // 订单类型
request.price =shortprice; // 交易价格
request.stoplimit=shortstoploss; //止损价格
request.deviation=10; // 可允许的价格偏差
request.magic =EXPERT_MAGIC; // 订单幻数
//--- 发送请求
if(!OrderSend(request,result))
{
//--- 显示数据失败
PrintFormat("OrderSend %s %s %.2f at %.5f error %d",
request.symbol,EnumToString(request.type),volume,request.price,GetLastError());
}
//--- 通知成功操作
PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
}
}