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

 
lil_lil:

谢谢你。

现在怎么了?

我建议从HistorySelectByPosition 开始,而你却把它塞进了ifs的深处......。

在一个净值账户中,每个符号只能有一个头寸。获得头寸ID,获得参与形成此头寸的交易列表,并按交易方向 和订单类型进行统计。

 
Alexey Kozitsyn:

Artyom,我重复一下问题,请回答。


没有看到这个问题 :)

说实话--我不记得了,但我认为它在MT5中是有效的--不是吗?

但在测试器中,我把待处理的订单...而我是用鼠标工作的。但我可能弄混了,我在真实的图表上用鼠标工作,在测试器中使用按钮......

我不会猜测--大约半年前我把我的图书馆全部拆成了小螺丝,我不会再快速检查了。我已经把它的重建工作推迟到了秋天。因此,在测试器中检查事件模型OnChartEvent() 的工作会更快。但我还没有时间去做 - 抱歉 :)

 
Artyom Trishkin:

没有看到这个问题 :)

说实话--我不记得了,但我认为它在MT5中是有效的--不是吗?

但我一直把待定的订单放在测试器中...而我是用鼠标工作的。但很可能是我搞混了,我在真实的图表上用鼠标工作,而在测试器中使用按钮......。

我不会猜测--大约半年前我把我的图书馆全部拆成了小螺丝,我不会再快速检查了。我已经把它的重建工作推迟到了秋天。因此,在测试器中检查事件模型OnChartEvent()的工作会更快。但我还没有时间去做 - 抱歉 :)

这里有所有的测试代码。

switch( id )
{
default:
   Print( __FUNCTION__,": id = "+EnumToString( (ENUM_CHART_EVENT)id ) );
}

不幸的是,在测试器中没有反应。在OnChartEvent()函数 中。从专家顾问处调用。

 
Alexey Kozitsyn:

整个测试代码都在那里。

不幸的是,在测试器中没有反应。在OnChartEvent()函数 中。

而CHART_EVENT_MOUSE_MOVE=true被设置了?
 
Alexey Viktorov:

我建议从HistorySelectByPosition 开始,但你把它塞进了ifs的深处

在一个净值账户中,每个符号只能有一个头寸。获取头寸ID,获得形成此头寸的交易列表,并按交易方向 和订单类型进行统计。

我这样做,是因为我想做一个通用的计数功能,用于净值化和对冲,还是不可能?

 
Artyom Trishkin:
CHART_EVENT_MOUSE_MOVE=true是否设置?

没有,但这不太可能解决问题,因为ctrl、shift和其他键都被按下了......。没有任何反应。

 
lil_lil:

陷入了,因为我想做一个通用的计数功能,用于净值化和对冲,还是不可能?

这是有可能的。但方法是不同的,需要先进行适当的规划,而不是把所有东西都倾倒在一行代码里......

 
Alexey Kozitsyn:

没有,但这不太可能解决问题,因为ctrl、shift和其他键都被按下了......。没有任何反应。

总之,我现在真的没有时间做实验--我有自己的事情等着做。

也许我真的把它忘了。但我已经在测试器中设置了时间限制。这是很有可能的--只是同样的按钮。我还知道,我是用鼠标设置的。但也许在现场的图表上也是如此......

 
Artyom Trishkin:

可能是这样。但方法是不同的,需要首先进行适当的规划,而不是把所有东西都倾倒在一行代码中......

所以我暂时先把它分开来做。

我错过了什么?

int GetNum(const string aSymbol)
  {
   int    count=0;
   if(PositionSelect(aSymbol))
     {
      long pos_id=long(PositionGetInteger(POSITION_IDENTIFIER));

      if(pos_id>0)
        {
         if(HistorySelectByPosition(ulong(pos_id)))
           {
            int deals=HistoryDealsTotal();

            for(int i=0; i<deals; i++)
              {
               ulong deal_ticket=HistoryDealGetTicket(i);
               ulong order_ticket=ulong(HistoryDealGetInteger(deal_ticket,DEAL_ORDER));

               if(order_ticket>0)
                 {
                  long deal_entry=long(HistoryDealGetInteger(deal_ticket,DEAL_ENTRY));

                  if(deal_entry==DEAL_ENTRY_IN)
                    {
                     if(m_position.PositionType()==POSITION_TYPE_SELL)
                       {
                        count++;
                       }
                    }
                 }
              }
            if( count > 0 ) return(count);
           }
         else
           {
            Print("Не возможно получить историю позиции по символу ",aSymbol);
           }
        }
      else
        {
         Print("Не возможно определить идентификатор позиции по символу ",aSymbol);
        }
     }
   return( 0 );
  }
////////////
 
首先它计数正确,然后,当5个限制性卖出被激活时,它在评论中写了6个。第六个是怎么来的?
原因: