Для МТ4 сделайте пожалуйста!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Zigid #:
Для МТ4 сделайте пожалуйста!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Для МТ4 сделайте пожалуйста!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Владимир не делает для МТ4. Поэтому ловите адаптацию индикатора от меня: https://www.mql5.com/ru/forum/439131
Индикаторы: Profit of the current symbol 2
- 2023.01.04
- www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Индикаторы: Profit of the current symbol 2
Ihor Herasko #:
Владимир не делает для МТ4. Поэтому ловите адаптацию индикатора от меня: https://www.mql5.com/ru/forum/439131
ТЫ Лучший!!!!!!!!!!!!!!! СПАСИБО ОГРОМНОЕ!!!!!!!!!!!!!!
hello ,, thanks for share , please can i know how can i align it to the corner left lower?
thanks
+ чтобы можно было перемещать мышкой по графику
//+------------------------------------------------------------------+ //| Profit of the current symbol 2.mq5 | //| Copyright © 2021, Vladimir Karputov | //| https://www.mql5.com/en/users/barabashkakvn | //+------------------------------------------------------------------+ #property copyright "Copyright © 2021, Vladimir Karputov" #property link "https://www.mql5.com/en/users/barabashkakvn" #property version "2.001" #property description "Profit of the current symbol" #property description "Additionally: 'Profit for all symbols' can be on the right, at the bottom or off" #property indicator_chart_window #property indicator_buffers 0 #property indicator_plots 0 //+------------------------------------------------------------------+ //| Enum Profit All | //+------------------------------------------------------------------+ enum ENUM_PROFIT_ALL { right=0, // right bottom=1, // bottom off=2, // off }; //--- #include <Trade\PositionInfo.mqh> //--- CPositionInfo m_position; // object of CPositionInfo class //--- input parameters input group "Common parameters" input string InpFont = "Consolas"; // Font input group "Profit of the current symbol" input string InpCurrentName = "Profit of the current symbol"; // Label name (Profit of the current symbol) input int InpCurrentFontSize = 72; // Font size (Profit of the current symbol) input group "Profit for all symbols" input ENUM_PROFIT_ALL InpProfitAll = bottom; // Profit All ... input string InpAllName = "Profit for all symbols"; // Label name (Profit for all symbols) input int InpAllFontSize = 36; // Font size (Profit for all symbols) //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- create a timer with a 9 second period EventSetTimer(9); //--- ENUM_ANCHOR_POINT anchor_current=ANCHOR_CENTER, anchor_all=ANCHOR_CENTER; switch(InpProfitAll) { case right: anchor_current=ANCHOR_RIGHT; anchor_all=ANCHOR_LEFT; break; case bottom: anchor_current=ANCHOR_LOWER; anchor_all=ANCHOR_UPPER; break; } LabelCreate(ChartID(),InpCurrentName,0,0,0,CORNER_LEFT_UPPER,"---",InpFont,InpCurrentFontSize,clrGray,0.0,anchor_current); if(InpProfitAll!=off) { LabelCreate(ChartID(),InpAllName,0,0,0,CORNER_LEFT_UPPER,"---",InpFont,InpAllFontSize,clrGray,0.0,anchor_all); } long x_distance; long y_distance; //--- set window size ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance); ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance); LabelMove(ChartID(),InpCurrentName,(int)(x_distance/2),(int)(y_distance/2)); if(InpProfitAll!=off) LabelMove(ChartID(),InpAllName,(int)(x_distance/2),(int)(y_distance/2)); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Indicator deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- destroy the timer after completing the work EventKillTimer(); //--- reset the error value ResetLastError(); //--- delete the label ObjectDelete(ChartID(),InpCurrentName); if(InpProfitAll!=off) ObjectDelete(ChartID(),InpAllName); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- double profit_current=0.0,profit_all=0.0; for(int i=PositionsTotal()-1; i>=0; i--) if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties { double profit=m_position.Swap()+m_position.Profit(); profit_all+=profit; if(m_position.Symbol()==Symbol()) profit_current+=profit; } LabelTextChange(ChartID(),InpCurrentName,profit_current); if(InpProfitAll!=off) LabelTextChange(ChartID(),InpAllName,profit_all); //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { //--- ENUM_ANCHOR_POINT anchor_current=ANCHOR_CENTER, anchor_all=ANCHOR_CENTER; switch(InpProfitAll) { case right: anchor_current=ANCHOR_RIGHT; anchor_all=ANCHOR_LEFT; break; case bottom: anchor_current=ANCHOR_LOWER; anchor_all=ANCHOR_UPPER; break; } //--- chart window size long x_distance; long y_distance; //--- set window size if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance)) { Print("Failed to get the chart width! Error code = ",GetLastError()); return; } if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance)) { Print("Failed to get the chart height! Error code = ",GetLastError()); return; }; //--- if(ObjectFind(ChartID(),InpCurrentName)<0) { LabelCreate(ChartID(),InpCurrentName,0,0,0,CORNER_LEFT_UPPER,"---",InpFont,InpCurrentFontSize,clrGray,0.0,anchor_current); LabelMove(ChartID(),InpCurrentName,(int)(x_distance/2),(int)(y_distance/2)); } if(InpProfitAll!=off) if(ObjectFind(ChartID(),InpAllName)<0) { LabelCreate(ChartID(),InpAllName,0,0,0,CORNER_LEFT_UPPER,"---",InpFont,InpAllFontSize,clrGray,0.0,anchor_all); LabelMove(ChartID(),InpAllName,(int)(x_distance/2),(int)(y_distance/2)); } } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- event of resizing the chart or modifying the chart properties using the properties dialog window if(id==CHARTEVENT_CHART_CHANGE) { //--- chart window size } } //+------------------------------------------------------------------+ //| Create a text label | //+------------------------------------------------------------------+ bool LabelCreate(const long chart_ID=0, // chart's ID const string name="Label", // label name const int sub_window=0, // subwindow index const int x=0, // X coordinate const int y=0, // Y coordinate const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // chart corner for anchoring const string text="Label", // text const string font="Arial", // font const int font_size=10, // font size const color clr=clrRed, // color const double angle=0.0, // text slope const ENUM_ANCHOR_POINT anchor=ANCHOR_CENTER, // anchor type const bool back=false, // in the background const bool selection=true, // highlight to move const bool hidden=false, // hidden in the object list const long z_order=0) // priority for mouse click { //--- reset the error value ResetLastError(); //--- create a text label if(!ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0)) { Print(__FUNCTION__, ": failed to create text label! Error code = ",GetLastError()); return(false); } //--- set label coordinates ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); //--- set the chart's corner, relative to which point coordinates are defined ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); //--- set the text ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); //--- set text font ObjectSetString(chart_ID,name,OBJPROP_FONT,font); //--- set font size ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); //--- set the slope angle of the text ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle); //--- set anchor type ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor); //--- set color ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- display in the foreground (false) or background (true) ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- enable (true) or disable (false) the mode of moving the label by mouse ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); //--- hide (true) or display (false) graphical object name in the object list ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); //--- set the priority for receiving the event of a mouse click in the chart ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); //--- successful execution return(true); } //+------------------------------------------------------------------+ //| Move the text label | //+------------------------------------------------------------------+ bool LabelMove(const long chart_ID=0, // chart's ID const string name="Label", // label name const int x=0, // X coordinate const int y=0) // Y coordinate { //--- reset the error value ResetLastError(); //--- move the text label if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x)) { Print(__FUNCTION__, ": failed to move X coordinate of the label! Error code = ",GetLastError()); return(false); } if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y)) { Print(__FUNCTION__, ": failed to move Y coordinate of the label! Error code = ",GetLastError()); return(false); } //--- successful execution return(true); } //+------------------------------------------------------------------+ //| Change the label text | //+------------------------------------------------------------------+ bool LabelTextChange(const long chart_ID=0, // chart's ID const string name="Label", // object name const double profit=0.0) // profit { //--- reset the error value ResetLastError(); //--- change object text color clr=clrGray; if(profit<0.0) clr=clrRed; if(profit>0.0) clr=clrBlue; //--- change the text string text=DoubleToString(profit,2); if(name==InpAllName) text=" (all "+text+")"; ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); //--- set color ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- successful execution return(true); } //+------------------------------------------------------------------+
Как можно скрывать нули, когда нет сделок?
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Profit of the current symbol 2:
Индикатор выводит по центру графика прибыль по текущему символу. Теперь каждые 9 секунд контроль наличия графических объектов
Автор: Vladimir Karputov