初学者的问题 MQL5 MT5 MetaTrader 5 - 页 940

 
Artyom Trishkin:

这在这里是行不通的--他不使用智能手机和其他新的小工具--有一个斯莫尔尼的手机......

这里至少有一个志同道合的人。我也无视所有这些小工具和社交媒体。除了没有来自克里姆林宫的电话......。

 

我已经厌倦了重新报价。

//+------------------------------------------------------------------+
void OpenSell()
  {

   m_symbol.Name("EURUSD");
   RefreshRates();
   if(m_trade.Sell(InpLots,"EURUSD",m_symbol.Bid(),0.0,0.0))
     {
      if(m_trade.ResultDeal()==0)
        {
         Print("#1 Sell -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription());
         PrintResultTrade(m_trade,m_symbol);
        }
      else
        {
         Print("#2 Sell -> true. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription());
         PrintResultTrade(m_trade,m_symbol);
        }

     }

//---
  }
//+------------------------------------------------------------------+

这个代码有什么问题?我甚至没有得到订单执行检查的结果。

我只是得到一个带有重新报价的表格,仅此而已。


 
ilvic:

我已经厌倦了重新报价。

这个代码有什么问题?我甚至没有得到订单执行检查的结果。

我只是得到一个带有重新报价的表格,仅此而已。


你应该把PrintResultTrade 的结果粘贴成代码不是以图片的形式,而是以代码的形式。

 

这就是专家的写作。请注意,他并没有写出测试的结果。

2018.11.02 15:20:36.769 Above (EURUSD,M1)       CTrade::OrderSend: instant sell 1.00 EURUSD at 1.14299 [requote (1.14307/1.14317)]

而这是日志上所说的。

2018.11.02 11:18:49.826 Network '13107230': scanning network for access points
2018.11.02 11:19:17.821 Network '13107230': scanning network finished
2018.11.02 15:20:35.846 Trades  '13107230': instant sell 1.00 EURUSD at 1.14299 (deviation: 100)
2018.11.02 15:20:36.769 Trades  '13107230': requote 1.14307 / 1.14317 (instant sell 1.00 EURUSD at 1.14299 (deviation: 100))

服务器methaquotes演示

 
ilvic:

这就是专家的写作。请注意,他并没有写出测试的结果。

而这是日志上所说的。

服务器methaqvotes演示

PrintResultTrade结果作为代码插入。不是作为一张图片,而是作为一个代码。


或者你根本就没有进入PrintResultTrade,而是先被扔出去了?

 

是吗?如果没有,那就告诉我你的意思。

//+------------------------------------------------------------------+
//| Print CTrade result                                              |
//+------------------------------------------------------------------+
void PrintResultTrade(CTrade &trade,CSymbolInfo &symbol)
  {
   Print("File: ",__FILE__,", symbol: ",m_symbol.Name());
   Print("Code of request result: "+IntegerToString(trade.ResultRetcode()));
   Print("code of request result as a string: "+trade.ResultRetcodeDescription());
   Print("Deal ticket: "+IntegerToString(trade.ResultDeal()));
   Print("Order ticket: "+IntegerToString(trade.ResultOrder()));
   Print("Volume of deal or order: "+DoubleToString(trade.ResultVolume(),2));
   Print("Price, confirmed by broker: "+DoubleToString(trade.ResultPrice(),symbol.Digits()));
   Print("Current bid price: "+DoubleToString(symbol.Bid(),symbol.Digits())+" (the requote): "+DoubleToString(trade.ResultBid(),symbol.Digits()));
   Print("Current ask price: "+DoubleToString(symbol.Ask(),symbol.Digits())+" (the requote): "+DoubleToString(trade.ResultAsk(),symbol.Digits()));
   Print("Broker comment: "+trade.ResultComment());
  }
//+------------------------------------------------------------------+
 
ilvic:

这就是专家的写作。请注意,他并没有写出测试的结果。

而这是日志上所说的。

服务器methaquotes演示。

你为什么要削减代码?抛物线SAR EA 代码中的开口函数示例

//+------------------------------------------------------------------+
//| Open Sell position                                               |
//+------------------------------------------------------------------+
void OpenSell(double sl,double tp)
  {
   sl=m_symbol.NormalizePrice(sl);
   tp=m_symbol.NormalizePrice(tp);

   double short_lot=InpLots;
//--- check volume before OrderSend to avoid "not enough money" error (CTrade)
   double free_margin_check= m_account.FreeMarginCheck(m_symbol.Name(),ORDER_TYPE_SELL,short_lot,m_symbol.Bid());
   double margin_check     = m_account.MarginCheck(m_symbol.Name(),ORDER_TYPE_SELL,short_lot,m_symbol.Bid());
   if(free_margin_check>margin_check)
     {
      if(m_trade.Sell(short_lot,m_symbol.Name(),m_symbol.Bid(),sl,tp))
        {
         if(m_trade.ResultDeal()==0)
           {
            Print("#1 Sell -> false. Result Retcode: ",m_trade.ResultRetcode(),
                  ", description of result: ",m_trade.ResultRetcodeDescription());
            PrintResultTrade(m_trade,m_symbol);
           }
         else
           {
            Print("#2 Sell -> true. Result Retcode: ",m_trade.ResultRetcode(),
                  ", description of result: ",m_trade.ResultRetcodeDescription());
            PrintResultTrade(m_trade,m_symbol);
           }
        }
      else
        {
         Print("#3 Sell -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription());
         PrintResultTrade(m_trade,m_symbol);
        }
     }
   else
     {
      Print(__FUNCTION__,", ERROR: method CAccountInfo::FreeMarginCheck returned the value ",DoubleToString(free_margin_check,2));
      return;
     }
//---
  }
 
ilvic:

是吗?如果没有,那就告诉我你的意思。

你扔掉了代码中的检查步骤#3。

 
Vladimir Karputov:

插入PrintResultTrade的结果作为代码不是作为一张图片,而是作为一个代码。


或者你没能进入PrintResultTrade而被提前抛出?

确切地说,如果订单被执行,你的打印结果将是这样的

2018.11.02 10:09:12.648 Above (EURUSD,M1)       #2  Buy -> true. Result Retcode: 10009, description of result: done at 1.14387

如果有重新报价,专家顾问会保持沉默。

而我却留下了一个未完成的订单

 
ilvic:

确切地说,如果订单被执行,打印结果将是这样的

如果是重新报价,专家顾问将像鱼一样沉默。

而我却留下了一个未完成的订单。

在我的帖子 中,我举了一个函数的例子我没有削减它。抛物线SAR EA中就有一个例子