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

 

Alexey Viktorov #:

您的变体可以接受,但需要用交易代替订单。利润、佣金和掉期是通过交易而不是订单存储的。

而且要考虑到一个订单可以产生多个交易。

因此,要么为每个订单选择交易,要么创建一个数组/列表(按订单数量)结构,并通过选择交易来填充它们。
 
JRandomTrader #:

还要考虑到一个订单可能会产生多个交易。

因此,要么为每个订单预先选择交易,要么创建一个数组/列表(按订单数量)结构,并通过搜索交易来填充它们。

为什么要将生活复杂化?如果您需要计算某个时期的利润,在源代码中也是这样做的,那么只需查看这个时期的交易即可。输入的交易有或可能有佣金,输出的交易除佣金外可能还有掉期和利润。这样,在总结了一切之后,我们就得到了想要的结果。

另一个问题是,如果要将每个头寸 ID 的利润分别收集到一个数组中。

 
日安,有一个信号有一个开放订单,正在等待其移动,但管理员将其发送到存档,因为他声称交易不活跃......请告诉我如何将其从那里取出....,谢谢。
 

各位,帮帮我。早些时候,点击鼠标滚轮时,终端、MT4 和 MT5 中的光标十字线模式被激活。现在它消失了。它是如何自定义的?

附注:我从未安装任何鼠标驱动程序,一切正常....。

 
Alexander Mostovnek #:

各位,帮帮我。早些时候,点击鼠标滚轮时,终端、MT4 和 MT5 中的光标十字线模式被激活。现在它消失了。这是如何设置的?

附注:我从未安装任何鼠标驱动程序,一切正常....。

它没有消失,只是响应速度变慢了......

我甚至怀疑是鼠标坏了,按键不能按一次或两次。

 
Maxim Kuznetsov #:

它并没有消失,只是响应速度变慢了。

我甚至以为是鼠标坏了,按钮打滑了。

我也不知道。我测试过很多次,反应都很灵敏。没有延迟。一次也没出现过。


 
车轮压紧已成为死.....。:)
 

- 医生,我这里疼,这里疼,这里也疼。

- 你的手指断了)。

 
double MinOpenBuy(int a = 1)
   {
   ulong tick = 0;
   datetime time = 0;
   double result=0,lot=0,profit=0,openprice=0,
          NewPrice, OldPrice = DBL_MAX;
   for(int i=OrdersTotal(); i>=0; i--)
   {
      if (a_position.SelectByIndex(i))
      {
         if (a_position.Symbol() == a_symbol.Name() && a_position.Magic() == Magic && a_position.PositionType() == POSITION_TYPE_BUY)
         {
            NewPrice = a_position.PriceOpen();
            if ( NewPrice < OldPrice)
            {
               OldPrice = NewPrice;
               profit = NormalizeDouble(a_position.Commission()+a_position.Swap()+a_position.Profit(),2);
               lot = a_position.Volume(); 
               time = POSITION_TIME; 
               tick = a_position.Ticket(); 
            }
         }
      }
   }
   if(a==1) 
	{result = OldPrice;} else
   if(a==2) 
	{result = profit;} else
   if(a==3) 
	{result = lot;} else
   if(a==4) 
	{result=(double)time;}else
   if(a==5) 
	{result=(double)tick;}else
   {result=0;}
   return(result);
  }
日安。
祝大家节日快乐。
我需要专业人士的帮助。
我在 MQL4 中编写了这段代码,用于搜索开盘价最低的订单并获取其数据
现在我试图将所有内容转移到 MQL5 中,但由于某些原因,它不起作用(
什么错误?
 
Maksim Burov #:
for(int i=OrdersTotal();i>=0; i--)

我没有深入研究代码的本质,但立即引起我注意的是要搜索的订单数量设置不正确。应该是这样的:

for(int i=OrdersTotal() - 1; i>=0; i--)

另外,在循环中,您是在循环订单,但您是在寻找仓位属性。这也是不正确的。我认为您很可能需要循环搜索仓位:

for(int i=PositionsTotal() - 1; i>=0; i--)

敬上,弗拉基米尔。