← К каталогу
Исходный код · ID 1209

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 и перейдите к оплате.

Стоимость полного кода
732,30₽ ≈ $8.95