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

 
ulong  HistoryDealGetTicket(
   int  index      // номер сделки
   );

什么是交易号码?

我如何选择最后一笔交易?指数0?

我有一个账户,有一个未结头寸 和一个交易历史。我想选择最后一笔交易。

#include <Trade\DealInfo.mqh>  

CDealInfo deal;  

   for(int n=20;n>=0;n--)
     {
      deal.SelectByIndex(n);
      Print("Тикет сделки=",deal.Ticket()," n=",n);
     }


所有刻度线为0...
 
tor4en:
ulong  HistoryDealGetTicket(
   int  index      // номер сделки
   );

什么是交易号码?

参见HistoryDealGetTicket()函数 的描述。还有一个关于如何处理交易清单的例子。
 
Yedelkin:
HistoryDealGetTicket()函数的 描述。还有一个关于如何处理交易清单的例子。
目前还不清楚如何使用标准库中SelectByIndex() 函数。
 
tor4en 目前还不清楚如何处理标准库中SelectByIndex() 函数。
我试图对你的问题 "什么是交易号码?"提出一个答案。我们是否可以认为你已经处理了这个问题?
 
Yedelkin:
我已尝试对你的问题 "什么是交易号码?我们是否可以认为你已经处理了这个问题?
你可以,谢谢你。你能告诉我,是否有可能在一个位置上选择最后一笔交易,而不通过交易和比较时间或其门票?
 
tor4en: 你知道是否可以不通过交易和比较时间或点位来选择头寸的最后一笔交易?

1.不幸的是,我尽量不使用标准库,所以我无法就如何使用SelectByIndex()方法给出适当的建议。我只能注意到,CDealInfo类本身被定位为处理交易属性的类,也就是说,获取交易列表的问题似乎被排除了。

2.如你所知,SelectByIndex()方法只是使用HistoryDealGetTicket()函数。从这个功能 的描述中可以看出,在进入交易之前,有必要获得所有交易的列表 。特别是。

//--- запросим историр ю сделок в указанном интервале
   HistorySelect(from_date,to_date);
//--- общее количество в списке сделок
   int deals=HistoryDealsTotal();
//--- теперь обработаем каждую сделку
   for(int i=0;i<deals;i++)
     {
      deal_ticket=HistoryDealGetTicket(i);
      ...
     }

大约一年前,我在论坛上问,是否有可能考虑列表中最后一笔交易的索引总是HistoryDealsTotal()-1,但我没有收到答案(或者没有注意到,这不太可能)使用科学证明的方法,我没有发现对这一论题的反驳。因此,从逻辑上讲,每一笔新的交易,在基础终端收到的信息,应该只是在交易列表中增加一个,而且,交易列表中的索引将分别以升序分配给每一笔新的交易。现实中是怎样的呢--不知道。

3.我还建议阅读MetaTrader 5中的订单、头寸和交易 这篇文章,以及(我自己没有读过)--在编写专家顾问时如何使用标准库的交易类

这就是全部 :)

 
HistoryDealsTotal()-1
这似乎是一个好主意。如果我们要按具体位置寻找交易,最好使用HistorySelectByPosition(position_ID)。谢谢你。
Документация по MQL5: Торговые функции / HistorySelectByPosition
Документация по MQL5: Торговые функции / HistorySelectByPosition
  • www.mql5.com
Торговые функции / HistorySelectByPosition - Документация по MQL5
 
tor4en: 如果我们要寻找特定位置的交易,最好使用HistorySelectByPosition()。
完全正确 :)
 
你好!!

专家 请帮助, 我建立了两个EA,可以说是协同效应,比较简单的EA似乎可以连接起来,但是这个EA却不能编译,尽管我做的一切都和前一个一样正确。以下是它给出的内容

'监督者' -函数 只能在全局范围内声明 20_200_pips_MQL5_v1.mq5 360 18

'Perceptron' - 函数只能在全局范围内声明 20_200_pips_MQL5_v1.mq5 418 8

'basicTradingSystem' - 函数只能在全局范围内声明 20_200_pips_MQL5_v1.mq5 434 6

该函数只能在全局范围内声明

我真的很困惑,全局范围在哪里?

 
chipo: 我把两个EA连接起来,以获得某种协同效应,较简单的EA似乎都能连接起来,但这个EA却不能编译,尽管我已经像前一个EA那样做了所有正确的事情。这是它给出的内容

'监督者' - 函数只能在全局范围内声明 20_200_pips_MQL5_v1.mq5 360 18

'Perceptron' - 函数只能在全局范围内声明 20_200_pips_MQL5_v1.mq5 418 8

'basicTradingSystem' - 函数只能在全局范围内声明 20_200_pips_MQL5_v1.mq5 434 6

该函数只能在全局范围内声明

我真的很困惑,全局范围在哪里?

例如,当一个函数被声明在另一个函数里面时,就会出现这样的信息。看看代码中是否有这样的内容。

func_1()
   {
    void  func_2()...
   }