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

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

Bonsoir Angevoyageur,

这是我的代码。这两部分在onTick部分是分开的。

谢谢你

维瓦迪


      MqlTick latest_price;      // To be used for getting recent/latest price quotes
      MqlTradeRequest mrequest;  // To be used for sending our trade requests
      MqlTradeResult mresult;    // To be used to get our trade results
      MqlRates mrate[];          // To be used to store the prices, volumes and spread of each bar
      ZeroMemory(mrequest);      // Initialization of mrequest structure
   if(ConditionDICrossMain = -1)
     {
      if(Buy_opened)
        {
         return;    // Don't open a new Buy Position
        }
      mrequest.action = TRADE_ACTION_DEAL;                                  // immediate order execution
      mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // latest ask price
      mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
      mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
      mrequest.symbol = _Symbol;                                            // currency pair
      mrequest.volume = Lot;                                                 // number of lots to trade
      mrequest.magic = EA_Magic;                                             // Order Magic Number
      mrequest.type = ORDER_TYPE_BUY;                                        // Buy Order
      mrequest.type_filling = ORDER_FILLING_FOK;                             // Order execution type
      mrequest.deviation=100;                                                // Deviation from current price
      //--- send order
        
      OrderSend(mrequest,mresult);
      // get the result code
      if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
        {
         Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!!");
        }
      else
        {
         Alert("The Buy order request could not be COMPLETE -error:",GetLastError());
         ResetLastError();           
         return;
        }
     }
 
这个页面 上,我可以看到错误是在ACCOUNT部分。我已经尝试使用另一个MT5和不同的账户,但我有相同的信息。
 
Vivaldi:

Bonsoir Angevoyageur,

这是我的代码。这两部分在onTick部分是分开的。

谢谢你

维瓦迪


  • 当你出现错误时,mresult.retcode的值是多少?
  • STP和TKP的值是多少?
  • OrderSend返回一个bool,你也必须检查 返回的值。
  • 因为我不知道你在这两部分之间有什么,最好在 "mrequest.action=TRADE_ACTION_DEAL "之前放置ZeroMemory(mrequest)。
 

我没有看到日志中的信息,它说问题来自于止损

如果数值为0,则效果很好 :)

 
Vivaldi:

我没有看到日志中的信息,它说问题来自于止损

如果数值为0,则效果很好 :)

对于你的止损水平(SL和TP),你必须考虑到你交易的符号的STOP_LEVELS值。请看这个主题
 
angevoyageur:
  • 当你遇到错误时,mresult.retcode的值是多少?
  • STP, TKP的值是多少?
  • OrderSend返回一个bool,你也必须检查返回值。
  • 因为我不知道你在这两部分之间有什么,最好在 "mrequest.action=TRADE_ACTION_DEAL "之前放置ZeroMemory(mrequest)。


Ange 我现在可以工作了:) 问题来自STP变量。

需要改变声明的类型为double (而不是int),以请教NormalizeDouble先生。

谢谢

double STP, TKP;
 

我弄错了,改变变量声明并没有解决这个错误信息。问题来自STP和TKP变量,它们都是0,使得sl = tp。

 

是否有必要增加

ZeroMemory(request);

975(x86)中的一个错误?

我最近在一个策略测试中遇到了4756的错误 ,添加上面这行就解决了。

 
k.doras:

是否有必要增加

975(x86)中的一个错误?

我最近在一个策略测试中遇到了4756的错误 ,添加上面这行就解决了。

这一行是强制性的(或相当于请求结构的初始化)。
 

尊敬的客户

发送订单在模拟账户 中有效,但在真实账户中不工作(2014.11.30 18:21:00.062 55 (اخابر,D1) BuyA: error 4756, retcode = 10006)

{
//--- prepare the request
   MqlTradeRequest request;
   MqlTradeResult  result;
   MqlTradeCheckResult check;
   ZeroMemory(request);
   ZeroMemory(result);
   ZeroMemory(check);
   request.action=5;
   request.symbol=_Symbol;
   request.volume=1000.00;
   request.price=2652.000;
   request.stoplimit=2652.000;
   request.sl=0;
   request.tp=0;
   request.type=6;
   request.type_filling=2;
   request.type_time=0;
   request.expiration=0;
   request.magic=0;
   request.comment="";

   if(!OrderSend(request,result))
     {
      Print(__FUNCTION__,": error ",GetLastError(),", retcode = ",result.retcode);
     }
//---


Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Structure of Request Check Results
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Structure of Request Check Results
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Structure of Request Check Results - Reference on algorithmic/automated trading language for MetaTrader 5