!xps v8 profit-5.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «!xps v8 profit-5.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный индикатор представляет собой информационную панель для MetaTrader 4, отображающую открытые ордера прямо на графике. При каждом обновлении он перебирает все текущие ордера и выводит их символы, значения прибыли/убытка и общий итог в виде текстовых меток на чарте.
Пользователь может ограничить отображение только текущим символом графика или просматривать ордера по всем инструментам. Цвета отображения настраиваются отдельно для ордеров на покупку и продажу, а также для положительных и отрицательных значений прибыли.
Панель использует стандартные средства рисования объектов MQL4 (OBJ_LABEL) для размещения текста в углу графика. При удалении индикатора с графика все созданные объекты корректно удаляются через функцию deinit().
Настройки программы
| Настройка | Описание |
|---|---|
| SellOrderclr | Цвет текста ордеров на продажу и отрицательной прибыли на панели. |
| BuyOrderclr | Цвет текста ордеров на покупку и положительной прибыли на панели. |
| FontName | Шрифт, используемый для текста на информационной панели. |
| fontsize | Размер шрифта текста на информационной панели. |
| spacing | Горизонтальное расстояние между столбцами информации на панели. |
| CurrentSymbolOnly | Переключатель: при включении отображаются только ордера по текущему символу графика, при выключении — все ордера по всем символам. |
Поиск по коду файла
#property indicator_chart_window
int Corner=1;
int Window=0;
color TextClr = Snow;
extern color SellOrderclr = Orange;
extern color BuyOrderclr = DeepSkyBlue;
color Warna_Rugi = SellOrderclr;
color Warna_Laba = BuyOrderclr;
extern string FontName = "Arial Black";
extern int fontsize = 9;
extern int spacing = 50;
double posX = 38;
double posY = 0;
extern bool CurrentSymbolOnly=false;
int Font=fontsize;
int x= NULL;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
for(int idx = 0; idx<OrdersTotal(); idx++) {
ObjectDelete("Panel242"+idx);
ObjectDelete("Panel243"+idx);
ObjectDelete("PL"+idx);
}
ObjectDelete("Panel241");
ObjectDelete("Panel243");
ObjectDelete("h");
ObjectDelete("Total1");
ObjectDelete("Total2");
return(0);
}
void DisplayText(string objname, string text,int fontsize2, color clr, double C, double X, double Y, string font)
{
ObjectDelete(objname);
ObjectCreate(objname, OBJ_LABEL, Window, 0, 0);
ObjectSetText(objname, text, fontsize, font, clr);
ObjectSet(objname, OBJPROP_CORNER, Corner);
ObjectSet(objname, OBJPROP_XDISTANCE, X+posX);
ObjectSet(objname, OBJPROP_YDISTANCE, Y+posY);
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int j;
int idx;
string text;
double PL;
double total;
if(x != NULL) {
for(idx = 0; idx<x; idx++) {
ObjectDelete("Panel242"+idx);
ObjectDelete("Panel243"+idx);
}
ObjectDelete("Total1");
ObjectDelete("Total2");
}
text = "";
j=0;
total = 0;
DisplayText("Panel241", "Trades", fontsize , TextClr, 0, -6, 20 , FontName);
for (int i = OrdersTotal()-1 ; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
{
if(CurrentSymbolOnly==true){
if(OrderType() == OP_BUY && ChartSymbol()==OrderSymbol()){
DisplayText("Panel242"+j, OrderSymbol(), fontsize, BuyOrderclr, 0, spacing, Font+28 + j * 18, FontName);
PL = (OrderClosePrice()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT)/10;
total = total + PL;
if(PL<0) DisplayText("Panel243"+j, DoubleToStr(PL, 0), fontsize, Warna_Rugi, 0, -30, Font+28 + j * 18, FontName);
else if(PL>0) DisplayText("Panel243"+j, "+"+DoubleToStr(PL, 0), fontsize, Warna_Laba, 0, -30, Font+28 + j * 18, FontName);
else DisplayText("Panel243"+j, DoubleToStr(PL, 0), fontsize, TextClr, 0, -30, Font+28 + j * 18,FontName);
j=j+1;
}
if(OrderType() == OP_SELL && ChartSymbol()==OrderSymbol()) {
DisplayText("Panel242"+j, OrderSymbol(), fontsize, SellOrderclr, 0, spacing, Font+28 + j * 18, FontName);
PL = (OrderOpenPrice()-OrderClosePrice())/MarketInfo(OrderSymbol(),MODE_POINT)/10;
total = total + PL;
if(PL<0) DisplayText("Panel243"+j, DoubleToStr(PL, 0), fontsize, Warna_Rugi, 0, -30, Font+28 + j * 18, FontName);
else if(PL>0) DisplayText("Panel243"+j,"+"+DoubleToStr(PL, 0), fontsize, Warna_Laba, 0, -30, Font+28 + j * 18, FontName);
else DisplayText("Panel243"+j,DoubleToStr(PL, 0), fontsize, TextClr, 0, -30, Font+28 + j * 18, FontName);
j=j+1;
}
DisplayText("Total1","Total", fontsize, TextClr, 0, spacing, Font+28 + j * 18, FontName);
if(total<0) DisplayText("Total2", DoubleToStr(total, 0), fontsize, Warna_Rugi, 0, -30, Font+28 + j * 18, FontName);
else if (total>0) DisplayText("Total2","+" + DoubleToStr(total, 0),fontsize , Warna_Laba, 0, -30, Font+28 + j * 18, FontName);
else DisplayText("Total2", DoubleToStr(total, 0), fontsize, White, 0, -30, Font+28 + j * 18, FontName);
x=j;
}else{
if(OrderType() == OP_BUY) {
DisplayText("Panel242"+j, OrderSymbol(), fontsize, BuyOrderclr, 0, spacing, Font+28 + j * 18, FontName);
PL = (OrderClosePrice()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT)/10;
total = total + PL;
if(PL<0) DisplayText("Panel243"+j, DoubleToStr(PL, 0), fontsize, Warna_Rugi, 0, -30, Font+28 + j * 18, FontName);
else if(PL>0) DisplayText("Panel243"+j, "+"+DoubleToStr(PL, 0), fontsize, Warna_Laba, 0, -30, Font+28 + j * 18, FontName);
else DisplayText("Panel243"+j, DoubleToStr(PL, 0), fontsize, TextClr, 0, -30, Font+28 + j * 18,FontName);
Показано первые 50% кода (символов: 5283)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.