Author: ��������� ��������� ������������
Orders Execution
Checks for the total of closed ordersChecks for the total of open orders
Miscellaneous
It opens Message Boxes to the userIt issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
Sredina
//+------------------------------------------------------------------+
//|                                                      Sredina.mq4 |
//|                                 Áðûçãàëîâ Àëåêñàíäð Âëàäèìèðîâè÷ |
//|                                              sanyooooook@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Áðûçãàëîâ Àëåêñàíäð Âëàäèìèðîâè÷"
#property link      "sanyooooook@mail.ru"

#include <stdlib.mqh>
#include <WinUser32.mqh>
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
bool BUY=true;
int start()
  {
//----
      bool History;
      int Type;
      if(MessageBox("ÎÊ - ñ÷èòàòü òîëüêî BUY, èíà÷å ñ÷èòàòü òîëüêî SELL",
                    "Script",MB_YESNO|MB_ICONQUESTION)==IDYES) 
      {
         Type=0;
         BUY=true;
      }
      else 
      {
         Type=1;
         BUY=false;
      }
      if(MessageBox("Èñïîëüçîâàòü ñåðèþ ïîñëåäíèõ óáûòî÷íûõ îðäåðîâ?",
                    "Script",MB_YESNO|MB_ICONQUESTION)==IDYES)
         History=true;
      else
         History =false;
      double /*SLots=0,*/Lots=MarketInfo(Symbol(),MODE_MINLOT);
      double Price=0;
      double TotalLots=0;
      double Seredina=0;
      int    Total=0,hTotal=0;
      int h=OrdersHistoryTotal()-1;
      int Profit=0;
      double hSLots,LostPP;
      if (History)
      {
         while (Profit<=0&&h>=0)
         {
            if (OrderSelect(h,SELECT_BY_POS,MODE_HISTORY)==true&& OrderSymbol()==Symbol()&&OrderType()==Type)
            {
               Profit=OrderProfit();
               if (Profit<0)
               {
                  hSLots=hSLots+OrderLots();
                  LostPP=LostPP+MathAbs(OrderOpenPrice()-OrderClosePrice());
                  hTotal++;
               }   
            }
            Comment(h);
            h--;
            
         }
         if (hTotal>0)
         Print(LostPP/Point," ",OrderTicket());
         else Print("Â èñòîðèè ïóñòî èëè ïîñëåäíÿÿ ñäåëêà ïî äàííîìó èíñòðóìåíòó ïðèáûëüíàÿ");
         if (hTotal>0)
         {
            hSLots=hSLots/hTotal;
            LostPP=LostPP/hTotal;
         }
      }
      double SLots=0;
      for (int i=0;i<OrdersTotal();i++)//ïîäñ÷åò îâùåãî îáúåìà âñåõ ñäåëîê íà ÁÀÉ, êîëè÷åñòâà ìèíèìàëüíûõ ëîòîâ
      {
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true&& OrderSymbol()==Symbol()&&OrderType()==Type)
         {  
            SLots=SLots+OrderLots();
            Price=Price+OrderOpenPrice()*(OrderLots()/Lots);
            TotalLots=TotalLots+(OrderLots()/Lots);
            Total++;
         }
      }
      Print(SLots);
      if (Total==0) 
      {
         Alert("Íåò ïîçèöèé, âûáðàííîãî òèïà, äëÿ ïîäñ÷åòà.");
         return;
      }
      if (History&&SLots>0)
      {
        LostPP=LostPP*(hSLots/SLots);
      }
      else
        LostPP=0;
      Seredina=NormalizeDouble(Price/(TotalLots),Digits);//òåéê ïðîôèò ïî ñðåäíåé öåíå
      if (BUY) 
      {
         ObjectCreateTrend("Sredina"+Type,OBJ_HLINE,0,Time[0],Seredina+LostPP,0,0,Blue,0);
      }
      else 
      {
         ObjectCreateTrend("Sredina"+Type,OBJ_HLINE,0,Time[0],Seredina-LostPP,0,0,Red,0);
      }
//----
   return(0);
  }
  void ObjectCreateTrend(string iObjectName,int Type,int iWindow,int X1Time,double Y1Price,int X2Time,double Y2Price,color iColor,int Code)
{
	if (ObjectFind(iObjectName)<0) {
		ObjectCreate(iObjectName,Type,iWindow,0,0);
		ObjectSet(iObjectName,OBJPROP_COLOR,iColor);
		ObjectSet(iObjectName,OBJPROP_RAY,false);
	}
	if (X1Time!=0)
	   ObjectSet(iObjectName,OBJPROP_TIME1,X1Time);
	ObjectSet(iObjectName,OBJPROP_PRICE1,Y1Price);
	if (X2Time!=0)
	   ObjectSet(iObjectName,OBJPROP_TIME2,X2Time);
	if (Y2Price!=0)
	   ObjectSet(iObjectName,OBJPROP_PRICE2,Y2Price);
	if (Code!=0)
	   ObjectSet(iObjectName,OBJPROP_ARROWCODE,Code);
}

//+------------------------------------------------------------------+

Comments