Orders Execution
0
Views
0
Downloads
0
Favorites
cm_control
//+------------------------------------------------------------------+
//| cm_óïðàâëåíèå îðäåðàìè.mq4 |
//| Copyright 2016, cmillion@narod.ru |
//| http://cmillion.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, cmillion@narod.ru"
#property link "http://cmillion.ru"
//+------------------------------------------------------------------+
color Color=clrRed;
int slippage = 30;
string val;
//+------------------------------------------------------------------+
int start()
{
ButtonCreate(0,"óäàëèòü âñå",0,300,10,200,20,"óäàëèòü âñå","Arial",10,clrBlack,clrLime,clrLightGray,clrNONE,false);
ButtonCreate(0,"óäàëèòü ñòîï",0,300,30,200,20,"óäàëèòü ñòîï","Arial",10,clrBlack,clrLime,clrLightGray,clrNONE,false);
ButtonCreate(0,"óäàëèòü ëèìèò",0,300,50,200,20,"óäàëèòü ëèìèò","Arial",10,clrBlack,clrLime,clrLightGray,clrNONE,false);
ButtonCreate(0,"çàêðûòü âñå",0,300,70,200,20,"çàêðûòü âñå","Arial",10,clrBlack,clrLime,clrLightGray,clrNONE,false);
ButtonCreate(0,"çàêðûòü BUY",0,300,90,200,20,"çàêðûòü BUY","Arial",10,clrBlack,clrLime,clrLightGray,clrNONE,false);
ButtonCreate(0,"çàêðûòü SELL",0,300,110,200,20,"çàêðûòü SELL","Arial",10,clrBlack,clrLime,clrLightGray,clrNONE,false);
ButtonCreate(0,"çàêðûòü ñêðèïò",0,300,130,200,20,"çàêðûòü ñêðèïò","Arial",10,clrBlack,clrLime,clrLightGray,clrNONE,false);
string name="âûáîð";
double OOP,PriceMax,PriceMin;
double WPMax=WindowPriceMax();
double WPMin=WindowPriceMin();
if (ObjectFind(name)==-1)
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol())
{
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
if (PriceMax<OOP) PriceMax=OOP;
if (PriceMin>OOP || PriceMin==0) PriceMin=OOP;
}
}
}
if (PriceMax==0) PriceMax = WPMax-(WPMax-WPMin)/10;
if (PriceMin==0) PriceMin = WPMin+(WPMax-WPMin)/10;
ObjectCreate(name, OBJ_TREND, 0, 0,0, 0,0);
ObjectSet (name, OBJPROP_COLOR, Color);
ObjectSet (name, OBJPROP_TIME1 ,Time[0]);
ObjectSet (name, OBJPROP_PRICE1,PriceMax);
ObjectSet (name, OBJPROP_TIME2 ,Time[0]);
ObjectSet (name, OBJPROP_PRICE2,PriceMin);
ObjectSet (name, OBJPROP_WIDTH,5);
ObjectSet (name, OBJPROP_RAY,false);
}
val = StringConcatenate(" ",AccountCurrency());
while (ObjectFind(name)!=-1 && !IsStopped())
{
PriceMax = ObjectGet(name,OBJPROP_PRICE1);
PriceMin = ObjectGet(name,OBJPROP_PRICE2);
if (PriceMax<PriceMin) {PriceMax=PriceMin; PriceMin = ObjectGet(name,OBJPROP_PRICE1);}
string txt=StringConcatenate("Âûáèðàåì îðäåðà ïî öåíàì îòêðûòèÿ îò ",DoubleToStr(PriceMin,Digits)," äî ",DoubleToStr(PriceMax,Digits));
//---
int b=0,s=0,bs=0,ss=0,bl=0,sl=0,OT,Ticket;
double ProfitS=0,ProfitB=0,Profit;
for (i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol())
{
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
OT = OrderType();
Ticket=OrderTicket();
Profit = OrderProfit()+OrderSwap()+OrderCommission();
if (PriceMax>=OOP && PriceMin<=OOP)
{
if(OT==OP_BUY)
{
if (ObjectGetInteger(0,"çàêðûòü âñå",OBJPROP_STATE) || ObjectGetInteger(0,"çàêðûòü BUY",OBJPROP_STATE))
{
if (OrderClose(Ticket,OrderLots(),NormalizeDouble(Bid,Digits),slippage,Blue))
Comment("Çàêðûò BUY îðäåð ",Ticket," ïðèáûëü ",DoubleToStr(Profit,2),val);
else
{
Comment("Îøèáêà ",GetLastError()," çàêðûòèÿ BUY îðäåðà ",Ticket);
}
}
else
{
b++;
ProfitB+=Profit;
}
}
if(OT==OP_SELL)
{
if (ObjectGetInteger(0,"çàêðûòü âñå",OBJPROP_STATE) || ObjectGetInteger(0,"çàêðûòü SELL",OBJPROP_STATE))
{
if (OrderClose(Ticket,OrderLots(),NormalizeDouble(Ask,Digits),slippage,Red))
Comment("Çàêðûò SELL îðäåð ",Ticket," ïðèáûëü ",DoubleToStr(Profit,2),val);
else
{
Comment("Îøèáêà ",GetLastError()," çàêðûòèÿ SELL îðäåðà ",Ticket);
}
}
else
{
s++;
ProfitS+=Profit;
}
}
if(OT==OP_BUYSTOP)
{
if (ObjectGetInteger(0,"óäàëèòü âñå",OBJPROP_STATE) || ObjectGetInteger(0,"óäàëèòü ñòîï",OBJPROP_STATE))
{
if (OrderDelete(Ticket))
Comment("Óäàëåí BUYSTOP îðäåð ",Ticket);
else
Comment("Îøèáêà ",GetLastError()," óäàëåíèÿ BUYSTOP îðäåðà ",Ticket);
}
else bs++;
}
if(OT==OP_SELLSTOP)
{
if (ObjectGetInteger(0,"óäàëèòü âñå",OBJPROP_STATE) || ObjectGetInteger(0,"óäàëèòü ñòîï",OBJPROP_STATE))
{
if (OrderDelete(Ticket))
Comment("Óäàëåí SELLSTOP îðäåð ",Ticket);
else
Comment("Îøèáêà ",GetLastError()," óäàëåíèÿ SELLSTOP îðäåðà ",Ticket);
}
else ss++;
}
if(OT==OP_BUYLIMIT)
{
if (ObjectGetInteger(0,"óäàëèòü âñå",OBJPROP_STATE) || ObjectGetInteger(0,"óäàëèòü ëèìèò",OBJPROP_STATE))
{
if (OrderDelete(Ticket))
Comment("Óäàëåí BUYLIMIT îðäåð ",Ticket);
else
Comment("Îøèáêà ",GetLastError()," óäàëåíèÿ BUYLIMIT îðäåðà ",Ticket);
}
else bl++;
}
if(OT==OP_SELLLIMIT)
{
if (ObjectGetInteger(0,"óäàëèòü âñå",OBJPROP_STATE) || ObjectGetInteger(0,"óäàëèòü ëèìèò",OBJPROP_STATE))
{
if (OrderDelete(Ticket))
Comment("Óäàëåí SELLLIMIT îðäåð ",Ticket);
else
Comment("Îøèáêà ",GetLastError()," óäàëåíèÿ SELLLIMIT îðäåðà ",Ticket);
}
else sl++;
}
}
}
}
}
//---
txt = StringConcatenate(txt,"\n",b," ",DoubleToStr(ProfitB,2),val," buy\n",s," ",DoubleToStr(ProfitS,2),val," sell\n",bs," buyStop\n",ss," sellStop\n",bl," buyLimit\n",sl," sellLimit");
Comment(txt);
if (ObjectGetInteger(0,"çàêðûòü ñêðèïò",OBJPROP_STATE)) break;
Sleep(500);
RefreshRates();
}
ObjectDelete(name);
ObjectDelete("óäàëèòü âñå");
ObjectDelete("óäàëèòü ñòîï");
ObjectDelete("óäàëèòü ëèìèò");
ObjectDelete("çàêðûòü âñå");
ObjectDelete("çàêðûòü BUY");
ObjectDelete("çàêðûòü SELL");
ObjectDelete("çàêðûòü ñêðèïò");
Comment("Ñêðèïò çàêîí÷èë ñâîþ ðàáîòó\nÑêðèïòû è ñîâåòíèêè íà çàêàç http://cmillion.ru");
return(0);
}
//+------------------------------------------------------------------+
color Color(double P)
{
if (P>0) return(Lime);
if (P<0) return(Red);
return(Color);//Gray
}
//------------------------------------------------------------------
bool ButtonCreate(const long chart_ID=0, // ID ãðàôèêà
const string name="Button", // èìÿ êíîïêè
const int sub_window=0, // íîìåð ïîäîêíà
const long x=0, // êîîðäèíàòà ïî îñè X
const long y=0, // êîîðäèíàòà ïî îñè Y
const int width=50, // øèðèíà êíîïêè
const int height=18, // âûñîòà êíîïêè
const string text="Button", // òåêñò
const string font="Arial", // øðèôò
const int font_size=10, // ðàçìåð øðèôòà
const color clr=clrRed, // öâåò òåêñòà
const color clrON=clrLime, // öâåò ôîíà
const color clrOFF=clrBlack, // öâåò ôîíà
const color border_clr=clrNONE, // öâåò ãðàíèöû
const bool state=false) // íàæàòà/îòæàòà
{
if (ObjectFind(chart_ID,name)==-1)
{
ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0);
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,ANCHOR_CENTER);
ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,0);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,0);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,0);
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,1);
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,1);
ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
}
ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
color back_clr;
if (ObjectGetInteger(chart_ID,name,OBJPROP_STATE)) back_clr=clrON; else back_clr=clrOFF;
ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
return(true);
}
//--------------------------------------------------------------------
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
---