profit-loss-info-indicator@lifeindreamsworld_6255515370069694574.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «profit-loss-info-indicator@lifeindreamsworld_6255515370069694574.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Это пользовательский индикатор для MetaTrader 4, который отображает информацию о прибыли и убытках прямо на графике. Индикатор создаёт текстовые метки (OBJ_LABEL) в заданном углу экрана, показывая данные по открытым позициям и итоговые значения.
Основная функциональность включает четыре режима отображения: прибыль/убыток по каждой позиции, процент плавающей прибыли/убытки, дневной процент прибыли/убытки и процент прибыли/убытки за заданный период. Каждый режим может быть включён или отключён отдельно через соответствующие переключатели.
Расчёт процентов выполняется на основе баланса счёта и исторических данных ордеров. Для ежедневного и периодического расчёта доступна настройка начала отсчёта по времени брокера или локальному времени. Период может заканчиваться текущим моментом времени или заданной конечной датой.
Внешний вид настраивается через параметры шрифта, цвета для положительных и отрицательных значений, а также смещение по горизонтали и вертикали от выбранного угла графика.
Настройки программы
| Настройка | Описание |
|---|---|
| showPLPerPosition | Показать П/У по позициям — Переключатель отображения прибыли/убытки по каждой отдельной позиции. |
| showFloatPLPercentage | Показать % плавающей П/У — Переключатель отображения процента плавающей прибыли/убытки по текущим позициям. |
| showDailyPLPercentage | Показать дневной % П/У — Переключатель отображения дневного процента прибыли/убытки. |
| showPeriodePLPercentage | Показать % П/У за период — Переключатель отображения процента прибыли/убытки за заданный период. |
| notes1 | Подсказка 1 — Текстовая подсказка о том, что startDayAccordingTo определяет начало дня относительно баланса и зависит от часового пояса брокера или локального времени. |
| startDayAccordingTo | Начало дня по — Определяет начало дня для расчётов: 0 — время брокера, 1 — локальное время. |
| notes3 | Подсказка 3 — Текстовая подсказка о формате периода: yyyy.mm.dd hh:mm. |
| periodeStartTime | Время начала периода — Начальная дата и время периода для расчёта процентной прибыли/убытки. |
| useTodayAsEndTime | Использовать текущее время как конец периода — Переключатель, при активации текущий момент времени используется как конец периода вместо periodeEndTime. |
| periodeEndTime | Время окончания периода — Конечная дата и время периода для расчёта процентной прибыли/убытки. |
| myfont | Размер шрифта — Размер шрифта для текстовых меток на графике. |
| positifColor | Цель прибыли — Цвет отображения положительных значений прибыли/убытки. |
| negatifColor | Цвет убытка — Цвет отображения отрицательных значений прибыли/убытки. |
| Corner | Угол размещения — Угол графика, в котором размещаются текстовые метки (аналог ENUM_BASE_CORNER). |
| X_plus | Смещение по X — Горизонтальное смещение текстовых меток от выбранного угла в пикселях. |
| Y_plus | Смещение по Y — Вертикальное смещение текстовых меток от выбранного угла в пикселях. |
Поиск по коду файла
#property description "edited by eevviill"
#property description "view settings"
#property indicator_chart_window
extern bool showPLPerPosition = true;
extern bool showFloatPLPercentage = false;
extern bool showDailyPLPercentage = false;
extern bool showPeriodePLPercentage = false;
extern string notes1 = "startDayAccordingTo indicates the start-of-day reference (in relation to balance) following broker / localtime";
extern string notes2 = "0= broker time; 1= localtime";
extern int startDayAccordingTo = 1;
extern string notes3 = "periode format : yyyy.mm.dd hh:mm";
extern datetime periodeStartTime = D'2009.11.01 00:00';
extern bool useTodayAsEndTime = true;
extern datetime periodeEndTime = D'2009.11.04 00:00';
extern int myfont = 10; // This extern variable was added by Agoenk of Forexindo. Thanks for the contibution :)
extern color positifColor = Chartreuse;
extern color negatifColor = Magenta;
extern string emp1 = "//////////View settings";
extern ENUM_BASE_CORNER Corner = CORNER_LEFT_UPPER;
extern int X_plus = 0;
extern int Y_plus = 0;
int x = NULL;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
int idx;
if(x != NULL) {
for(idx = 0; idx<x; idx++) {
ObjectDelete("O"+idx);
ObjectDelete("PL"+idx);
}
ObjectDelete("h");
ObjectDelete("Total1");
ObjectDelete("Total2");
ObjectDelete("PercentageDailyLabel");
ObjectDelete("PercentageDaily");
ObjectDelete("PercentagePeriodeLabel");
ObjectDelete("PercentagePeriode");
ObjectDelete("PeriodeLabel");
ObjectDelete("PercentageFloatLabel");
ObjectDelete("PercentageFloat");
}
return(0);
}
void DisplayText(string objname, string text, int fontsize, color clr, double C, double X, double Y, string font)
{
ObjectDelete(objname);
ObjectCreate(objname, OBJ_LABEL, 0, 0, 0);
ObjectSetText(objname, text, fontsize, font, clr);
ObjectSet(objname, OBJPROP_CORNER, Corner);
ObjectSet(objname, OBJPROP_XDISTANCE, X+X_plus);
ObjectSet(objname, OBJPROP_YDISTANCE, Y+Y_plus);
}
double percentageValue(datetime start, datetime end){
int i;
double startTime = 86400 * (start / 86400);
double endTime;
if (startDayAccordingTo == 1) startTime = startTime + ((TimeCurrent() - TimeLocal()) / 100) * 100;
endTime = 86400 * (end / 86400) + 86400;
if (startDayAccordingTo == 1) endTime = endTime + ((TimeCurrent() - TimeLocal()) / 100) * 100;
double startBalance;
double histPL = 0;
double bruteHistPL = 0;
for(i=1; i <= OrdersHistoryTotal(); i++){
if(OrderSelect(OrdersHistoryTotal() - i, SELECT_BY_POS , MODE_HISTORY)==true) {
if(OrderCloseTime() >= startTime) {
bruteHistPL = bruteHistPL + OrderProfit();
if(OrderCloseTime() < endTime) histPL = histPL + OrderProfit();
}
}
}
startBalance = AccountBalance() - bruteHistPL;
if(TimeCurrent() >= startTime && TimeCurrent() < endTime){
for(i=OrdersTotal()-1; i >=0 ; i--){
if(OrderSelect(i, SELECT_BY_POS , MODE_TRADES)==true) {
histPL = histPL + OrderProfit();
}
}
}
return(NormalizeDouble(histPL / startBalance * 100, 4));
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int j;
int idx;
string text;
double PL;
double total;
int strLen;
double xPos;
if(x != NULL) {
for(idx = 0; idx<x; idx++) {
ObjectDelete("O"+idx);
ObjectDelete("PL"+idx);
}
ObjectDelete("Total1");
ObjectDelete("Total2");
}
text = "";
j=1;
total = 0;
DisplayText("h", "Profit/Loss Info ", myfont, Gold, 0, 5, 15 , "Arial Bold");
if(showPLPerPosition) {
for (int i = OrdersTotal()-1 ; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
{
text = OrderSymbol() + " (" + OrderTicket() + ")" + " : ";
strLen = StringLen(text);
xPos = NormalizeDouble(strLen * 0.65 * myfont,0) + 18;
if(OrderType() == OP_BUY) {
DisplayText("O"+j, OrderSymbol() + " (" + OrderTicket() + ")" + " : ", myfont, Chartreuse, 0, 5, (2 + j * 1.5) * myfont, "Arial bold");
PL = (OrderClosePrice()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
total = total + PL;
if(PL<0) DisplayText("PL"+j, DoubleToStr(PL, 0), myfont, negatifColor, 0, xPos, (2 + j * 1.5) * myfont, "Arial");
else if(PL>0) DisplayText("PL"+j, "+"+DoubleToStr(PL, 0), myfont, positifColor, 0, xPos, (2 + j * 1.5) * myfont, "Arial");
else DisplayText("PL"+j, DoubleToStr(PL, 0), myfont, positifColor, 0, xPos, (2 + j * 1.5) * myfont, "Arial");
}
else if(OrderType() == OP_SELL) {
DisplayText("O"+j, OrderSymbol() + " (" + OrderTicket() + ")" + " : ", myfont, MПоказано первые 50% кода (символов: 7623)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.