Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1396

 
Tenimagalon:
О смотрю дискусия развернулась.Alex и ты подключился.:))Ну что господа программисты консенсус то есть?Смотрите Задача функция состоит в закрытии ордеров одинакового типа по общей прибыли.Пример Открыты 4 позиции 2 по EURUSD бай и сел и 2  по USDCHF бай и сел.И нужно повторяюсь Нужно что бы експерт закрыл Или бай ордера или селл ордера.Ни бай и сел.Тобиж если ордера бай получили профит он их закрыл.Не трогай сел ордера.Или сел закрыл не трогай бай.По общей прибыли закрыть все 4 ордера не получиться ее ни когда не будет.

Лови

double MyProfit=1000; // уровень профита
//+--------------------------------------------------------------------------------------------------------------------+
//| Expert tick function                                                                                               |
//+--------------------------------------------------------------------------------------------------------------------+
void OnTick()
  {
//---
   if(Open_Pr("",0)>MyProfit)DelOrders("",0); // закрываем покупки
   if(Open_Pr("",1)>MyProfit)DelOrders("",1); // закрываем продажи
//---
  }
//+--------------------------------------------------------------------------------------------------------------------+
//|  Суммарный профит в валюте депозита открытых позиций                                                               |
//| or_ty=0 - ордера типа BUY                                                                                          |
//| or_ty=1 - ордера типа SELL                                                                                         |
//+--------------------------------------------------------------------------------------------------------------------+
double Open_Pr(string sy="", int or_ty=0)
  { double p = 0;
   if (sy == "0") sy = Symbol();
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS)==true)
        {
         if(OrderSymbol() == sy || sy == "")
           {
            if(OrderType()==or_ty) {p+=OrderProfit()+OrderSwap()+OrderCommission();}
           }
        }
     }
   return(p);
  }
//+--------------------------------------------------------------------------------------------------------------------+
//| Функция удаления и закрытия ордеров                                                                                |
//| or_ty=0 - ордера типа BUY                                                                                          |
//| or_ty=1 - ордера типа SELL                                                                                         |
//+--------------------------------------------------------------------------------------------------------------------+
void DelOrders(string sy="", int or_ty=0)
  {
   while(true)
     {
      bool find_order=false;
      //----
      if (sy == "0") sy = Symbol();
      for(int pos=OrdersTotal()-1;pos>=0;pos--)
      if(OrderSelect(pos,SELECT_BY_POS)==true)
      if(OrderSymbol() == sy || sy == "")
        {
         find_order=true;
         //----
         if(OrderType()==or_ty)
           {
            RefreshRates(); int slip=(int)(((Ask-Bid)/Point)*2);
            if(OrderClose(OrderTicket(),OrderLots(),Bid,slip,clrBlue)==false){}
           }
         //----
         if(OrderType()==or_ty)
           {
            RefreshRates(); slip=(int)(((Ask-Bid)/Point)*2);
            if(OrderClose(OrderTicket(),OrderLots(),Ask,slip,clrRed)==false){}
           }
         Alert("Все ордера закрыты!");
        } 
      if(find_order==false) Alert("Нет ордеров!");break;
     } 
  }
//+--------------------------------------------------------------------------------------------------------------------+
 
Tenimagalon:
О смотрю дискусия развернулась.Alex и ты подключился.:))Ну что господа программисты консенсус то есть?Смотрите Задача функция состоит в закрытии ордеров одинакового типа по общей прибыли.Пример Открыты 4 позиции 2 по EURUSD бай и сел и 2  по USDCHF бай и сел.И нужно повторяюсь Нужно что бы експерт закрыл Или бай ордера или селл ордера.Ни бай и сел.Тобиж если ордера бай получили профит он их закрыл.Не трогай сел ордера.Или сел закрыл не трогай бай.По общей прибыли закрыть все 4 ордера не получиться ее ни когда не будет.

типа так? :)

1

 
MakarFX:

Лови

Умм интересно.спасибо по юзаю :)
 
Taras Slobodyanik:

типа так? :)


Тарас у тебя 3 позиции открыто по разным парам я так понял 2 Бая и один сел.То да в таком случае при достижении общего профит бот закроет позы. А вы попробуйте открыть 4 позиции по 2 парам.Тобиж 2 лока.При таком раскладе общий профит вы ни когда в жизни не достигните.А нужно чтоб експерт закрывал по общему профит или прибыли как угодно пары ордеров или бай или сел.Не все вместе.Ни локом бай и сел. А закрывал бай EURUSD и бай USDCHF ну или другой выбранной пары не суть. 
 
Taras Slobodyanik:

типа так? :)


Диалоговое окно сам делал или СБ?
 
Tenimagalon:
Тарас у тебя 3 позиции открыто по разным парам я так понял 2 Бая и один сел.То да в таком случае при достижении общего профит бот закроет позы. А вы попробуйте открыть 4 позиции по 2 парам.Тобиж 2 лока.При таком раскладе общий профит вы ни когда в жизни не достигните.А нужно чтоб експерт закрывал по общему профит или прибыли как угодно пары ордеров или бай или сел.Не все вместе.Ни локом бай и сел. А закрывал бай EURUSD и бай USDCHF ну или другой выбранной пары не суть. 

вот много баев и селлов)

2

 
MakarFX:
Диалоговое окно сам делал или СБ?

а разве там есть панели?

пс. разве что объектами если делать

 
Taras Slobodyanik:

а разве там есть панели?

Есть, поэтому и спрашиваю

Если сам делал, пожалуйста, поделись кодом (свернуть развернуть, передвинуть)

 
Taras Slobodyanik:

вот много баев и селлов)

Тарас :) Открой 4 позиции по шагово.1 бай по евро один бай по   чифу.Затем еще две Один селл по евро один селл по чифу.И посмотри когда бай и бай достигнут общей прибыли бот закроет оба бая или нет.Или же селл позиции закроются по общему профит. А у тя на скринах я вижу ордера по одному инструменту что в априори быть не должно. 
 
Tenimagalon:
Тарас :) Открой 4 позиции по шагово.1 бай по евро один бай по   чифу.Затем еще две Один селл по евро один селл по чифу.И посмотри когда бай и бай достигнут общей прибыли бот закроет оба бая или нет.Или же селл позиции закроются по общему профит. А у тя на скринах я вижу ордера по одному инструменту что в априори быть не должно. 

группировать пары по баю или по селлу неправильно

например на одной паре (при бай) может быть покупка доллара, а на другой паре (при бай) продажа доллара.

Причина обращения: