Orders Execution
0
Views
0
Downloads
0
Favorites
i-Breakeven_EqPips
//+------------------------------------------------------------------+
//| i-Breakeven.mq4 |
//| Copyright © 2007, RickD |
//| www.e2e-fx.net |
//+------------------------------------------------------------------+
#property copyright "© 2007 RickD"
#property link "www.e2e-fx.net"
//----
#define major 1
#define minor 0
//----
#property indicator_chart_window
#property indicator_buffers 0
//----
extern int Corner = 0;
extern int dy = 20;
extern color _Header = OrangeRed;
extern color _Text = RoyalBlue;
extern color _Data = CadetBlue;
extern color _Separator = MediumPurple;
//----
string prefix = "capital_";
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void init()
{
Comment("");
clear();
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void deinit()
{
Comment("");
clear();
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void clear()
{
string name;
int obj_total = ObjectsTotal();
//----
for(int i = obj_total - 1; i >= 0; i--)
{
name = ObjectName(i);
if(StringFind(name, prefix) == 0)
ObjectDelete(name);
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void start()
{
clear();
string Sym[];
double Equity[];
double Lots[];
ArrayResize(Sym, 0);
ArrayResize(Equity, 0);
ArrayResize(Lots, 0);
int cnt = OrdersTotal();
//----
for(int i = 0; i < cnt; i++)
{
//----
if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
continue;
int type = OrderType();
//----
if(type != OP_BUY && type != OP_SELL)
continue;
bool found = false;
int size = ArraySize(Sym);
double point1 = MarketInfo(Sym[i], MODE_POINT);
//----
for(int k = 0; k < size; k++)
{
//----
if(Sym[k] == OrderSymbol())
{
Equity[k] +=( OrderProfit() + OrderCommission() + OrderSwap())/Point;
//----
if(type == OP_BUY)
Lots[k] += OrderLots();
//----
if(type == OP_SELL)
Lots[k] -= OrderLots();
found = true;
break;
}
}
//----
if(found)
continue;
int ind = ArraySize(Sym);
ArrayResize(Sym, ind + 1);
Sym[ind] = OrderSymbol();
ArrayResize(Equity, ind + 1);
Equity[ind] = OrderProfit() + OrderCommission() + OrderSwap();
ArrayResize(Lots, ind + 1);
//----
if(type == OP_BUY)
Lots[k] = OrderLots();
//----
if(type == OP_SELL)
Lots[k] = -OrderLots();
}
string name = prefix + "symbols";
//----
if(ObjectFind(name) == -1)
{
ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
}
ObjectSet(name, OBJPROP_XDISTANCE, 30);
ObjectSet(name, OBJPROP_YDISTANCE, 35);
ObjectSetText(name, "Symbol", 10, "Tahoma", _Header);
ObjectSet(name, OBJPROP_CORNER, Corner);
name = prefix + "equity";
//----
if(ObjectFind(name) == -1)
ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
ObjectSet(name, OBJPROP_XDISTANCE, 130);
ObjectSet(name, OBJPROP_YDISTANCE, 35);
ObjectSetText(name, "Equity", 10, "Tahoma", _Header);
ObjectSet(name, OBJPROP_CORNER, Corner);
name = prefix + "breakeven";
//----
if(ObjectFind(name) == -1)
ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
ObjectSet(name, OBJPROP_XDISTANCE, 220);
ObjectSet(name, OBJPROP_YDISTANCE, 35);
ObjectSetText(name, "Breakeven", 10, "Tahoma", _Header);
ObjectSet(name, OBJPROP_CORNER, Corner);
name = prefix + "tmp1";
//----
if(ObjectFind(name) == -1)
ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
ObjectSet(name, OBJPROP_XDISTANCE, 20);
ObjectSet(name, OBJPROP_YDISTANCE, 35+dy);
ObjectSetText(name, "-----------------------------------------------------",
10, "Tahoma", _Separator);
ObjectSet(name, OBJPROP_CORNER, Corner);
double sum = 0;
string level0 = "";
size = ArraySize(Sym);
//----
for(i = 0; i < size; i++)
{
//----
if(Lots[i] == 0)
{
level0 = "Lock";
}
else
{
int dig = MarketInfo(Sym[i], MODE_DIGITS);
double point = MarketInfo(Sym[i], MODE_POINT);
double COP = Lots[i]*MarketInfo(Sym[i], MODE_TICKVALUE);
double val = MarketInfo(Sym[i], MODE_BID) - point*Equity[i] / COP;
level0 = DoubleToStr(val, dig);
}
name = prefix + "symbol"+i;
//----
if(ObjectFind(name) == -1)
ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
ObjectSet(name, OBJPROP_XDISTANCE, 30);
ObjectSet(name, OBJPROP_YDISTANCE, 35 + dy*(i + 2));
ObjectSetText(name, Sym[i], 10, "Tahoma", _Text);
ObjectSet(name, OBJPROP_CORNER, Corner);
name = prefix + "equity" + i;
//----
if(ObjectFind(name) == -1)
ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
ObjectSet(name, OBJPROP_XDISTANCE, 120);
ObjectSet(name, OBJPROP_YDISTANCE, 35 + dy*(i + 2));
string eq = DoubleToStr(Equity[i], 2);
//----
if(Equity[i] > 0) eq = "+" + eq;
eq = "Pips:" + eq;
ObjectSetText(name, eq, 10, "Tahoma", _Data);
ObjectSet(name, OBJPROP_CORNER, Corner);
name = prefix + "breakeven"+i;
//----
if(ObjectFind(name) == -1)
ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
ObjectSet(name, OBJPROP_XDISTANCE, 230);
ObjectSet(name, OBJPROP_YDISTANCE, 35 + dy*(i + 2));
ObjectSetText(name, level0, 10, "Tahoma", _Data);
ObjectSet(name, OBJPROP_CORNER, Corner);
sum += Equity[i];
}
name = prefix + "tmp2";
//----
if(ObjectFind(name) == -1)
ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
ObjectSet(name, OBJPROP_XDISTANCE, 20);
ObjectSet(name, OBJPROP_YDISTANCE, 35 + dy*(i + 2));
ObjectSetText(name, "-----------------------------------------------------",
10, "Tahoma", _Separator);
ObjectSet(name, OBJPROP_CORNER, Corner);
name = prefix + "total";
//----
if(ObjectFind(name) == -1)
ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
ObjectSet(name, OBJPROP_XDISTANCE, 30);
ObjectSet(name, OBJPROP_YDISTANCE, 35+dy*(i+3));
ObjectSetText(name, "Total", 10, "Tahoma", _Text);
ObjectSet(name, OBJPROP_CORNER, Corner);
name = prefix + "equity_total";
//----
if(ObjectFind(name) == -1)
ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
ObjectSet(name, OBJPROP_XDISTANCE, 120);
ObjectSet(name, OBJPROP_YDISTANCE, 35+dy*(i+3));
eq = DoubleToStr(sum, 2);
//----
if(Equity[i] > 0)
eq = "+" + eq;
eq = "Pips:" + eq;
ObjectSetText(name, eq, 10, "Tahoma", _Data);
ObjectSet(name, OBJPROP_CORNER, Corner);
}
//+------------------------------------------------------------------+
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
---