mql5语言的特点、微妙之处以及技巧 - 页 12

 
Leo59:
谢谢你!
根据我的理解,"有效订单 "指的是买入和/或卖出头寸,以及设定的挂单(由经纪人接受)。
如果我有:多头和 空头 头寸,并设置了买入限价 卖出止损,那么OrdersTotal()将返回值=4。 对吗?

可能有一个开放的买入头寸和一个活跃的买入订单。我在上面提供了一个示例代码,但使用手指可能更容易。未结头寸的 TP如何触发?

  • 价格达到买入位置的TP。
  • 交易服务器创建一个相应的主动卖出订单。
  • 然后,终端同时有一个买入头寸和一个卖出订单。
  • 卖出订单是通过进入历史并在那里产生交易来执行的。
  • 最初的 "买入 "头寸是基于这个交易而关闭的,这个交易没有被捕捉到--它间接地存在于交易历史中。

 
利奥59
一切都早已被接受,在编写文档之前,阅读Sergei Kovalev的教程(它内置在MQL4中)可能不是没有道理的。
请阅读该主题的标题。每个人都认为这是关于MQL5。在论坛上,这里有一个对应的MQL4和MT4部分。如果你在那里提出你的问题,答案将是不同的。
 
利奥59
一切都已经被接受了很久,在写文档之前,也许值得读一下Sergei Kovalev的教程(它被内置在MQL4中)。


这就是如何构建一个分析市场和挂单的区块。

   for (int i=1; i<=OrdersTotal(); i++)       //Цикл по всем ордерам,..
     {                                        //отражённым в терминале
      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
        {                                    
         // Здесь должен выполняться ..
         // ..анализ характеристик ордеров
        }
     }                                        //Конец тела цикла

循环语句的标题中指定了初始值i=1,而循环结束的条件是表达式i<=OrdersTotal()。函数OrdersTotal()返回市场订单和挂单的总金额,即那些在终端交易标签中显示的订单。因此,循环中的迭代次数将等于交易中存在的订单数量。

请正确插入代码:在论坛中正确插入代码(我已经纠正了你插入的内容--看:你插入的只是文本,而现在是CODE,有语法高亮)。
 
Vitaly Muzichenko:

没有必要去搅和)

这是一个MT4代码,没有对订单和头寸进行划分--所有的东西都混在一起。

MQL4和MQL5中的OrdersTotal()函数是否不同?编译器似乎是一样的 ....
 
利奥59
一切都已经被接受了很久,在写文档之前,也许值得读一下Sergei Kovalev的教程(它被内置在MQL4中)。


这就是如何构建一个分析市场和挂单的区块。

   for (int i=1; i<=OrdersTotal(); i++)       //Цикл по всем ордерам,..
     {                                        //отражённым в терминале
      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
        {                                    
         // Здесь должен выполняться ..
         // ..анализ характеристик ордеров
        }
     }                                        //Конец тела цикла

循环语句的标题中指定了初始值i=1,而循环结束的条件是表达式i<=OrdersTotal()。函数OrdersTotal()返回市场订单和挂单的总金额,即那些显示在终端交易标签上的订单。因此,循环中的迭代次数将等于交易中存在的订单数量。

你不仅在谈论mql4和展示mql4的代码(而这个主题是关于mql5编程的特点和微妙之处),而且你还错误地写了循环--你必须从零开始,否则你将总是错过一个订单。
 
利奥59
在MQL4和MQL5中,OrdersTotal()的功能是否不同?编译器似乎是一样的 ....
是的,他们是。
 
利奥59
在MQL4和MQL5中,OrdersTotal()的功能是否不同?编译器似乎是一样的 ....

就交易功能而言--是有区别的。上面已经提到了MQL4。

关于交易、自动交易系统和交易策略测试的论坛

mql5语言的特殊性,技巧和窍门

Vitaly Muzichenko, 2017.02.28 19:25

...MT4,而且它没有划分订单和头寸--都是混在一起的。

而在MQL5中,OrdersTotal()将返回待定订单的数量。因此,在MQL5中,一切都在更高的层次上系统化了:肉片是分开的,苍蝇是分开的。
 
阿尔乔姆-特里什金
是的,不同。
那么区别是什么呢?
 
利奥59
有什么区别?

关于交易、自动交易系统和交易策略测试的论坛

mql5的特殊性,技巧和窍门

Vladimir Karputov, 2017.02.28 19:44

至于交易功能--是有区别的。你已经提到了MQL4。

而在MQL5中,OrdersTotal()将返回待定订单的数量。因此,在MQL5中,一切都在更高的层次上系统化了:肉片分离,苍蝇分离。

 
利奥59
有什么区别?

订单总数()

返回有效订单的数量。

intOrdersTotal()。

返回的值

int类型的值。

注意事项

活跃的挂单不应与头寸混淆,后者也显示在 "工具箱 "面板的 "交易 "选项卡中。订单是执行交易 的指令,而头寸是一个或多个交易的结果。

使用 "净值化 "头寸(ACCOUNT_MARGIN_MODE_RETAIL_NETTING和ACCOUNT_MARGIN_MODE_EXCHANGE),每个符号在任何时候都只能建立一个头寸,并且是一个或多个交易的结果。在 "工具箱 "面板的 "交易 "选项卡中也显示的头寸和活跃的挂单,不应相互混淆。

在独立表示头寸的情况下(ACCOUNT_MARGIN_MODE_RETAIL_HEDGING),每个符号可以同时开设多个头寸。


职位总数()

返回空缺职位的数量。

intPositionsTotal()。

返回的值

int类型的值。

注意事项

使用 "净额 "头寸(ACCOUNT_MARGIN_MODE_RETAIL_NETTING和ACCOUNT_MARGIN_MODE_EXCHANGE),在任何时候每个符号只能建立一个头寸,而这个头寸是由一个或多个交易产生的。在 "工具箱 "面板的 "交易 "选项卡中也显示的头寸和活跃的挂单,不应相互混淆。

在独立表示头寸的情况下(ACCOUNT_MARGIN_MODE_RETAIL_HEDGING),每个符号可以同时开设多个头寸。