pipsometer cash+infolines v_1.1.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «pipsometer cash+infolines v_1.1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор Pipsometer Cash+Infolines для MetaTrader 4 отображает на графике текущие пипсовые доходности и убытки по открытым позициям, а также денежные профиты и убытки (плавающие и закрытые). Для каждой открытой позиции рисуются горизонтальные линии и текстовые метки с ценами входа, стоп-лосса и тейк-профита, а также информацией о лотах.
При включённой опции DisplayCashProfit индикатор подсчитывает итог по закрытым сделкам из истории и показывает его рядом с текущими значениями. Все текстовые объекты размещаются в заданном углу графика с настраиваемыми отступами и размерами шрифта.
При отсутствии открытых позиций и текстовых объектов индикатор автоматически удаляет все нарисованные элементы. Логика работы подтверждена анализом исходного кода: расчёты выполняются на каждом тике в функции start().
Настройки программы
| Настройка | Описание |
|---|---|
| DisplayInfoLines | Переключатель отображения горизонтальных линий и текстовых подписей для каждой открытой позиции. |
| DisplayCashProfit | Переключатель отображения денежных профитов и убытков (плавающих и закрытых) на графике. |
| BuyOpenLineColor | Цвет горизонтальных линий и подписей для открытых покупок. |
| SellOpenLineColor | Цвет горизонтальных линий и подписей для открытых продаж. |
| ProfitLineColor | Цвет горизонтальных линий и подписей тейк-профита. |
| StopLineColor | Цвет горизонтальных линий и подписей стоп-лосса. |
| IndicatorPosition | Заголовочный текстовый параметр, отображаемый в списке настроек как разделитель. |
| WhereToDisplay | Целочисленный параметр, определяющий окно размещения текстовых меток (0 — график). |
| Corner | Угол графика, в котором размещаются текстовые метки и линии. |
| Yposition | Вертикальный отступ текстовых меток от угла графика в пикселях. |
| Xposition | Горизонтальный отступ текстовых меток от угла графика в пикселях. |
| Ystep | Вертикальный шаг между метками подсчётов (пипсы, плавающий профит) в пикселях. |
| CounterFontSize | Размер шрифта для текстовых меток с подсчётами пипсов и денежных значений. |
| LineTextFontSize | Размер шрифта для подписей линий (лоты, тейк-профит, стоп-лосс). |
| VerticalTextGap | Вертикальный интервал в ценовых единицах между линиями при наличии нескольких открытых позиций одного типа. |
| HorizontalTextGap | Горизонтальный отступ в минутах для определения позиции текстовых меток по времени. |
Поиск по коду файла
#property description "Free software, can be freely used, copied or modified."
#property description "Free software, can be used, copied or modified freely."
#property description "-----------------------------------------------------------------------------------------------------------------------"
#property description "The indicator counts profits/losses in pips, profits/losses"
#property description "floating and closed in cash, and also shows some lines with the price"
#property description "of entry, stoploss and takeprofit next to a text label with lots and pips."
#property indicator_chart_window
extern bool DisplayInfoLines = true;
extern bool DisplayCashProfit = true;
extern color BuyOpenLineColor = clrLime;
extern color SellOpenLineColor = clrRed;
extern color ProfitLineColor = clrNavy;
extern color StopLineColor = clrDeepPink;
extern string IndicatorPosition = "----- Where to locate the indicator options -----";
extern int WhereToDisplay = 0;
extern ENUM_BASE_CORNER Corner = CORNER_RIGHT_LOWER;
extern int Yposition = 10;
extern int Xposition = 5;
extern int Ystep = 18;
extern int CounterFontSize = 10;
extern int LineTextFontSize = 10;
extern double VerticalTextGap = 1;
extern int HorizontalTextGap = 14;
double k,cen,pips,cash,done,BuyPrice,SelPrice,stop,take;
int i,OpenBuys,OpenSels,OpenTrades;
datetime TextTime;
int deinit()
{
DeleteAll();
ObjectDelete("ShwMagic"); ObjectDelete("Pips");
ObjectDelete("Float"); ObjectDelete("Done");
return(0);
}
int init()
{
// код доступен только после оплаты
}
int start()
{
// код доступен только после оплаты
}
TextTime=TimeCurrent()+HorizontalTextGap*Period()*60;
pips=0; cash=0; OpenTrades=0; OpenBuys=0; OpenSels=0;
for(i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol() != Symbol()) continue;
if(OrderType()==OP_BUY) {pips += Bid-OrderOpenPrice(); cash += OrderProfit()+OrderCommission(); OpenTrades++;}
if(OrderType()==OP_SELL){pips += OrderOpenPrice()-Ask; cash += OrderProfit()+OrderCommission(); OpenTrades++;}
}
if(pips>0) ObjectSetText("Pips", DoubleToStr(pips/k,1),CounterFontSize*2,"Arial Bold",clrLime);
else ObjectSetText("Pips", DoubleToStr(pips/k,1),CounterFontSize*2,"Calibri Bold",clrRed);
if(DisplayCashProfit)
{
if(cash>0) ObjectSetText("Float","Floating: "+DoubleToStr(cash,2),CounterFontSize,"Arial",clrLime);
else ObjectSetText("Float","Floating: "+DoubleToStr(cash,2),CounterFontSize,"Arial",clrRed);
}
if(DisplayInfoLines)
{
if(OpenTrades != 0)
{
for(i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol() != Symbol()) continue;
if(OrderType() == OP_BUY)
{
OpenBuys++; BuyPrice=OrderOpenPrice();
if(OpenBuys==2) BuyPrice=BuyPrice-VerticalTextGap; else if(OpenBuys==3) BuyPrice=BuyPrice-(2*VerticalTextGap);
else if(OpenBuys==4) BuyPrice=BuyPrice-(3*VerticalTextGap); else if(OpenBuys==5) BuyPrice=BuyPrice-(4*VerticalTextGap);
ObjectCreate("OpenLine"+i,OBJ_HLINE,0,0,OrderOpenPrice());
ObjectSet ("OpenLine"+i,OBJPROP_COLOR,BuyOpenLineColor);
ObjectCreate ("OpenText"+i,OBJ_TEXT,0,TextTime,BuyPrice);
ObjectSetText("OpenText"+i,"Buy: "+DoubleToStr(OrderLots(),2)+" Lots",LineTextFontSize,"Arial",BuyOpenLineColor);
if(OrderTakeProfit()>0)
{
ObjectCreate("TakeLine"+i,OBJ_HLINE,0,0,OrderTakeProfit());
ObjectSet ("TakeLine"+i,OBJPROP_COLOR,ProfitLineColor);
take=(OrderTakeProfit()-OrderOpenPrice())/k;
ObjectCreate ("TakeText"+i,OBJ_TEXT,0,TextTime,OrderTakeProfit());
ObjectSetText("TakeText"+i,"TakeProfit: "+DoubleToStr(take,1)+" Pips",LineTextFontSize,"Arial",ProfitLineColor);
if(ObjectGet("TakeLine"+i,OBJPROP_PRICE)!=OrderTakeProfit()) {ObjectMove("TakeLine"+i,0,TextTime,OrderTakeProfit()); ObjectMove("TakeText"+i,0,TextTime,OrderTakeProfit());}
}
Показано первые 50% кода (символов: 7323)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.