Menu
Brokers
MT4 Forex Brokers
MT5 Forex brokers
PayPal Brokers
Skrill Brokers
Oil Trading Brokers
Gold Trading Brokers
Web Browser Platform
Brokers with CFD Trading
ECN Brokers
Bitcoin FX Brokers
PAMM Forex Brokers
With Cent Accounts
With High Leverage
Cryptocurrency Brokers
Forums
All threads
New threads
New posts
Trending
Search forums
What's new
New threads
New posts
Latest activity
Log in
Register
Search
Search titles only
By:
Search titles only
By:
Menu
Install the app
Install
Reply to thread
Forums
Trading Platforms
MetaTrader Indicators
need help to modify this mt5 indicator a little bit
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Message
[QUOTE="paymanz, post: 218423, member: 70129"] Hi coders ,can you please help me modify this code . The pip show indicator . It shows pips of open positions but it shows sum of them . I need it to show average amount of them . For example currently if there is 2 positions open one at 10 pips and other one at 9 pips it shows 19 pips. I want it to show average of them which is 9.5 pips. Any help appreciated [CODE=mql5]//+------------------------------------------------------------------+ //| Show Pips.mq4 | //| Copyright 2017, TPSproTrading | //| http://www.tpsprotrading.com/ | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, TPSproTrading" #property link "https://www.tpsprotrading.com" #property version "2.2" #property strict #property indicator_chart_window //+------------------------------------------------------------------+ //| Parameters | //+------------------------------------------------------------------+ enum ENUM_SHOW_TYPE { a = 0, // Follow the price b = 1, // As comment c = 2, // In selected corner of the screen }; input ENUM_SHOW_TYPE show_type=0; // Type of appearance input ENUM_BASE_CORNER corner=CORNER_RIGHT_LOWER; // Graph corner for attachment input bool show_profit = false; // Show profit? input bool show_perc = false; // Show profit in percents? input bool show_spread = true; // Show spread? input bool show_time = true; // Show time to bar closure? input color colortext = clrBlack; // Text color input color ecProfit = clrBlue; // Profit color input color ecLoss = clrRed; // Loss color //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ enum ENUM_SEPARATOR { d = 124, // | e = 47, // / f = 46, // . g = 92, // \ h = 35, // # }; extern ENUM_SEPARATOR separator = 124; // Separator extern int coord_y = 12; // Y coordinate extern int indent = 5; // Indent in bars extern int text_size = 16; // Font size extern string text_font = "Calibry"; // Font string name_1 = "TPSpro_SMT"; string text_1 = ""; double n = 1.0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { int _dig=(int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS); if(_dig == 3|| _dig == 5) n *= 10; //--- indicator buffers mapping //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { Comment(""); ObjectDelete(0,name_1); } //+------------------------------------------------------------------+ //| 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 tu = 0.0, tp = 0.0, tr = 0.0, sp = (double)SymbolInfoInteger(Symbol(), SYMBOL_SPREAD); string _sp = "", _m = "", _s = ""; string sep = ""; StringConcatenate(sep," ",CharToString(char(separator))," "); if(AccountInfoDouble(ACCOUNT_BALANCE)==0.0) { text_1=""; } else { tu = GetProfitOpenPosInPoint(); tp = GetProfitOpenPos(); tr = tp * 100.0 / AccountInfoDouble(ACCOUNT_BALANCE); //Comment(tu, " ", tp, " ", tr, " ", AccountInfoDouble(ACCOUNT_BALANCE)); StringConcatenate(text_1,DoubleToString(tu,1)," pips"); if(show_profit) StringConcatenate(text_1,text_1,sep,DoubleToString(tp,2)," ",AccountInfoString(ACCOUNT_CURRENCY)); if(show_perc) StringConcatenate(text_1,text_1,sep,DoubleToString(tr,1),"%"); } //--- Time to bar expiry int m = int(SeriesInfoInteger(Symbol(), 0, SERIES_LASTBAR_DATE) + PeriodSeconds() - TimeCurrent()); int s = m%60; m=(m-s)/60; if(m < 10) _m = "0"; if(s < 10) _s = "0"; if(sp < 10) _sp = ".."; else if(sp < 100) _sp = "."; if(show_spread) { if(AccountInfoDouble(ACCOUNT_BALANCE)==0.0) StringConcatenate(text_1,text_1,DoubleToString(sp,0),_sp); else StringConcatenate(text_1,text_1,sep,DoubleToString(sp,0),_sp); } if(show_time) { if(AccountInfoDouble(ACCOUNT_BALANCE)==0.0 && !show_spread) StringConcatenate(text_1,text_1,_m,DoubleToString(m,0),":",_s,DoubleToString(s,0)); // Next bar in else StringConcatenate(text_1,text_1,sep,_m,DoubleToString(m,0),":",_s,DoubleToString(s,0)); // Next bar in } if(show_type==0) SetText(name_1,text_1,ColorOnSign(tp),TimeCurrent(),SymbolInfoDouble(Symbol(),SYMBOL_BID),text_size); if(show_type==1) Comment(text_1); if(show_type==2) SetLabel(name_1,text_1,ColorOnSign(tp),3,coord_y,corner,text_size); //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double GetProfitOpenPos(int mn=-1) { int orders = PositionsTotal(); double pr = 0.0; for(int i=0; i<orders; i++) { ResetLastError(); string symbol=PositionGetSymbol(i); if(symbol==Symbol()) { if(mn<0 || OrderGetInteger(ORDER_MAGIC)==mn) { pr+=PositionGetDouble(POSITION_PROFIT)+PositionGetDouble(POSITION_SWAP); } } } return (pr); } //+----------------------------------------------------------------------------+ //| Author : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Version : 01.08.2008 | //| Description : Returns the total profit of open items in points | //+----------------------------------------------------------------------------+ //| Parameters: | //| sy - name of the tool ("" - any character, | //| NULL - the current character) | //| op - operation (-1 - any position) | //| mn - MagicNumber (-1 - any magic) | //+----------------------------------------------------------------------------+ double GetProfitOpenPosInPoint(int op=-1,int mn=-1) { double pr=0.0; for(int i=0; i<PositionsTotal(); i++) { ResetLastError(); string symbol=PositionGetSymbol(i); if(symbol==Symbol()) { ulong type = OrderGetInteger(ORDER_TYPE), magic = OrderGetInteger(ORDER_MAGIC); if(op<0 || type==op) { if(mn<0 || magic==mn) { if(type==ORDER_TYPE_BUY) { pr+=(PositionGetDouble(POSITION_PROFIT)/PositionGetDouble(POSITION_VOLUME)/SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE))/n; } if(type==ORDER_TYPE_SELL) { pr+=(PositionGetDouble(POSITION_PROFIT)/PositionGetDouble(POSITION_VOLUME)/SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE))/n; } } } } } return (pr); } //+------------------------------------------------------------------+ //| Set text | //+------------------------------------------------------------------+ bool SetText(string nm,string tx,color cl,datetime time,double price,int fs) { time+=indent*PeriodSeconds(); ResetLastError(); //--- Create object "Text" if(ObjectFind(0,nm)<0) ObjectCreate(0,nm,OBJ_TEXT,0,time,price); ObjectMove(0,nm,0,time,price); ObjectSetString(0,nm,OBJPROP_TEXT,tx); ObjectSetString(0,nm,OBJPROP_FONT,text_font); ObjectSetInteger(0,nm,OBJPROP_FONTSIZE,fs); ObjectSetDouble(0,nm,OBJPROP_ANGLE,0.0); ObjectSetInteger(0,nm,OBJPROP_ANCHOR,ANCHOR_LEFT_LOWER); ObjectSetInteger(0,nm,OBJPROP_COLOR,cl); ObjectSetInteger(0,nm,OBJPROP_BACK,false); ObjectSetInteger(0,nm,OBJPROP_SELECTABLE,false); ObjectSetInteger(0,nm,OBJPROP_SELECTED,false); ObjectSetInteger(0,nm,OBJPROP_HIDDEN,true); return (true); } //+------------------------------------------------------------------+ //| Set label | //+------------------------------------------------------------------+ void SetLabel(string nm,string tx,color cl,int xd,int yd,int cr,int fs) { ResetLastError(); //--- Create object "Label" if(ObjectFind(0,nm)<0) ObjectCreate(0,nm,OBJ_LABEL,0,0,0); ObjectSetString(0,nm,OBJPROP_TEXT,tx); ObjectSetInteger(0,nm,OBJPROP_COLOR,cl); ObjectSetInteger(0,nm,OBJPROP_XDISTANCE,xd); ObjectSetInteger(0,nm,OBJPROP_YDISTANCE,yd); ObjectSetInteger(0,nm,OBJPROP_CORNER,cr); ObjectSetInteger(0,nm,OBJPROP_FONTSIZE,fs); ObjectSetInteger(0,nm,OBJPROP_HIDDEN,true); if(cr==CORNER_RIGHT_UPPER || cr==CORNER_RIGHT_LOWER) ObjectSetInteger(0,nm,OBJPROP_ANCHOR,ANCHOR_RIGHT); } //+------------------------------------------------------------------+ //| Returns the color by the sign of a number | //+------------------------------------------------------------------+ color ColorOnSign(double nu) { color lcColor=colortext; if(nu > 0) lcColor = ecProfit; if(nu < 0) lcColor = ecLoss; return(lcColor); } //+------------------------------------------------------------------+ [/CODE] [/QUOTE]
Insert quotes…
Verification
Post reply
Top
Bottom
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.
Accept
Learn more…