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

 
pivomoe:
我的理解是正确的,CPositionInfo类 的Volume方法返回Select()方法最后被调用的时间点所对应的体积?就是说,你可以找出这个符号一个月前的成交量?
你完全搞错了。CPositionInfo类的Volume方法返回一个位置的体积。之前通过PositionSelect选择的位置。
 

你已经解释了如何准备CPositionInfo。但我仍然不明白两件事。

1) 这个配方是如何从CPositionInfo 类的帮助中得到的?

2)如果你不能正常使用一个以上的对象,为什么我们需要这个类本身,因为在每次访问位置属性之前,我们需要使用选择方法来配置位置,否则我们会突然对其他地方的另一个CPositionInfo 对象使用选择方法。

 
pivomoe:

你已经解释了如何准备CPositionInfo。但我仍然不明白两件事。

1) 这个配方是如何从CPositionInfo 类的帮助中得到的?

2)如果你不能正常使用多个对象,为什么我们需要类本身,因为在每次访问位置属性之前,我们需要使用选择方法来配置它的位置,否则我们会突然在其他地方对另一个CPositionInfo 对象使用选择方法。

1).所有这些都在帮助中。只要勤奋和注意,再加上一些自我写作,这将使你有所了解。
2).再次强调:CPositionInfo类不是一个存储所有位置数据的匣子;它只是一个访问位置属性的方便工具。

而情况一直是这样的:首先,位置被选中,然后我们得到它的属性。之后,循环往复:位置被高亮显示,然后才检索到位置属性。
 

我不明白我在使用帮助方面有什么错误。

1)我需要程序中的位置量。

2)通过搜索,我找到了CPositionInfo 类中的Volume方法。

3)它指的是在调用Volume之前使用Select方法。

4) 在 "选择 "方法的描述中没有提及。为了安全起见,我研究了CPositionInfo 类的描述。

5) 我写代码。我得到了一个与参考文献不相符的结果。


错误在哪里?

我又一次知道了在访问属性之前选择一个位置和一个订单。但这种知识和帮助中的CPositionInfo 知识并没有交集。

 
pivomoe:

错在哪里?

如果你学会写得更详细,你就能看到你的错误所在。

试着像这样写。

CPositionInfo PositionInfoKotiryemii,PositionInfoVedygii;
double Volume1=0; Volume2=0;
string Symbol1=""; Symbol2="";

if ( PositionInfoVedygii.Select("SBRF-12.17") ) // Select 1
{ Volume1=PositionInfoVedygii.Volume(); Symbol1=PositionInfoVedygii.Symbol(); } // Use 1
else Print("Не удалось выбрать позицию по символ SBRF-12.17 ");

if ( PositionInfoKotiryemii.Select("SBRF-3.18") ) // Select 2
{ Volume2=PositionInfoKotiryemii.Volume(); Symbol2=PositionInfoKotiryemii.Symbol(); } // Use 2
els Print("Не удалось выбрать позицию по символ SBRF-3.18 ");
 
Print(Symbol2," Объем ",Volume2," ",Symbol1," Объем ",Volime1);
 
pivomoe:

我不明白我在使用帮助方面有什么错误。

1)我需要程序中的位置量。

2)通过搜索,我找到了CPositionInfo 类中的Volume方法。

3)它指的是在调用Volume之前使用Select方法。

4) 在 "选择 "方法的描述中没有提及。为了安全起见,我研究了CPositionInfo 类的描述。

5) 我写代码。我得到了一个与参考文献不相符的结果。


错在哪里呢?

再一次关于位置选择,顺序,在访问属性之前我知道。但这些知识和帮助中的CPositionInfo 知识并不重叠。


它是一个代码块,可以绕过所有的头寸,并打印出类似于 "交易 "标签中终端的信息。

   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
        {
         string str_position_type=(m_position.PositionType()==POSITION_TYPE_BUY)?"buy":"sell";
         Print(m_position.Symbol()+" | "+
               IntegerToString(m_position.Ticket())+" | "+
               TimeToString(m_position.Time(),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+" | "+
               str_position_type+" | "+
               DoubleToString(m_position.Volume(),2)+" | "+
               DoubleToString(m_position.PriceOpen(),2));

}

工作算法:首先我们选择位置(从超市货架上拿一罐果酱),然后我们访问所选位置的属性并打印这些属性(阅读果酱罐上的标签)。

 
pivomoe:

事实证明,CPositionInfo类是没有意义的,因为通常情况下,你只能与这个类的一个对象一起工作。

是的,这是个包装袋。
 

Ivan Ivanov ,Vladimir Karputov, fxsaber 感谢你们的帮助。

 

我从专家顾问的指标中检索数据。首先,我计算手柄,然后从指标缓冲区复制最后几个实际值。

问题。

1.这些指标中的历史深度是什么?

2.有没有一种方法可以限制计算的深度?
在这种情况下,我们只需要几个最后的数值来确定拐点或向上/向下的方向。
我的专家顾问是多货币的,有几十个指标,所以我不需要做不必要的计算。

 
User_mt5:

我从专家顾问的指标中检索数据。首先,我计算手柄,然后从指标缓冲区复制最后几个实际值。

问题。

1.这些指标中的历史有多深?

2.是否有办法限制计算的深度?
在这种情况下,我们只需要几个最后的数值来确定拐点或向上/向下的方向。
专家顾问是多货币的,有几十个指标,所以有必要不做不必要的计算。


我希望你在OnInit()中一次性创建指标句柄?

计算深度取决于指标。罕见的指标强行限制了深度--作为一项规则,所有的指标都计算整个历史。因此,也许以下的变体是有用的:在指标中引入负责深度的变量,然后在专家顾问中通过iCustom传递这个参数。