← К каталогу
Исходный код · ID 3479

closebyprofit.mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Получить полный код

Поиск по коду файла

#property version   "1.00"
#property strict

#include <sovetnikovGUI\Orders.mqh>
#include <sovetnikovGUI\Time.mqh>

D ProfitValute=0; //Profit in $ (0 - off)
D ProfitProcent=0; //Profit in % (0 - off)
B DeletePendingUse=false; //Delete pending use
B ShowInfo=true; //Show profit use

B MagicListUse=false; //Magic list use (false = all magic)
S Magic=""; //Magic list (sample: 0 12345 3444 777)

class CMyOrders: public COrders
  {
public:
   virtual double    getProfit(bool bMagicListUse,long &lMagic[])
     {
      double pr=0;

      int icount=ArraySize(m_orders);

      for(int i=icount-1; i>=0; i--)
        {
         if(m_orders[i].OrderCloseTime>0)
            continue;

         if(!CheckMagic(bMagicListUse,m_orders[i].OrderMagicNumber,lMagic))
            continue; //пропустим если не наш меджик

         if(m_orders[i].OrderType<2)
            pr+=m_orders[i].Profit;
        }

      return NormalizeDouble(pr,3);
     }

   virtual bool      OrderCloseAll(bool bMagicListUse,long &lMagic[],bool bDeletePending)
     {
      __COPYRIGHT__
      double currents[][3]; //профит, тикет, i
      ArrayResize(currents,0);
      int c=0;

      bool bRet=false;

      for(int i=ArraySize(m_orders)-1; i>=0; i--)
        {
         if(m_orders[i].OrderCloseTime>0)
            continue;

         if(!CheckMagic(bMagicListUse,m_orders[i].OrderMagicNumber,lMagic))
            continue; //пропустим если не наш меджик

         if(bDeletePending || (!bDeletePending && m_orders[i].OrderType<2))
           {
            ArrayResize(currents,c+1);
            currents[c][0]=m_orders[i].Profit;
            currents[c][1]=(double)m_orders[i].OrderTicket;
            currents[c][2]=i;
            c++;
           }
        }

      if(c>0)
        {
         for(int i=0; i<ArrayRange(currents,0); i++)
           {

            if(Close((int)currents[i][1],-1,clrNONE))
               bRet=true;
           }
        }

      if(bRet)
        {

         UpdateOrders(); //чистим от удаленных
        }

      return bRet;
     }

   bool              CheckMagic(bool bMagicListUse,long imagic,long &lMagic[])
     {
      if(!bMagicListUse)
         return true;

      for(int i=0; i<ArraySize(lMagic); i++)
        {
         if(imagic==lMagic[i])
            return true;
        }

      return false;
     }
  };

class CMain: public CMainDefault
  {
protected:
   CMyOrders         m_main;
   CTimer               m_timer;
   long        

Показано первые 50% кода (символов: 3327)

Что вы получите после оплаты

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
333₽