Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
cm-management_v_0_4
//+------------------------------------------------------------------+
//| Ðó÷íàÿ óñòàíîâêà è ïåðåìåùåíèå îðäåðîâ è ñòîïîâ ñ ïîìîùüþ ëèíèé |
//| Manual Open and Modify orders.mq4 |
//| Copyright © 2012, Õëûñòîâ Âëàäèìèð |
//| cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Õëûñòîâ Âëàäèìèð"
#property link "cmillion@narod.ru"
#property show_inputs
#include <WinUser32.mqh>
//--------------------------------------------------------------------
extern int Magic = -1; //óíèêàëüíûé íîìåð îðäåðîâ êîòîðûìè óïðàâëÿåò ñîâåòíèê (-1 âñå îðäåðà ñ ëþáûìè ìàãèêàìè)
double OOP,OSL,OTP,Lines[3][300],LinePrice;
int tip,Ticket,n=0;
string NameLine;
//--------------------------------------------------------------------
int init()
{
Comment("Copyright © 2012 cmillion@narod.ru");
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || Magic==-1))
{
tip = OrderType();
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
Ticket = OrderTicket();
if (tip>1)
{
NameLine = StringConcatenate(StrOrder(tip)," ",Ticket);
drawline(NameLine, ColorOrder(tip), OOP);
drawtext(NameLine, ColorOrder(tip), OOP);
}
OSL = NormalizeDouble(OrderStopLoss(),Digits);
if (OSL!=0)
{
NameLine = StringConcatenate(StrOrder(6)," ",Ticket);
drawline(NameLine, ColorOrder(6), OSL);
drawtext(NameLine, ColorOrder(6), OSL);
}
OTP = NormalizeDouble(OrderTakeProfit(),Digits);
if (OTP!=0)
{
NameLine = StringConcatenate(StrOrder(7)," ",Ticket);
drawline(NameLine, ColorOrder(7), OTP);
drawtext(NameLine, ColorOrder(7), OTP);
}
}
}
}
}
//--------------------------------------------------------------------
int deinit()
{
remove_objects("cm-");
Comment("");
}
//--------------------------------------------------------------------
int start()
{
while(!IsStopped()){RefreshRates();
Comment("Copyright © 2012 cmillion@narod.ru","\n",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
//0 - òèï
//0 - OP_BUY
//1 - OP_SELL
//2 - OP_BUYLIMIT
//3 - OP_BUYSTOP
//4 - OP_SELLLIMIT
//5 - OP_SELLSTOP
//6 - ñòîïëîññ
//7 - òåéêïðîôèò
//1 - öåíà
//2 - òèêåò
n=0;
ArrayInitialize(Lines,0);
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || Magic==-1))
{
tip = OrderType();
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
Ticket = OrderTicket();
if (tip>1)
{
Lines[0][n] = tip;
Lines[1][n] = OOP;
Lines[2][n] = Ticket;
n++;
}
OSL = NormalizeDouble(OrderStopLoss(),Digits);
if (OSL!=0)
{
Lines[0][n] = 6;
Lines[1][n] = OSL;
Lines[2][n] = Ticket;
n++;
}
OTP = NormalizeDouble(OrderTakeProfit(),Digits);
if (OTP!=0)
{
Lines[0][n] = 7;
Lines[1][n] = OTP;
Lines[2][n] = Ticket;
n++;
}
}
}
}
//---
int ok;
for (i=0; i<n; i++)
{
NameLine = StringConcatenate(StrOrder(Lines[0][i])," ",Lines[2][i]);
if (ObjectFind(StringConcatenate("cm-",NameLine))==-1)//óäàëÿåì îðäåð
{
if (Lines[0][i]<6)//îòëîæêà
{
if (Lines[0][i]>1)
{
ok=MessageBox(StringConcatenate("Óäàëèòü îðäåð ",NameLine," ?"),"", MB_YESNO|MB_TOPMOST);
if (ok==IDYES)
{
Ticket = Lines[2][i];
if (!OrderDelete(Ticket)) Print("Error OrderDelete ",GetLastError());
else
{
ObjectDelete(StringConcatenate("cm--",NameLine));
ObjectDelete(StringConcatenate("cm--",StrOrder(6)," ",Lines[2][i]));
ObjectDelete(StringConcatenate("cm--",StrOrder(7)," ",Lines[2][i]));
}
}
else
{
drawline(NameLine, ColorOrder(Lines[0][i]), Lines[1][i]);
drawtext(NameLine, ColorOrder(Lines[0][i]), Lines[1][i]);
}
}
}
else//ñòîïû
{
Ticket = Lines[2][i];
if (OrderSelect(Ticket,SELECT_BY_TICKET))
{
if (Lines[0][i]==6)//ñòîïëîññ
{
ok=MessageBox(StringConcatenate("Óäàëèòü ñòîïëîññ îðäåðà ",NameLine," ?"),"", MB_YESNO|MB_TOPMOST);
if (ok==IDYES)
{
if (!OrderModify(Ticket,OrderOpenPrice(),0,OrderTakeProfit(),0,ColorOrder(Lines[0][i]))) Print("Error OrderModify StopLoss = 0 ",GetLastError());
else ObjectDelete(StringConcatenate("cm--",NameLine));
}
else
{
drawline(NameLine, ColorOrder(Lines[0][i]), Lines[1][i]);
drawtext(NameLine, ColorOrder(Lines[0][i]), Lines[1][i]);
}
}
else //òåéêïðîôèò
{
ok=MessageBox(StringConcatenate("Óäàëèòü òåéêïðîôèò îðäåðà ",NameLine," ?"),"", MB_YESNO|MB_TOPMOST);
if (ok==IDYES)
{
if (!OrderModify(Ticket,OrderOpenPrice(),OrderStopLoss(),0,0,ColorOrder(Lines[0][i]))) Print("Error OrderModify TakeProfit = 0 ",GetLastError());
else ObjectDelete(StringConcatenate("cm--",NameLine));
}
else
{
drawline(NameLine, ColorOrder(Lines[0][i]), Lines[1][i]);
drawtext(NameLine, ColorOrder(Lines[0][i]), Lines[1][i]);
}
}
}
}
}
else//ïåðåìåùàåì
{
LinePrice = NormalizeDouble(ObjectGet(StringConcatenate("cm-",NameLine),OBJPROP_PRICE1),Digits);
if (Lines[0][i]<6)//îòëîæêà
{
if (Lines[0][i]>1 && Lines[1][i] != LinePrice)
{
Ticket = Lines[2][i];
if (OrderSelect(Ticket,SELECT_BY_TICKET))
{
if (!OrderModify(Ticket,LinePrice,OrderStopLoss(),OrderTakeProfit(),0,ColorOrder(Lines[0][i]))) Print("Error OrderModify StopLoss = 0 ",GetLastError());
else
{
drawline(NameLine, ColorOrder(Lines[0][i]), LinePrice);
drawtext(NameLine, ColorOrder(Lines[0][i]), LinePrice);
}
}
}
}
else//ñòîïû
{
Ticket = Lines[2][i];
if (Lines[0][i]==6)//ñòîïëîññ
{
if (Lines[1][i] != LinePrice)
{
if (OrderSelect(Ticket,SELECT_BY_TICKET))
{
if (!OrderModify(Ticket,OrderOpenPrice(),LinePrice,OrderTakeProfit(),0,ColorOrder(Lines[0][i]))) Print("Error OrderModify StopLoss = 0 ",GetLastError());
else
{
drawline(NameLine, ColorOrder(Lines[0][i]), LinePrice);
drawtext(NameLine, ColorOrder(Lines[0][i]), LinePrice);
}
}
}
}
else //òåéêïðîôèò
{
if (Lines[1][i] != LinePrice)
{
if (OrderSelect(Ticket,SELECT_BY_TICKET))
{
if (!OrderModify(Ticket,OrderOpenPrice(),OrderStopLoss(),LinePrice,0,ColorOrder(Lines[0][i]))) Print("Error OrderModify TakeProfit = 0 ",GetLastError());
else
{
drawline(NameLine, ColorOrder(Lines[0][i]), LinePrice);
drawtext(NameLine, ColorOrder(Lines[0][i]), LinePrice);
}
}
}
}
}
}
}
//---
n=0;
ArrayInitialize(Lines,0);
for (i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || Magic==-1))
{
tip = OrderType();
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
Ticket = OrderTicket();
if (tip>1)
{
Lines[0][n] = tip;
Lines[1][n] = OOP;
Lines[2][n] = Ticket;
n++;
}
OSL = NormalizeDouble(OrderStopLoss(),Digits);
if (OSL!=0)
{
Lines[0][n] = 6;
Lines[1][n] = OSL;
Lines[2][n] = Ticket;
n++;
}
OTP = NormalizeDouble(OrderTakeProfit(),Digits);
if (OTP!=0)
{
Lines[0][n] = 7;
Lines[1][n] = OTP;
Lines[2][n] = Ticket;
n++;
}
}
}
}
for (i=0; i<ObjectsTotal(); i++)
{
NameLine = ObjectName(i);
if (ObjectType(NameLine)!=OBJ_HLINE) continue;
if (StringSubstr(NameLine,0,3)!="cm-") continue;
LinePrice = NormalizeDouble(ObjectGet(NameLine,OBJPROP_PRICE1),Digits);
bool del=true;
for (int j=0; j<n; j++)
{
if (LinePrice==Lines[1][j])
{
drawtext(StringConcatenate(StrOrder(Lines[0][j])," ",Lines[2][j]), ColorOrder(Lines[0][j]), Lines[1][j]);
del=false;
break;
}
}
if (del) {ObjectDelete(NameLine);ObjectDelete(StringConcatenate(NameLine," "));}
}
//---
Sleep(500);}
return(0);
}
//--------------------------------------------------------------------
int drawline(string NameL, color col, double Y1)
{
string NT = StringConcatenate("cm-",NameL);
if (ObjectFind(NT)!=-1)
{
if (Y1==NormalizeDouble(ObjectGet(NT,OBJPROP_PRICE1),Digits)) return;
ObjectDelete (NT);
}
ObjectCreate(NT, OBJ_HLINE, 0,0,Y1,0,0);
ObjectSet (NT, OBJPROP_COLOR, col);
ObjectSet (NT, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet (NT, OBJPROP_WIDTH, 1);
ObjectSet (NT, OBJPROP_BACK, false);
ObjectSet (NT, OBJPROP_RAY, false);
return;
}
//--------------------------------------------------------------------
int drawtext(string NameL, color col, double Y1)
{
string NT = StringConcatenate("cm--",NameL);
if (ObjectFind(NT)!=-1)
{
if (Y1==NormalizeDouble(ObjectGet(NT,OBJPROP_PRICE1),Digits)) return;
ObjectDelete (NT);
}
ObjectCreate (NT, OBJ_TEXT,0,Time[WindowFirstVisibleBar()-WindowFirstVisibleBar()/4],Y1,0,0,0,0);
ObjectSetText(NT, NameL ,8,"Arial");
ObjectSet (NT, OBJPROP_COLOR, col);
}
//--------------------------------------------------------------------
color ColorOrder(int tip)
{
if (tip==OP_BUY) return(Lime);
if (tip==OP_BUYSTOP) return(Lime);
if (tip==OP_SELL) return(Red);
if (tip==OP_SELLSTOP) return(Red);
if (tip==OP_SELLLIMIT) return(Red);
if (tip==OP_BUYLIMIT) return(Lime);
if (tip==6) return(Red);
if (tip==7) return(Blue);
return(Gray);
}
//------------------------------------------------------------------
string StrOrder(int tip)
{
if (tip==OP_BUY) return("Buy");
if (tip==OP_BUYSTOP) return("BuyStop");
if (tip==OP_SELL) return("Sell");
if (tip==OP_SELLSTOP) return("SellStop");
if (tip==OP_SELLLIMIT) return("SellLimit");
if (tip==OP_BUYLIMIT) return("BuyLimit");
if (tip==6) return("SL");
if (tip==7) return("TP");
return(Gray);
}
//------------------------------------------------------------------
int remove_objects(string PreName)
{
for(int i=ObjectsTotal()-1; i>=0; i--)
{
string Name=ObjectName(i);
if (StringSubstr(Name,0,StringLen(PreName))==PreName) ObjectDelete(Name);
}
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
---