Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
ModStopReverse
//+------------------------------------------------------------------+
//| ProjectName |
//| Copyright 2012, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "Infoplus"
#property link "http://www.infoplus.ipsys.net"
#define MAGIC 1000
#include <stdlib.mqh>
//------- Âíåøíèå ïàðàìåòðû ñîâåòíèêà --------------------------------
extern string _Parameters_Trade="----- Ïàðàìåòðû òîðãîâëè";
extern bool UseTrailing=True; // Èñïîëüçîâàòü òðàë
extern bool ProfitTrailing= False; // Òðàëèòü òîëüêî ïðîôèò
extern int TrailingStop = 20; // Ôèêñèðîâàííûé ðàçìåð òðàëà
extern int TrailingStep=1; // Øàã òðàëà
extern int Slippage = 3; // Ïðîñêàëüçûâàíèå öåíû
extern double Lott = 0.1; // Ðàçìåð ëîòà
extern int Delta = 20; // Ðàññòîÿíèå äëÿ ñòîï-îðäåðîâ
extern double KK = 10; // Êîýôôèöèåíò óìíîæåíèÿ ëîòà
extern int ProfClose = 1; // Çàêðûòü âñå ïðè ïðîôèòå
extern int TimeStart=7; //îãðàíè÷åíèå âðåìåíè ðàáîòû ñîâåòíèêà
extern int TimeEnd= 23; //íå îòêðûâàåì îðäåðà è çàêðûâàåì îòëîæêè åñëè âðåìÿ íå ìåæäó TimeStart è TimeEnd
extern string _Parameters_Expert="----- Ïàðàìåòðû ñîâåòíèêà";
extern bool UseSound = True; // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
extern string NameFileSound = "expert.wav"; // Íàèìåíîâàíèå çâóêîâîãî ôàéëà
extern color clOpenBuy = LightBlue; // Öâåò îòêðûòèÿ ïîêóïêè
extern color clOpenSell = LightCoral; // Öâåò îòêðûòèÿ ïðîäàæè
extern color clModifyBuy = Aqua; // Öâåò ìîäèôèêàöèè ïîêóïêè
extern color clModifySell = Tomato; // Öâåò ìîäèôèêàöèè ïðîäàæè
extern color clCloseBuy = Blue; // Öâåò çàêðûòèÿ ïîêóïêè
extern color clCloseSell = Red; // Öâåò çàêðûòèÿ ïðîäàæè
//---- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà -------------------------------
int g_fontsize_544=10;
int g_color_548 = Gold;
int g_color_547 = Red;
int g_color_5=Gold;
double BStopLoss;
double priceBid;
double priceAsk;
double HistoryZeroPrice,ZeroPrice,StopOutPrice;
//-----------
extern string Symbol_1="GBPJPY";
extern string Symbol_2="USDCHF";
extern string Symbol_3="EURUSD";
extern string Symbol_4="EURGBP";
extern string Symbol_5="GBPUSD";
extern string Symbol_6="EURCHF";
extern string Symbol_7="EURJPY";
extern string Symbol_8="GPBPCHF";
extern string Symbol_9="AUDJPY";
extern string Symbol_10="AUDUSD";
extern string Symbol_11="NZDUSD";
extern string Symbol_12="NZDJPY";
extern string Symbol_13="CHFJPY";
extern string Symbol_14="USDCHF";
extern int ÐàçìåðØðèôòà=10;
//----
double LotS,ProfitS;
double LotB,ProfitB;
double LotT,ProfitT;
double ProfitHistory;
double PartEquity;
color Color;
int pos,orderremit,TotalOrders,Symb;
string text;
int File;
string FileName;
int CountDate;
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
void init()
{
Comment("");
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
void start()
{
IndikatorLots();
if(IsTrade())
{
if(!ExistOrder(1))
{
DeleteAllOrders();
Sleep(500);
CalcLots();
SetOrders(1);
}
for(int i=2;i<30;i++)
{
if(!ExistOrder(i)) {if(ExistOrderTr(i-1)) {SetOrders(i); }}
}
}
Show();
TrailingPositions();
}
//+------------------------------------------------------------------+
//| Óñòàíîâêà îðäåðîâ |
//+------------------------------------------------------------------+
void SetOrders(int nn)
{
bool fc;
StopOutPrice=0; ZeroPrice=0;
if(nn==1)
{
fc=false;
while(fc==false)
{
fc=OrderSend(Symbol(),OP_BUY,Lott,Ask,Slippage,0,0,"",MAGIC+1,0,clOpenBuy); EE();
}
return;
}
if(MathMod(nn,2)!=0)
{
priceBid=Ask+Delta*Point; fc=false;
while(fc==false)
{
fc=OrderSend(Symbol(),OP_BUYSTOP,NormalizeDouble(KK*Checks(nn-1),2),priceBid,Slippage,0,0,"",MAGIC+nn,0,clOpenBuy);
}
}
if(MathMod(nn,2)==0)
{
priceBid=Bid-Delta*Point; fc=false;
while(fc==false)
{
fc=OrderSend(Symbol(),OP_SELLSTOP,NormalizeDouble(KK*Checks(nn-1),2),priceBid,Slippage,0,0,"",MAGIC+nn,0,clOpenSell);
}
}
}
//+------------------------------------------------------------------+
//| Ðàñ÷åò ëîòîâ |
//+------------------------------------------------------------------+
void CalcLots()
{
Lott=NormalizeDouble(AccountFreeMargin()/100000,2);
ProfClose=NormalizeDouble(Lott*10,2);
}
//+------------------------------------------------------------------+
//| Ïîäñ÷åò ïðîôèòà |
//+------------------------------------------------------------------+
string ShowProfit()
{
double Proff=0;
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
Proff=Proff+OrderProfit()+OrderSwap();
}
}
}
if(Proff>=ProfClose)
{
CloseAll(0);
DeleteAllOrders();
}
return(Proff);
}
//+------------------------------------------------------------------+
//| Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ îðäåðà èëè ïîçèöèè ïî íîìåðó |
//+------------------------------------------------------------------+
bool ExistOrder(int mn)
{
bool Exist=False;
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+mn)
{
Exist=True; break;
}
}
}
return(Exist);
}
//+------------------------------------------------------------------+
//| Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ îòêðûòîãî îðäåðà ïî íîìåðó |
//+------------------------------------------------------------------+
bool ExistOrderTr(int mn)
{
bool Exist=False;
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+mn)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
Exist=True; break;
}
}
}
}
return(Exist);
}
//+------------------------------------------------------------------+
//| Ïîäñ÷åò ëîòà ïîñëåäíåãî îòêðûòîãî îðäåðà |
//+------------------------------------------------------------------+
double Checks(int mn)
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && (OrderMagicNumber()==MAGIC+mn))
{
double OL=OrderLots();
}
}
}
return(OL);
}
//+------------------------------------------------------------------+
//| Çàêðûòèå âñåõ ïîçèöèé ïî ðûíî÷íîé öåíå |
//+------------------------------------------------------------------+
void CloseAll(int pp)
{
bool fc; int i;
if(pp==0)
{
for(i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
fc=False;
while(fc==False)
{
fc=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clCloseBuy); EE();
}
}
if(OrderType()==OP_SELL)
{
fc=False;
while(fc==False)
{
fc=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clCloseSell); EE();
}
}
if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_BUYLIMIT)
{
fc=OrderDelete(OrderTicket());
}
if(fc && UseSound) PlaySound(NameFileSound);
}
}
}
}
}
//+------------------------------------------------------------------+
//| âûÿâëåíèå îøèáîê |
//+------------------------------------------------------------------+
void EE()
{
int EError=GetLastError(); // Íå ïîëó÷èëîñü :(
switch(EError) // Ïðåîäîëèìûå îøèáêè
{
case 135:Alert("Öåíà èçìåíèëàñü. Ïðîáóåì åù¸ ðàç..");
RefreshRates(); // Îáíîâèì äàííûå
case 136:Alert("Íåò öåí. Æä¸ì íîâûé òèê..");
while(RefreshRates()==false) // Äî íîâîãî òèêà
Sleep(1); // Çàäåðæêà â öèêëå
// continue; // Íà ñëåä. èòåðàöèþ
case 146:Alert("Ïîäñèñòåìà òîðãîâëè çàíÿòà. Ïðîáóåì åù¸..");
Sleep(500); // Ïðîñòîå ðåøåíèå
RefreshRates(); // Îáíîâèì äàííûå
}
}
//+------------------------------------------------------------------+
//| Óäàëåíèå âñåõ îðäåðîâ |
//+------------------------------------------------------------------+
void DeleteAllOrders()
{
bool fd;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP)
{
fd=OrderDelete(OrderTicket());
if(fd && UseSound) PlaySound(NameFileSound);
}
}
}
}
}
//+------------------------------------------------------------------+
//| Ñòîï-îðäåðíûé òðàëë |
//+------------------------------------------------------------------+
void TrailingPositions()
{
int i;
for(i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_SELLSTOP)
{
if(Bid-OrderOpenPrice()>TrailingStop*Point)
{
if(OrderOpenPrice()<Bid-(TrailingStop+TrailingStep-1)*Point)
{
double newpr=Bid-TrailingStop*Point;
ModStopOrders(newpr,OP_SELLSTOP);
}
}
}
if(OrderType()==OP_BUYSTOP)
{
if(OrderOpenPrice()-Ask>TrailingStop*Point)
{
if(OrderOpenPrice()>Ask+(TrailingStop+TrailingStep-1)*Point)
{
double newprBS=Ask+TrailingStop*Point;
ModStopOrders(newprBS,OP_BUYSTOP);
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Ìîäèôèêàöèÿ îòë.îðäåðà |
//+------------------------------------------------------------------+
void ModStopOrders(double newprice,string OP)
{
bool fm;
double SL=OrderStopLoss();
if(OP==OP_BUYSTOP)
{
SL=SL+TrailingStep*Point;
}
if(OP==OP_SELLSTOP)
{
SL=SL-TrailingStep*Point;
}
fm=OrderModify(OrderTicket(),newprice,0,0,0,Red);
if(fm && UseSound) {PlaySound(NameFileSound); }
}
//+------------------------------------------------------------------+
//| Èíôîðìïàíåëü |
//+------------------------------------------------------------------+
void Show()
{
string name_8="5";
if(ObjectFind(name_8)==-1)
{
ObjectCreate(name_8,OBJ_LABEL,0,0,0);
ObjectSet(name_8,OBJPROP_CORNER,1);
ObjectSet(name_8,OBJPROP_XDISTANCE,20);
ObjectSet(name_8,OBJPROP_YDISTANCE,36);
}
ObjectSetText(name_8,"Áàëàíñ: "+DoubleToStr(AccountBalance(),2),g_fontsize_544,"Courier New",g_color_548);
name_8="6";
if(ObjectFind(name_8)==-1)
{
ObjectCreate(name_8,OBJ_LABEL,0,0,0);
ObjectSet(name_8,OBJPROP_CORNER,1);
ObjectSet(name_8,OBJPROP_XDISTANCE,20);
ObjectSet(name_8,OBJPROP_YDISTANCE,56);
}
ObjectSetText(name_8,"Ñðåäñòâà: "+DoubleToStr(AccountFreeMargin(),2),g_fontsize_544,"Courier New",g_color_548);
name_8="7";
if(ObjectFind(name_8)==-1)
{
ObjectCreate(name_8,OBJ_LABEL,0,0,0);
ObjectSet(name_8,OBJPROP_CORNER,1);
ObjectSet(name_8,OBJPROP_XDISTANCE,60);
ObjectSet(name_8,OBJPROP_YDISTANCE,76);
}
if(AccountMargin()==0)
{
StopOutPrice=0; ZeroPrice=0;
ObjectSetText(name_8,"Óðîâåíü: ",g_fontsize_544,"Courier New",g_color_548);
}
else
{
if(AccountEquity()/AccountMargin()*100<2000) {g_color_5=Red;} else {g_color_5=Gold;}
ObjectSetText(name_8,"Óðîâåíü: "+DoubleToStr(AccountEquity()/AccountMargin()*100,2),g_fontsize_544,"Courier New",g_color_5);
}
name_8="8";
if(ObjectFind(name_8)==-1)
{
ObjectCreate(name_8,OBJ_LABEL,0,0,0);
ObjectSet(name_8,OBJPROP_CORNER,1);
ObjectSet(name_8,OBJPROP_XDISTANCE,60);
ObjectSet(name_8,OBJPROP_YDISTANCE,96);
}
ObjectSetText(name_8,"Ïðîôèò: "+DoubleToStr(ShowProfit(),2),g_fontsize_544,"Courier New",g_color_548);
name_8="11";
if(ObjectFind(name_8)==-1)
{
ObjectCreate(name_8,OBJ_LABEL,0,0,0);
ObjectSet(name_8,OBJPROP_CORNER,1);
ObjectSet(name_8,OBJPROP_XDISTANCE,20);
ObjectSet(name_8,OBJPROP_YDISTANCE,116);
}
ObjectSetText(name_8,"STOPLOSS: "+DoubleToStr(BStopLoss,4),g_fontsize_544,"Courier New",g_color_548);
name_8="13";
if(ObjectFind(name_8)==-1)
{
ObjectCreate(name_8,OBJ_LABEL,0,0,0);
ObjectSet(name_8,OBJPROP_CORNER,1);
ObjectSet(name_8,OBJPROP_XDISTANCE,20);
ObjectSet(name_8,OBJPROP_YDISTANCE,136);
}
ObjectSetText(name_8,"STOPOUT: "+DoubleToStr(StopOutPrice,4),g_fontsize_544,"Courier New",g_color_547);
name_8="14";
if(ObjectFind(name_8)==-1)
{
ObjectCreate(name_8,OBJ_LABEL,0,0,0);
ObjectSet(name_8,OBJPROP_CORNER,1);
ObjectSet(name_8,OBJPROP_XDISTANCE,20);
ObjectSet(name_8,OBJPROP_YDISTANCE,156);
}
ObjectSetText(name_8,"ZEROPRICE: "+DoubleToStr(ZeroPrice,4),g_fontsize_544,"Courier New",Red);
name_8="15";
if(ObjectFind(name_8)==-1)
{
ObjectCreate(name_8,OBJ_LABEL,0,0,0);
ObjectSet(name_8,OBJPROP_CORNER,1);
ObjectSet(name_8,OBJPROP_XDISTANCE,20);
ObjectSet(name_8,OBJPROP_YDISTANCE,176);
}
ObjectSetText(name_8,"BUY Lots: "+DoubleToStr(LotB,2),g_fontsize_544,"Courier New",g_color_548);
name_8="16";
if(ObjectFind(name_8)==-1)
{
ObjectCreate(name_8,OBJ_LABEL,0,0,0);
ObjectSet(name_8,OBJPROP_CORNER,1);
ObjectSet(name_8,OBJPROP_XDISTANCE,20);
ObjectSet(name_8,OBJPROP_YDISTANCE,196);
}
ObjectSetText(name_8,"SELL Lots: "+DoubleToStr(LotS,2),g_fontsize_544,"Courier New",g_color_548);
name_8="17";
if(ObjectFind(name_8)==-1)
{
ObjectCreate(name_8,OBJ_LABEL,0,0,0);
ObjectSet(name_8,OBJPROP_CORNER,1);
ObjectSet(name_8,OBJPROP_XDISTANCE,20);
ObjectSet(name_8,OBJPROP_YDISTANCE,216);
}
ObjectSetText(name_8,"BUY Profit: "+DoubleToStr(ProfitB,2),g_fontsize_544,"Courier New",g_color_548);
name_8="18";
if(ObjectFind(name_8)==-1)
{
ObjectCreate(name_8,OBJ_LABEL,0,0,0);
ObjectSet(name_8,OBJPROP_CORNER,1);
ObjectSet(name_8,OBJPROP_XDISTANCE,20);
ObjectSet(name_8,OBJPROP_YDISTANCE,236);
}
ObjectSetText(name_8,"SELL Profit: "+DoubleToStr(ProfitS,2),g_fontsize_544,"Courier New",g_color_548);
name_8="19";
if(ObjectFind(name_8)==-1)
{
ObjectCreate(name_8,OBJ_LABEL,0,0,0);
ObjectSet(name_8,OBJPROP_CORNER,1);
ObjectSet(name_8,OBJPROP_XDISTANCE,20);
ObjectSet(name_8,OBJPROP_YDISTANCE,256);
}
ObjectSetText(name_8,"ÏðîôèòClose: "+DoubleToStr(ProfClose,2),g_fontsize_544,"Courier New",g_color_548);
}
//+------------------------------------------------------------------+
//| Òîðãîâëÿ ïî âðåìåíè |
//+------------------------------------------------------------------+
bool IsTrade()
{
//---
int TekHour=Hour();
bool Trade;
if(TimeStart<TimeEnd && TekHour>=TimeStart && TekHour<TimeEnd)
{
Trade=true; //Comment("Òîðãîâëÿ ðàçðåøåíà!!! ");
}
else
{
if(TimeStart>TimeEnd && (TekHour>=TimeStart || TekHour<TimeEnd))
{
Trade=true; //Comment("Òîðãîâëÿ ðàçðåøåíà!!! ");
}//òîðãîâëÿ íî÷üþ
else {Trade=false;}
}
if(!Trade)
{
//Comment("Òîðãîâëÿ çàïðåùåíà ïî âðåìåíè ");
}
//---
return(Trade);
}
//+------------------------------------------------------------------+
//| Óðîâíè áåçóáûòêà |
//+------------------------------------------------------------------+
int IndikatorLots()
{
//----
if(AccountBalance()==0)return(0);
//----
double TickVal=MarketInfo(Symbol(),MODE_TICKVALUE);
//---- îïðåäåëåíèå êîëè÷åñòâà èíñòðóìåíòîâ è ðàñïðåäåëåíèå ñðåäñòâ äëÿ íèõ
//---- âûñòàâëåíèå óðîâíÿ ìàðæèíêîëà
if(TotalOrders!=OrdersTotal() && AccountBalance()!=0)
{
TotalOrders=OrdersTotal();
double Lot,Lot_1,Lot_2,Lot_3,Lot_4,Lot_5,Lot_6,Lot_7,Lot_8,Lot_9,Lot_10;
for(pos=OrdersTotal()-1;pos>=0;pos--)
{
if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderType()<=OP_SELL)
{
if(OrderType()==OP_BUY){Lot=OrderLots();}
if(OrderType()==OP_SELL){Lot=-OrderLots();}
if(OrderSymbol()==Symbol_1){Lot_1=NormalizeDouble(Lot_1+Lot,2);}
else if(OrderSymbol()==Symbol_2){Lot_2=NormalizeDouble(Lot_2+Lot,2);}
else if(OrderSymbol()==Symbol_3){Lot_3=NormalizeDouble(Lot_3+Lot,2);}
else if(OrderSymbol()==Symbol_4){Lot_4=NormalizeDouble(Lot_4+Lot,2);}
else if(OrderSymbol()==Symbol_5){Lot_5=NormalizeDouble(Lot_5+Lot,2);}
else if(OrderSymbol()==Symbol_6){Lot_6=NormalizeDouble(Lot_6+Lot,2);}
else if(OrderSymbol()==Symbol_7){Lot_7=NormalizeDouble(Lot_7+Lot,2);}
else if(OrderSymbol()==Symbol_8){Lot_8=NormalizeDouble(Lot_8+Lot,2);}
else if(OrderSymbol()==Symbol_9){Lot_9=NormalizeDouble(Lot_9+Lot,2);}
else if(OrderSymbol()==Symbol_10){Lot_10=NormalizeDouble(Lot_10+Lot,2);}
else
{
Alert("\"Inf_Open_Orders\". Ïîÿâèëñÿ îðäåð ïî íåóêàçàííîìó èíñòðóìåíòó ",OrderSymbol(),"!");
return(0);
}
}
}
else Print("Îøèáêà ",GetLastError());
}
Symb=0;
if(Lot_1!=0){Symb++;}
if(Lot_2!=0){Symb++;}
if(Lot_3!=0){Symb++;}
if(Lot_4!=0){Symb++;}
if(Lot_5!=0){Symb++;}
if(Lot_6!=0){Symb++;}
if(Lot_7!=0){Symb++;}
if(Lot_8!=0){Symb++;}
if(Lot_9!=0){Symb++;}
if(Lot_10!=0){Symb++;}
}
if(Symb!=0)
{
PartEquity=(AccountEquity()-AccountStopoutLevel()/100*AccountMargin())/Symb;//ðàñïðåäåë¸ííûå ñðåäñòâà
}
//---- îïðåäåëåíèå ïðîôèòîâ è îáü¸ìîâ ëîòîâ
LotS=0;
ProfitS=0;
LotB=0;
ProfitB=0;
ProfitT=0;
for(pos=OrdersTotal()-1; pos>=0; pos--)
{
if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderSymbol()==Symbol())
{
//----
if(OrderType()==OP_BUY)
{
LotB+=OrderLots();
ProfitB+=OrderProfit()+OrderSwap();
}
//----
if(OrderType()==OP_SELL)
{
LotS+=OrderLots();
ProfitS+=OrderProfit()+OrderSwap();
}
//----
ProfitT+=OrderProfit()+OrderSwap();
//----
}
}
else Print("Îøèáêà ïðè äîñòóïå ê ðåàë áàçå (",GetLastError(),")");
}
//---- îïðåäåëåíèå íà÷àëà îòñ÷¸òà â èñòîðèè îðäåðîâ
if(AccountBalance()!=0)
//----
{
int order;
for(pos=OrdersTotal()-1;pos>=0;pos--)//ïîèñê íàëè÷èÿ îòêðûòûõ îðäåðîâ
{
if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderSymbol()==Symbol() && OrderType()<=OP_SELL)
{
order++;
}
}
else Print("Îøèáêà ïðè äîñòóïå ê ðåàë áàçå (",GetLastError(),")");
}
}
//----
string text=StringConcatenate("Total History profit (",TimeToStr(CountDate,TIME_DATE|TIME_MINUTES),")=");
ObjectSetText("Inf_HistoryTotal",text,ÐàçìåðØðèôòà,"Arial",DarkOrange);
//----
ProfitHistory=0;
for(pos=OrdersHistoryTotal()-1;pos>=0;pos--)//ïîäñ÷¸ò ïðîôèòà èç èñòîðèè
{
if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
{
if(OrderSymbol()==Symbol() && OrderOpenTime()>=CountDate)
{
ProfitHistory+=OrderProfit()+OrderSwap();
}
}
else Print("Îøèáêà ïðè äîñòóïå ê èñòîðè÷åñêîé áàçå (",GetLastError(),")");
}
ProfitHistory=ProfitHistory+ProfitT;
//---- âûñòàâëåíèå íóëåâûõ è StopOut óðîâíåé
LotT=LotB-LotS;
if(LotT!=0)
{
if(LotT>0)//Buy ëîò ïðeèìóùåñòâî
{
HistoryZeroPrice=NormalizeDouble(Bid-(ProfitHistory/LotT/TickVal*Point),Digits);
ZeroPrice=NormalizeDouble(Bid-(ProfitT/LotT/TickVal*Point),Digits);
StopOutPrice=NormalizeDouble(Bid-(PartEquity/LotT/TickVal*Point),Digits);
}
if(LotT<0)//Sell ëîò ïðeèìóùåñòâî
{
HistoryZeroPrice=NormalizeDouble(Ask-(ProfitHistory/LotT/TickVal*Point),Digits);
ZeroPrice=NormalizeDouble(Ask-(ProfitT/LotT/TickVal*Point),Digits);
StopOutPrice=NormalizeDouble(Ask-(PartEquity/LotT/TickVal*Point),Digits);
}
//---- Âûñòàâëåíèå îáùåãî íóëåâîãî ðåàë óðîâíÿ
if(ObjectFind("Line of the zero price")!=0)//îòñóòñòâèå Line zero â ãëàâíîì îêíå
{
ObjectCreate("Line of the zero price",OBJ_TREND,0,Time[5],ZeroPrice,Time[0]+Period()*60*20,ZeroPrice,0,0);
ObjectSetText("Line of the zero price",DoubleToStr(ZeroPrice,Digits));
ObjectSet("Line of the zero price",OBJPROP_RAY,false);
ObjectSet("Line of the zero price",OBJPROP_STYLE,STYLE_SOLID);
ObjectSet("Line of the zero price",OBJPROP_WIDTH,1);
ObjectSet("Line of the zero price",OBJPROP_COLOR,Gold);
}
else if(ObjectFind("Line of the zero price")==0)//íàëè÷èå Line zero â ãëàâíîì îêíå
{
ObjectSetText("Line of the zero price",DoubleToStr(ZeroPrice,Digits));
ObjectSet("Line of the zero price",OBJPROP_TIME1,Time[5]);
ObjectSet("Line of the zero price",OBJPROP_PRICE1,ZeroPrice);
ObjectSet("Line of the zero price",OBJPROP_TIME2,Time[0]+Period()*60*20);
ObjectSet("Line of the zero price",OBJPROP_PRICE2,ZeroPrice);
}
if(ObjectFind("Zero price")!=0)//îòñóòñòâèå Arrow zero â ãëàâíîì îêíå
{
ObjectCreate("Zero price",OBJ_ARROW,0,Time[5],ZeroPrice,0,0,0,0);
ObjectSet("Zero price",OBJPROP_ARROWCODE,5);
ObjectSet("Zero price",OBJPROP_WIDTH,2);
ObjectSet("Zero price",OBJPROP_COLOR,Gold);
}
else if(ObjectFind("Zero price")==0)//íàëè÷èå Arrow zero â ãëàâíîì îêíå
{
ObjectSet("Zero price",OBJPROP_PRICE1,ZeroPrice);
ObjectSet("Zero price",OBJPROP_TIME1,Time[5]);
}
//---- Âûñòàâëåíèå StopOut óðîâíÿ
if(ObjectFind("Line of the StopOut price")!=0)
{
ObjectCreate("Line of the StopOut price",OBJ_TREND,0,Time[5],StopOutPrice,Time[0]+Period()*60*20,StopOutPrice,0,0);
ObjectSetText("Line of the StopOut price",DoubleToStr(StopOutPrice,Digits));
ObjectSet("Line of the StopOut price",OBJPROP_RAY,false);
ObjectSet("Line of the StopOut price",OBJPROP_STYLE,STYLE_SOLID);
ObjectSet("Line of the StopOut price",OBJPROP_WIDTH,2);
ObjectSet("Line of the StopOut price",OBJPROP_COLOR,Brown);
}
else if(ObjectFind("Line of the StopOut price")==0)
{
ObjectSetText("Line of the StopOut price",DoubleToStr(StopOutPrice,Digits));
ObjectSet("Line of the StopOut price",OBJPROP_TIME1,Time[5]);
ObjectSet("Line of the StopOut price",OBJPROP_PRICE1,StopOutPrice);
ObjectSet("Line of the StopOut price",OBJPROP_TIME2,Time[0]+Period()*60*20);
ObjectSet("Line of the StopOut price",OBJPROP_PRICE2,StopOutPrice);
}
if(ObjectFind("StopOut price")!=0)
{
ObjectCreate("StopOut price",OBJ_ARROW,0,Time[5],StopOutPrice,0,0,0,0);
ObjectSet("StopOut price",OBJPROP_ARROWCODE,5);
ObjectSet("StopOut price",OBJPROP_WIDTH,3);
ObjectSet("StopOut price",OBJPROP_COLOR,Brown);
}
else if(ObjectFind("StopOut price")==0)
{
ObjectSet("StopOut price",OBJPROP_PRICE1,StopOutPrice);
ObjectSet("StopOut price",OBJPROP_TIME1,Time[5]);
}
//----
}
else if(LotT==0)
{
if(ObjectFind("Line of the history zero price")==0)ObjectDelete("Line of the history zero price");
if(ObjectFind("History zero price")==0)ObjectDelete("History zero price");
if(ObjectFind("Line of the zero price")==0)ObjectDelete("Line of the zero price");
if(ObjectFind("Zero price")==0)ObjectDelete("Zero price");
if(ObjectFind("Line of the StopOut price")==0)ObjectDelete("Line of the StopOut price");
if(ObjectFind("StopOut price")==0)ObjectDelete("StopOut price");
}
//---- Âûñòàâëåíèå BUY íóëåâîãî óðîâíÿ
if(LotB>0)
{
double BUYZeroPrice;
BUYZeroPrice=NormalizeDouble(Bid-(ProfitB/LotB/TickVal*Point),Digits);
if(ObjectFind("Line of the BUY zero price")!=0)
{
ObjectCreate("Line of the BUY zero price",OBJ_TREND,0,Time[5],BUYZeroPrice,Time[0]+Period()*60*20,BUYZeroPrice,0,0);
ObjectSetText("Line of the BUY zero price",DoubleToStr(BUYZeroPrice,Digits));
ObjectSet("Line of the BUY zero price",OBJPROP_RAY,false);
ObjectSet("Line of the BUY zero price",OBJPROP_STYLE,STYLE_SOLID);
ObjectSet("Line of the BUY zero price",OBJPROP_WIDTH,1);
ObjectSet("Line of the BUY zero price",OBJPROP_COLOR,Chartreuse);
}
else if(ObjectFind("Line of the BUY zero price")==0)
{
ObjectSetText("Line of the BUY zero price",DoubleToStr(BUYZeroPrice,Digits));
ObjectSet("Line of the BUY zero price",OBJPROP_TIME1,Time[5]);
ObjectSet("Line of the BUY zero price",OBJPROP_PRICE1,BUYZeroPrice);
ObjectSet("Line of the BUY zero price",OBJPROP_TIME2,Time[0]+Period()*60*20);
ObjectSet("Line of the BUY zero price",OBJPROP_PRICE2,BUYZeroPrice);
}
if(ObjectFind("BUY Zero price")!=0)
{
ObjectCreate("BUY Zero price",OBJ_ARROW,0,Time[5],BUYZeroPrice,0,0,0,0);
ObjectSet("BUY Zero price",OBJPROP_ARROWCODE,5);
ObjectSet("BUY Zero price",OBJPROP_WIDTH,2);
ObjectSet("BUY Zero price",OBJPROP_COLOR,Chartreuse);
}
else if(ObjectFind("BUY Zero price")==0)
{
ObjectSet("BUY Zero price",OBJPROP_PRICE1,BUYZeroPrice);
ObjectSet("BUY Zero price",OBJPROP_TIME1,Time[5]);
}
}
else if(LotB==0)
{
if(ObjectFind("Line of the BUY zero price")==0)ObjectDelete("Line of the BUY zero price");
if(ObjectFind("BUY Zero price")==0)ObjectDelete("BUY Zero price");
}
//---- Âûñòàâëåíèå SELL íóëåâîãî óðîâíÿ
if(LotS>0)
{
double SELLZeroPrice;
SELLZeroPrice=NormalizeDouble(Ask+(ProfitS/LotS/TickVal*Point),Digits);
if(ObjectFind("Line of the SELL zero price")!=0)
{
ObjectCreate("Line of the SELL zero price",OBJ_TREND,0,Time[5],SELLZeroPrice,Time[0]+Period()*60*20,SELLZeroPrice,0,0);
ObjectSetText("Line of the SELL zero price",DoubleToStr(SELLZeroPrice,Digits));
ObjectSet("Line of the SELL zero price",OBJPROP_RAY,false);
ObjectSet("Line of the SELL zero price",OBJPROP_STYLE,STYLE_SOLID);
ObjectSet("Line of the SELL zero price",OBJPROP_WIDTH,1);
ObjectSet("Line of the SELL zero price",OBJPROP_COLOR,DeepPink);
}
else if(ObjectFind("Line of the SELL zero price")==0)
{
ObjectSetText("Line of the SELL zero price",DoubleToStr(SELLZeroPrice,Digits));
ObjectSet("Line of the SELL zero price",OBJPROP_TIME1,Time[5]);
ObjectSet("Line of the SELL zero price",OBJPROP_PRICE1,SELLZeroPrice);
ObjectSet("Line of the SELL zero price",OBJPROP_TIME2,Time[0]+Period()*60*20);
ObjectSet("Line of the SELL zero price",OBJPROP_PRICE2,SELLZeroPrice);
}
if(ObjectFind("SELL Zero price")!=0)
{
ObjectCreate("SELL Zero price",OBJ_ARROW,0,Time[5],SELLZeroPrice,0,0,0,0);
ObjectSet("SELL Zero price",OBJPROP_ARROWCODE,5);
ObjectSet("SELL Zero price",OBJPROP_WIDTH,2);
ObjectSet("SELL Zero price",OBJPROP_COLOR,DeepPink);
}
else if(ObjectFind("SELL Zero price")==0)
{
ObjectSet("SELL Zero price",OBJPROP_PRICE1,SELLZeroPrice);
ObjectSet("SELL Zero price",OBJPROP_TIME1,Time[5]);
}
}
else if(LotS==0)
{
if(ObjectFind("Line of the SELL zero price")==0)ObjectDelete("Line of the SELL zero price");
if(ObjectFind("SELL Zero price")==0)ObjectDelete("SELL Zero price");
}
//---- çàïîëíåíèå ñòðîê èíôîðìàöèåé
ProfitB=NormalizeDouble(ProfitB,0);
ProfitS=NormalizeDouble(ProfitS,0);
ProfitHistory=NormalizeDouble(ProfitHistory,0);
//ñòðîêà Buy
if(LotB>0)
{
text=DoubleToStr(LotB,2);
}
else if(LotB==0){text="";}
ObjectSetText("Inf_BuyLots",text,ÐàçìåðØðèôòà,"Arial",Aqua);
if(LotB>0)
{
if(ProfitB<0)Color=Red;
if(ProfitB>0)Color=Green;
if(ProfitB==0)Color=Gold;
text=DoubleToStr(ProfitB,0);
}
else if(LotB==0){text="";}
ObjectSetText("Inf_BuyProfit",text,ÐàçìåðØðèôòà,"Arial",Color);
//ñòðîêà Sell
if(LotS>0)
{
text=DoubleToStr(LotS,2);
}
else if(LotS==0){text="";}
ObjectSetText("Inf_SellLots",text,ÐàçìåðØðèôòà,"Arial",OrangeRed);
if(LotS>0)
{
if(ProfitS<0)Color=Red;
if(ProfitS>0)Color=Green;
if(ProfitS==0)Color=Gold;
text=DoubleToStr(ProfitS,0);
}
else if(LotS==0){text="";}
ObjectSetText("Inf_SellProfit",text,ÐàçìåðØðèôòà,"Arial",Color);
//ñòðîêà òîòàë
if(LotS>0 || LotB>0)
{
LotT=NormalizeDouble(LotB-LotS,2);
if(LotT<0)Color=OrangeRed;
if(LotT>0)Color=Aqua;
if(LotT==0)Color=Gold;
text=DoubleToStr(LotT,2);
}
else if(LotS==0 && LotB==0){text="";}
ObjectSetText("Inf_TotalLots",text,ÐàçìåðØðèôòà,"Arial",Color);
if(LotS>0 || LotB>0)
{
if(ProfitB+ProfitS<0)Color=Red;
if(ProfitB+ProfitS>0)Color=Green;
if(ProfitB+ProfitS==0)Color=Gold;
text=DoubleToStr(ProfitB+ProfitS,0);
}
else if(LotS==0 && LotB==0){text="";}
ObjectSetText("Inf_TotalProfit",text,ÐàçìåðØðèôòà,"Arial",Color);
//ñòðîêà History òîòàë
if(LotS>0 || LotB>0)
{
if(ProfitHistory<0)Color=Red;
if(ProfitHistory>0)Color=Green;
if(ProfitHistory==0)Color=Gold;
text=DoubleToStr(ProfitHistory,0);
}
else if(LotS==0 && LotB==0){text="";}
ObjectSetText("Inf_HistoryTotalProfit",text,ÐàçìåðØðèôòà,"Arial",Color);
//----
return(0);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---