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
10 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