请教简单的ordersend()发送问题

 

我写了段简单的箱体突破开多单或开空单的代码,出现以下问题:

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);
    }
  }

 

故障代碼

ERR_TRADE_DISABLED

4752

EA交易禁止交易

 
Hung Wen Lin #:

故障代碼

ERR_TRADE_DISABLED

4752

EA交易禁止交易

为什么会这样?我在mt5网站下载的mt5,账号也是在安装软件后自动获得的模拟交易账号。为什么禁止交易呢?怎么解决?
 

EA的基本操作應該知道吧

這兩個選項不知道你有沒操作


原因: