文章 "MQL5 中的交易操作 - 很简单" - 页 2

 
Valmars:
您仍应在发布前检查代码。

这个问题在很早之前,也就是发布当天就已经解决了。
 
Valmars:

我同意,交易类现在已经足够稳定了。那么,为什么在提倡使用交易类的同时,示例中却包含了获取工具属性 的函数,而不是使用 CSymbolInfo 类的方法呢?这似乎不一致。

请澄清你的意思。如果你到处要求编写类,一些新手可能会觉得复杂难懂。
 
Rosh:
这个问题很久以前就解决了,早在文章发表当天就解决了。
很抱歉,我立即打开了这篇文章,但直到现在才读到。
 
Rosh:
明确含义。如果你到处要求编写类,一些新手可能会觉得复杂难懂。

其实,上面那句话并不是我劝你使用"标准库"类,我只是同意而已。当然,这是个品味问题。

在稍微复杂一点的 EA 中,有很多符号属性的引用,通过创建一个 CSymbolInfo 类的实例,我们可以简化对它们的引用和程序的感知。我的意见

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 

很抱歉,我不知道该在哪里提问,所以决定在这里提问,我认为这个话题很合适。

我怎样才能一次性关闭所有只为卖出或只为买入而打开的订单?

 
nskforward:

很抱歉,我不知道该在哪里提问,所以决定在这里提问,我认为这个话题很合适。

如何一次性平仓所有卖出或买入订单?

在 MetaTrader 5 中,每个交易品种只能有一个未结头寸。也许您的意思是关闭所有工具的所有仓位?
 

您好、
在代码中使用 BuyStop 函数交易RTS-3.13 (RIH3) 期货时,不断出现错误:
10022TRADE_RETCODE_INVALID_EXPIRATION- 订单到期日无效

在期货 RTS-3.13 的规范中规定了订单类型 -有效直至取消。在队列中 直至取消。
我尝试使用其他类型 ORDER_TIME_DAY、ORDER_TIME_SPECIFIED、ORDER_TIME_SPECIFIED_DAY -错误并未消失。


部分代码:

   int    digits = (int)SymbolInfoInteger(Ticket,SYMBOL_DIGITS);// 小数位数
   double point  = SymbolInfoDouble(Ticket,SYMBOL_POINT);       // para.
   double ask    = SymbolInfoDouble(Ticket,SYMBOL_ASK);         // 当前购买价格
   double price= 1000 * point;                                  // 非标准化开盘价
   price  = NormalizeDouble(price, digits);                     // 将开盘价正常化
   //price = NormalizeDouble(ask + 1000, digits); // ????
   Print("digits=", IntegerToString(digits), " point=", DoubleToString (point, 0), " ask=", DoubleToString (ask, 0),
         " price=", DoubleToString (price, 0));    
//--- 一切就绪,向服务器发送买入止损挂单 
   if(!m_Trade.BuyStop(1, price, Ticket))
     {
      Print("BuyStop()方法失败。返回代码="", m_Trade.ResultRetcode(),
            ".代码说明:",m_Trade.ResultRetcodeDescription());
     }
   else
     {
      Print("BuyStop()方法成功执行。返回代码="",m_Trade.ResultRetcode(),
            " (",m_Trade.ResultRetcodeDescription(),")");
     }

在 Strategy Tester 日志中的条目 :

2012.12.18 19:44:59   digits=0 point=1 ask=151830 price=1000
2012.12.18 19:44:59   failed buy stop 1.00 RTS-3.13 at 1000 [Invalid expiration]
2012.12.18 19:44:59   CTrade::OrderSend: buy stop 1.00 RTS-3.13 at 1000 [invalid expiration]
2012.12.18 19:44:59   Метод BuyStop() потерпел неудачу. Код возврата=10022. Описание кода: invalid expiration

问题出在哪里?请给我一个提示。
,如果您能回复邮件 nfo52^mail.ru, ICQ UIN: 4002787, Skype: osipov52,我将不胜感激。

谢谢。

Win7 64 razr., MT5, 演示账户 DB Otkrytie.

 
Nikos52:

您好、
在代码中使用 BuyStop 函数交易RTS-3.13 (RIH3) 期货时,不断出现错误:
10022TRADE_RETCODE_INVALID_EXPIRATION- 订单到期日无效

在期货 RTS-3.13 的规范中规定了订单类型 -有效直至取消。在队列中 直至取消。
我尝试使用其他类型 ORDER_TIME_DAY、ORDER_TIME_SPECIFIED、ORDER_TIME_SPECIFIED_DAY -错误并未消失。


部分代码:

在 Strategy Tester 日志中的条目 :

问题出在哪里?请给我一点提示。
,如果您能回复邮件 nfo52^mail.ru, ICQ UIN: 4002787, Skype: osipov52,我将不胜感激。

谢谢。

Win7 64 razr., MT5 , Demo-account DB Discovery.

在 RTS-3.13 Otkritie-demo 上遇到类似问题,尝试了所有方法(当限价订单设置为 ORDER_TIME_SPECIFIED_DAY 时,如符号配置文件中所写)!!!!。买入-止损订单在市场上完全可以手动打开。这是终端故障,您应该写信给开发人员
 
是啊,再简单不过了!他们已经意识到了很多问题,但还在使用标准库,如果没有它们,可以说,从头开始????。在 MQl4 上编写智能交易系统的最简单、最快的方法!!!!我在 mql4 上的 EA 需要 70 行,我在 mql5 上重写了它,结果是 198!!!!!!。因此,标题中的 "简单 "一词并不恰当。
Как использовать торговые классы Стандартной библиотеки при написании советника
Как использовать торговые классы Стандартной библиотеки при написании советника
  • 2010.11.10
  • Samuel
  • www.mql5.com
В статье рассказывается о том, как использовать основной функционал торговых классов Стандартной библиотеки при написании советников, в которых применяется открытие, закрытие и модификация позиции, проверка свободной маржи перед размещением торговых ордеров, размещение и удаление отложенных ордеров. Показано, как использовать торговые классы для получения свойств ордеров и сделок.
 
zlodei:
......我的 mql4 EA 需要 70 行,我把它改写成了 mql5,结果是 198!!!!!!因此,标题中的 "简单 "一词并不恰当。
前提是 EA 的想法并不复杂。我认为,想法越复杂,MQL4 和 MQL5 之间的代码行数差异就越大。因此,我不会这么绝对....。