将开放的职位分成若干组 - 页 12

 
Sergey Voytsekhovsky:
我为每一个 "止盈 "打印了一个负号,为每一个入市 打印了一个正号,这似乎已经奏效。我对口语俚语感到抱歉,但我完全是自学成才,没有人可以就这个问题进行交流。


而且我是自学成才。总之,我在切割,切割,切割代码......。如果不是因为与你的对话,我发现这些问题的时间会晚一点......

我应该在代码中添加一个在阅读属性之前的交易选择。

    HistoryDealSelect(trans.deal);

或者检查选择是否成功。

    if(!HistoryDealSelect(trans.deal))
      Print(GetLastError());
 
Alexey Viktorov:

而且我是自学成才。总之,我在切割,切割,切割代码......。如果不是因为与你的对话,我发现这些问题的时间会晚一点......

谈话总是好的,以后你会发现谈话是否有用。因此,最爱说话的人平均增加minPolus,但减少maxPolus。这话说得有点拗口。

Надо добавить в код выбор сделки перед чтением свойств.

или с проверкой успешности выбора.

你是在胡思乱想,还是你建议我这样做?

 

随着功能

bool  HistoryDealSelect( 
   ulong  ticket     // тикет сделки 
   );

我读过一篇关于它的文章,但我还不知道如何使用它。

Функция HistoryDealSelect() очищает в mql5-программе список сделок, доступных для обращений, и копирует в него одну единственную сделку, если выполнение HistoryDealSelect() завершилось успешно.
 

下一个任务--我邀请有识之士进行讨论。

如何让一个交易票据 在TR上关闭了一个头寸)返回被这个交易关闭的仓单

2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   take profit triggered #6571  buy 0.01 EURUSD 1.16343 tp: 1.16389 [#6572  sell 0.01 EURUSD at 1.16389]
2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   deal #6572  sell 0.01 EURUSD at 1.16389 done (based on order #6572)
2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   deal performed [#6572  sell 0.01 EURUSD at 1.16389]
2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   order performed sell 0.01 at 1.16389 [#6572  sell 0.01 EURUSD at 1.16389]
2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   Закрыта позиция ---Тикет сделки--- 6572 ---Позицию в структуре ArrayDealOut пометить на удаление ------------

问题是,我有一个结构,其中实际的位置必须被存储。当他们离开游戏时,需要对他们进行清理。

???

 
Sergey Voytsekhovsky:

至少,谈论一些事情总是有用的,以后你会发现谈话是否有用。因此,最爱说话的人通过平均数增加了minPolus,但减少了maxPolus。这话说得有点拗口。

你是在胡思乱想,还是你建议我这样做?

不仅仅是推荐,我已经在我的代码中返回了最近删除的那一行。

 
Sergey Voytsekhovsky:

随着功能

你要小心,我在那里看到了一个功能,我还不知道如何使用它。

这取决于你在哪里进行选择。在OnTradeTransaction 中不存在这种危险。一般来说,我们应该养成在访问一个订单、交易或头寸的属性之前选择它的习惯。

不要忘了,如果在选择之后,执行切换到某个函数,并在其中进行另一个选择,那么在返回时,列表将包含最后一个选择的选项。

 
Sergey Voytsekhovsky:

下一个任务--我邀请有识之士进行讨论。

如何让一个交易票据 在TR上关闭了一个头寸)返回被这个交易关闭的仓单

问题是,我有一个结构,其中实际的位置必须被存储。当他们离开游戏时,需要对他们进行清理。

???

嗯,这很简单...

/*********************TradeTransaction function**********************/
void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
 {
  if(trans.type == TRADE_TRANSACTION_DEAL_ADD && trans.symbol == _Symbol)
   {
    if(!HistoryDealSelect(trans.deal))
      Print(GetLastError());
    /******************** Если открылась позиция********************/
    if(HistoryDealGetInteger(trans.deal, DEAL_ENTRY) == DEAL_ENTRY_IN)
      Print("********** открытие сделка ", trans.deal, " позиция ", trans.position);
    /******************** Если закрылась позиция********************/
    if(HistoryDealGetInteger(trans.deal, DEAL_ENTRY) == DEAL_ENTRY_OUT)
     {
      if(HistoryDealGetInteger(trans.deal, DEAL_REASON) == DEAL_REASON_TP)
       {
        Print("********** закрытие по тейку сделка ", trans.deal, " позиция ", trans.position);
       }
      if(HistoryDealGetInteger(trans.deal, DEAL_REASON) == DEAL_REASON_SL)
       {
        Print("********** закрытие по стопу сделка ", trans.deal, " позиция ", trans.position);
       }
     }
   }
 }/*******************************************************************/
CN      0       19:20:27.920    !00 (GBPUSD.m,H1)       2020.02.03 12:01:20   ********** закрытие по стопу сделка 27 позиция 26
CG      0       19:20:27.920    !00 (GBPUSD.m,H1)       2020.02.03 12:01:20   ********** открытие сделка 28 позиция 28
HJ      0       19:20:28.023    Trade   2020.02.03 12:01:40   stop loss triggered #28  buy 0.1 GBPUSD.m 1.30698 sl: 1.30598 tp: 1.30798 [#29  sell 0.1 GBPUSD.m at 1.30598]
GE      0       19:20:28.023    Trades  2020.02.03 12:01:40   deal #29  sell 0.1 GBPUSD.m at 1.30598 done (based on order #29)
 JF      0       19:20:28.023    Trade   2020.02.03 12:01:40   deal performed [#29  sell 0.1 GBPUSD.m at 1.30598]
CD      0       19:20:28.023    Trade   2020.02.03 12:01:40   order performed sell 0.1 at 1.30598 [#29  sell 0.1 GBPUSD.m at 1.30598]
GI      0       19:20:28.023    Trade   2020.02.03 12:01:40   market buy 0.1 GBPUSD.m sl: 1.30512 tp: 1.30712 (1.30598 / 1.30612 / 1.30598)
FQ      0       19:20:28.023    Trades  2020.02.03 12:01:40   deal #30  buy 0.1 GBPUSD.m at 1.30612 done (based on order #30)
 QQ      0       19:20:28.023    Trade   2020.02.03 12:01:40   deal performed [#30  buy 0.1 GBPUSD.m at 1.30612]
ON      0       19:20:28.023    Trade   2020.02.03 12:01:40   order performed buy 0.1 at 1.30612 [#30  buy 0.1 GBPUSD.m at 1.30612]
KR      0       19:20:28.025    !00 (GBPUSD.m,H1)       2020.02.03 12:01:40   CTrade::OrderSend: market buy 0.10 GBPUSD.m sl: 1.30512 tp: 1.30712 [done at 1.30612]
RM      0       19:20:28.025    !00 (GBPUSD.m,H1)       2020.02.03 12:01:40   ********** закрытие по стопу сделка 29 позиция 28
FP      0       19:20:28.025    !00 (GBPUSD.m,H1)       2020.02.03 12:01:40   ********** открытие сделка 30 позиция 30
NK      0       19:20:28.295    Trade   2020.02.03 12:02:39   take profit triggered #30  buy 0.1 GBPUSD.m 1.30612 sl: 1.30512 tp: 1.30712 [#31  sell 0.1 GBPUSD.m at 1.30712]
IS      0       19:20:28.295    Trades  2020.02.03 12:02:39   deal #31  sell 0.1 GBPUSD.m at 1.30712 done (based on order #31)
 NE      0       19:20:28.295    Trade   2020.02.03 12:02:39   deal performed [#31  sell 0.1 GBPUSD.m at 1.30712]
KI      0       19:20:28.295    Trade   2020.02.03 12:02:39   order performed sell 0.1 at 1.30712 [#31  sell 0.1 GBPUSD.m at 1.30712]
IH      0       19:20:28.295    Trade   2020.02.03 12:02:39   market buy 0.1 GBPUSD.m sl: 1.30626 tp: 1.30826 (1.30712 / 1.30726 / 1.30712)
EI      0       19:20:28.295    Trades  2020.02.03 12:02:39   deal #32  buy 0.1 GBPUSD.m at 1.30726 done (based on order #32)
 LR      0       19:20:28.295    Trade   2020.02.03 12:02:39   deal performed [#32  buy 0.1 GBPUSD.m at 1.30726]
RL      0       19:20:28.295    Trade   2020.02.03 12:02:39   order performed buy 0.1 at 1.30726 [#32  buy 0.1 GBPUSD.m at 1.30726]
HR      0       19:20:28.297    !00 (GBPUSD.m,H1)       2020.02.03 12:02:39   CTrade::OrderSend: market buy 0.10 GBPUSD.m sl: 1.30626 tp: 1.30826 [done at 1.30726]
HS      0       19:20:32.663    !00 (GBPUSD.m,H1)       2020.02.03 12:02:39   ********** закрытие по тейку сделка 31 позиция 30
KP      0       19:20:32.663    !00 (GBPUSD.m,H1)       2020.02.03 12:02:39   ********** открытие сделка 32 позиция 32
 
Alexey Viktorov:

这取决于你在哪里进行选择。在OnTradeTransaction 中不存在这种风险。事实上,我们应该养成在访问订单、交易或头寸的属性之前选择它的习惯。

不要忘了,如果在选择之后,执行的是某个函数,并且它做出了另一个选择,那么在返回的时候,列表中就会出现最后选择的那一个。

伙计,如何理解这一切对我来说是无法抽象的。

我刚刚解决了上述问题,搜索已知交易平仓的票据--我立即从打印中要求,所以我马上回到了我开始的地方--不是所有的TakeProfits都能进入打印。

 
Alexey Viktorov:

就这么简单...。

我的上帝,你一直拥有 "我的宝贝",而你却如此谦虚地保持沉默?

非常感谢你。

我学到了很多东西。 我可以直接转贴,就是这样。

 
Sergey Voytsekhovsky:

哦,我的上帝,你一直拥有 "我的宝贝",而你却如此谦虚地保持沉默?

非常感谢你。

我学到了很多东西,但我本来只是转贴它,就这样了。

什么也没发生。我只是写了它来检查,并通过调试器对历史数据进行运行。学习使用调试器。 这是一个非常有用的技能。

我开始在Excell中进行所谓的VBA(visual VBA for applications)编程,并在那里认识了调试。在那之后,我很难习惯用打印机来检查收到的数值......。当他们在mql5中引入调试功能时,我像孩子一样高兴,因为我的痛苦已经结束了。