//+------------------------------------------------------------------+
//| 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