任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 713

 
7Konstantin7:

谢谢,我做不到,只是想也许有人能在该功能中涂鸦几行,或者能丢一个猫头鹰,最后的版本。我不认为这很难,但我不认为有人会帮忙。

网站上有4个学分mql5可以给),如果有可能在参与者之间转移。

1.在循环中找到你能找到的最早的开放位置 并返回其票据?

 
artmedia70:

1.你能在循环中找到最早的开仓,并将其返回到票据中吗?

我无法想象它在代码中会是怎样的),但不知为何,我能够在EA中加入删除挂单的 功能,我不擅长代码,只是有一点。
 
7Konstantin7:
我无法想象它在代码中会是怎样的),但通过一些奇迹,我能够在EA中添加删除挂单,我不擅长代码,只有一点。

就拿它来说吧,看看它是如何在一个循环中关闭的。

1:

int i, total = OrdersTotal(); bool rez;

for(i = total-1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS) && другие нужные условия)
{
if(OrderType() < 2)
rez = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 40);
if(OrderType() > 1)
rez = OrderDelete(OrderTicket());
}
}

2:

//Всё тоже самое только поменяй направление цикла
for(i = 0; i < total; i++)
然后你就会明白订单是按什么顺序关闭的。我不能肯定,因为我没有检查过它。我不需要它。但这是另一个问题,这里已经讨论过不止一次了,我不想再重复一遍。
 
AlexeyVik:

就拿它来说吧,看看它是如何在一个循环中关闭的。

1:

2:

那么你就会知道订单是以何种顺序关闭的。我不能说,因为我没有检查过。我不需要它。但这是另一个话题,这里已经讨论过很多次了,我不想全部重复。
这个问题已经在私下里得到了解决...
 
artmedia70:
我们已经在私下里解决了...
好吧,我不读你的私人...我不知道发生了什么事。
 
AlexeyVik:
嗯,我不看你的私人信息...而我不知道发生了什么事。
是的,他不读...我的拖鞋怎么了?;)
 
artmedia70:
是的,他不读...我的拖鞋去哪了?;)

请记住,伊万-瓦西里耶维奇列出了他采取和不采取什帕克的内容......所以我是你的拖鞋。


再见。我去睡觉了。

 
AlexeyVik:

请记住,伊万-瓦西里耶维奇列出了他采取和不采取什帕克的内容......所以我是你的拖鞋。


再见。我去睡觉了。

我去问问其他人关于拖鞋的事......。晚安...
 
AlexeyVik:

就拿它来说吧,看看它是如何在一个循环中关闭的。

1:

2:

然后你就会知道订单是按什么顺序关闭的。不能说,因为我没有检查过。我没有检查它,因为我不需要它。但有一个原因是要像第一种变体那样安排循环。 但这是另一个话题,这里已经讨论过很多次了,我不想再重复。

谢谢,已经解决了这个问题。

artmedia70:

我以为他们会把我送到约翰那里)谢谢你的帮助。

 

大家好!我已经在第711页上提出了一个类似的问题,不幸的是没有人回应,也许现在有人...

我在关闭五位数 订单的柜台订单时面临一个问题。问题是,我需要关闭,比如说,当总利润达到时,买入的20个订单和卖出的33个订单。我想用函数OrderCloseBy()关闭20个买单和20个卖单,用函数OrderClose()关闭其余13个卖单。

如果我们有一个固定的差价在4个字符,我们将不会有任何关闭差价的问题,我们可以在使用函数OrderCloseBy()时保存差价。如果我们有一个5位数的点差,点差是浮动的,这就是为什么,我认为,当达到总利润时,订单没有被关闭,日志上说OrderCloseBy()。同时,如果我们在测试器中运行它,一切都正常关闭。

一个方向的订单,当达到总利润时,会顺利关闭。

谁遇到过这样的问题,解决这个问题的方案有哪些?

我将给你关闭订单的功能。

另外,OrderCloseBy()函数是否对五位数的订单有效。

  //-----------------------------------------------------------------------
  // функция подсчета открытых ордеров
  //-----------------------------------------------------------------------

  void OrderOpen()
   {
     Orders_BUY=0; Orders_SELL=0;
     for(int a=0; a<=OrdersTotal(); a++)
     {
      if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES) == true && OrderType()==OP_BUY && OrderMagicNumber() == Magic) Orders_BUY=Orders_BUY+1;
      if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES) == true && OrderType()==OP_SELL && OrderMagicNumber() == Magic) Orders_SELL=Orders_SELL+1;

      //if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_BUY) Orders_BUY=Orders_BUY+1;
      //if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_SELL) Orders_SELL=Orders_SELL+1;
      ProfitAll=ProfitAll+OrderProfit()+OrderSwap()+OrderCommission();
     }
   }
  
  //-----------------------------------------------------------------------
  // функция закрытия ордеров сначала разнонаправленных
  //-----------------------------------------------------------------------
  void ClosePos()
   {
   int ticket_1=0, ticket_2=0;
    
     for (int a=0; a<=OrdersTotal(); a++)
       {
         if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES) == true) 
            {
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) // проверка по символу и магику
               {
                if(OrderType() == OP_BUY) ticket_1 = OrderTicket();
                if(OrderType() == OP_SELL) ticket_2= OrderTicket();   
               } 
            }
        }    
      if(ticket_1 != 0 && ticket_2 != 0) {          // если найдены разнонаправленные ордера
      res = OrderCloseBy(ticket_1,ticket_2,clrRed); }   // закроем их
       
      if(ticket_1 == 0 && ticket_2 != 0) {  CloseOrder_by_type(OP_SELL,Symbol());  }
      if(ticket_1 != 0 && ticket_2 == 0) {  CloseOrder_by_type(OP_BUY,Symbol());  }
    
    }

//---- Закрытие ордера по типу и комментарию ----//
void CloseOrder_by_type(int type, string sym)
{
   for(int k= OrdersTotal()-1;k>=0;k--)
   {
    
      if(OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==true)
       {
           
      if(type == OrderType() && sym==OrderSymbol()&& OrderMagicNumber()==Magic)
         if(OrderType()<=1){ res = OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),350);}
         else { res = OrderDelete(OrderTicket());}
         if(!res)
               Print("Ошибка закрытия ордера. Код ошибки=",GetLastError());
            else
               Print("ордер успешно закрыт.");   
           
       }
   }
}