gryps2/IND-code/Yoritsugu/Disp_Total_Pips.mq4

215 lines
21 KiB
MQL4
Raw Permalink Normal View History

2025-05-30 14:58:21 +02:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| Disp_Total_pips.mq4 |
//| Copyright 2025, Yoritsugu |
//| 000000000000000 |
//+------------------------------------------------------------------+
#property copyright "<00>0<EFBFBD>0d0P0"
#property link "https://note.com/yoritugu"
#property version "1.0"
#property strict
#property indicator_chart_window
// eQ<EFBFBD>R<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
extern string _Common = ""; //<EFBFBD>%h<EFBFBD>:y-<EFBFBD><EFBFBD>[
input ENUM_TIMEFRAMES Disp_TimeFrame = PERIOD_M5; // <EFBFBD>f<EFBFBD>en0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y$Pn030<EFBFBD>y<EFBFBD>NM<EFBFBD>k0<EFBFBD>f<EFBFBD>e <EFBFBD>
input int Rireki_M = 999; // N<EFBFBD><EFBFBD>S0<EFBFBD>0gn0e\tkh<EFBFBD>:y
input int P_UD = 0; // Totalrs<EFBFBD>_Pipsh<EFBFBD>:yMOn<EFBFBD><EFBFBD>teϑ<EFBFBD> N<EFBFBD>eT<EFBFBD>y<EFBFBD> <EFBFBD>
input color TotalColor = clrWhite; // Totalrs<EFBFBD>_Pipsn0r<EFBFBD><EFBFBD><EFBFBD>eW[ <EFBFBD>
input color HP_Color = clrYellow; // Totalrs<EFBFBD>_Pipsn0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>O gBfn0r<EFBFBD><EFBFBD><EFBFBD>eW[ <EFBFBD>
input color Line_Color = clrAqua; // <EFBFBD>0<EFBFBD>0<EFBFBD>0n0r<EFBFBD>
input color P_Color = clrAqua; // )R<EFBFBD>vn0r<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0
Nn0<EFBFBD>eW[ <EFBFBD>
input color L_Color = clrYellow; // d1Yn0r<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>0<EFBFBD>0
Nn0<EFBFBD>eW[ <EFBFBD>
extern string _MagicNumber = ""; //<EFBFBD>%<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0n0-<EFBFBD><EFBFBD>[
input int MagicNumber0 = 0; //^<EFBFBD>h<EFBFBD>:y<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0
input int MagicNumber1 = 0; //<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>01
input int MagicNumber2 = 0; //<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>02
input int MagicNumber3 = 0; //<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>03
input int MagicNumber4 = 0; //<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>04
input int MagicNumber5 = 0; //<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>05
input int MagicNumber6 = 0; //<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>06
input int MagicNumber7 = 0; //<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>07
input int MagicNumber8 = 0; //<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>08
input int MagicNumber9 = 0; //<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>09
input int MagicNumber10 = 0; //<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>010
// <EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0 Ype
//<EFBFBD>0<EFBFBD>0<EFBFBD>0<EFBFBD>0h<EFBFBD>:y<EFBFBD><EFBFBD>R
datetime EarnPipsTime=0;
int HistoryTotal=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit(){
ObjectsDeleteAll(0, "TotalEarnPips");
label("TotalEarnPips"," Total Profit(Pips) ",0,40+P_UD,0,10,CORNER_RIGHT_UPPER,ANCHOR_RIGHT);
ObjectSetInteger(0,"TotalEarnPips", OBJPROP_COLOR, TotalColor);
label("TotalEarnPipsTime",TimeToStr(iTime(NULL,PERIOD_MN1,Rireki_M))+"^<5E> ",0,25+P_UD,0,10,CORNER_RIGHT_UPPER,ANCHOR_RIGHT);
ObjectSetInteger(0,"TotalEarnPipsTime", OBJPROP_COLOR, TotalColor);
label("TotalEarnPips"+IntegerToString(MagicNumber1),"",0,55+P_UD,0,10,CORNER_RIGHT_UPPER,ANCHOR_RIGHT);
label("TotalEarnPips"+IntegerToString(MagicNumber2),"",0,70+P_UD,0,10,CORNER_RIGHT_UPPER,ANCHOR_RIGHT);
label("TotalEarnPips"+IntegerToString(MagicNumber3),"",0,85+P_UD,0,10,CORNER_RIGHT_UPPER,ANCHOR_RIGHT);
label("TotalEarnPips"+IntegerToString(MagicNumber4),"",0,100+P_UD,0,10,CORNER_RIGHT_UPPER,ANCHOR_RIGHT);
label("TotalEarnPips"+IntegerToString(MagicNumber5),"",0,115+P_UD,0,10,CORNER_RIGHT_UPPER,ANCHOR_RIGHT);
label("TotalEarnPips"+IntegerToString(MagicNumber6),"",0,130+P_UD,0,10,CORNER_RIGHT_UPPER,ANCHOR_RIGHT);
label("TotalEarnPips"+IntegerToString(MagicNumber7),"",0,145+P_UD,0,10,CORNER_RIGHT_UPPER,ANCHOR_RIGHT);
label("TotalEarnPips"+IntegerToString(MagicNumber8),"",0,160+P_UD,0,10,CORNER_RIGHT_UPPER,ANCHOR_RIGHT);
label("TotalEarnPips"+IntegerToString(MagicNumber9),"",0,175+P_UD,0,10,CORNER_RIGHT_UPPER,ANCHOR_RIGHT);
label("TotalEarnPips"+IntegerToString(MagicNumber10),"",0,190+P_UD,0,10,CORNER_RIGHT_UPPER,ANCHOR_RIGHT);
if(MagicNumber1!=MagicNumber0){HistoryEarnPips(MagicNumber1);}
if(MagicNumber2!=MagicNumber0){HistoryEarnPips(MagicNumber2);}
if(MagicNumber3!=MagicNumber0){HistoryEarnPips(MagicNumber3);}
if(MagicNumber4!=MagicNumber0){HistoryEarnPips(MagicNumber4);}
if(MagicNumber5!=MagicNumber0){HistoryEarnPips(MagicNumber5);}
if(MagicNumber6!=MagicNumber0){HistoryEarnPips(MagicNumber6);}
if(MagicNumber7!=MagicNumber0){HistoryEarnPips(MagicNumber7);}
if(MagicNumber8!=MagicNumber0){HistoryEarnPips(MagicNumber8);}
if(MagicNumber9!=MagicNumber0){HistoryEarnPips(MagicNumber9);}
if(MagicNumber10!=MagicNumber0){HistoryEarnPips(MagicNumber10);}
//SetChart();
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit(){
ObjectsDeleteAll(0, "EarnPips");
ObjectsDeleteAll(0, "TotalEarnPips");
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
// OnCalculate<EFBFBD><EFBFBD>pe
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[])
{
if(EarnPipsTime != iTime(NULL,Disp_TimeFrame,0) && Seconds() > 30 ){
ObjectsDeleteAll(0, "EarnPips");
if(MagicNumber1!=MagicNumber0){HistoryEarnPips(MagicNumber1);}
if(MagicNumber2!=MagicNumber0){HistoryEarnPips(MagicNumber2);}
if(MagicNumber3!=MagicNumber0){HistoryEarnPips(MagicNumber3);}
if(MagicNumber4!=MagicNumber0){HistoryEarnPips(MagicNumber4);}
if(MagicNumber5!=MagicNumber0){HistoryEarnPips(MagicNumber5);}
if(MagicNumber6!=MagicNumber0){HistoryEarnPips(MagicNumber6);}
if(MagicNumber7!=MagicNumber0){HistoryEarnPips(MagicNumber7);}
if(MagicNumber8!=MagicNumber0){HistoryEarnPips(MagicNumber8);}
if(MagicNumber9!=MagicNumber0){HistoryEarnPips(MagicNumber9);}
if(MagicNumber10!=MagicNumber0){HistoryEarnPips(MagicNumber10);}
EarnPipsTime = iTime(NULL,Disp_TimeFrame,0);
}
return(rates_total);
}
//Label<EFBFBD><EFBFBD>pe
void label(string name, string text, int x, int y, int font, int fontsize,ENUM_BASE_CORNER corner,ENUM_ANCHOR_POINT anchor){
ObjectCreate(0, name, OBJ_LABEL, 0, 0, 0);
ObjectSetString(0, name, OBJPROP_TEXT, text);
ObjectSetInteger(0, name, OBJPROP_COLOR, clrLightGray);
ObjectSetInteger(0, name, OBJPROP_SELECTABLE, false);
ObjectSetInteger(0, name, OBJPROP_HIDDEN, true);
ObjectSetString(0, name, OBJPROP_FONT, font == 1 ? "Times New Roman" : "MS fg");
ObjectSetInteger(0, name, OBJPROP_FONTSIZE, fontsize );
ObjectSetInteger(0, name, OBJPROP_CORNER, corner);
ObjectSetInteger(0, name, OBJPROP_ANCHOR, anchor);
ObjectSetInteger(0, name, OBJPROP_XDISTANCE, x );
ObjectSetInteger(0, name, OBJPROP_YDISTANCE, y );
ObjectSetInteger(0, name, OBJPROP_STATE, false);
ObjectSetInteger(0, name, OBJPROP_BACK, false);
return;
}
void HistoryEarnPips(int magicnumber){
double totalpips1 = 0;
double totalpips2 = 0;
bool flag = false;
int res;
datetime MT1=iTime(NULL,PERIOD_MN1,Rireki_M);
for(int i = OrdersHistoryTotal() - 1; i >= 0; i--){
res = OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if(res == false)continue;
if(OrderCloseTime()< MT1)continue;
if(OrderSymbol() != Symbol() || OrderType() > 1 || OrderMagicNumber() != magicnumber)continue;
totalpips1 += EarnPipsLine(OrderTicket(),OrderOpenTime(),OrderOpenPrice(),OrderCloseTime(),OrderClosePrice(),OrderType());
}
ObjectSetString(0,"TotalEarnPips"+IntegerToString(magicnumber),OBJPROP_TEXT, IntegerToString(magicnumber)+" : "+DoubleToString(totalpips1, 1));
ObjectSetInteger(0,"TotalEarnPips"+IntegerToString(magicnumber), OBJPROP_COLOR, TotalColor);
for(int i = OrdersTotal() - 1; i >= 0; i--){
res = OrderSelect(i, SELECT_BY_POS);
if(res == false)continue;
if(OrderSymbol() != Symbol() || OrderType() > 1 || OrderMagicNumber() != magicnumber)continue;
totalpips2 += EarnPipsLine(OrderTicket(),OrderOpenTime(),OrderOpenPrice(),Time[0], OrderType() == 0 ? Bid : Ask,OrderType());
flag = true;
}
if(flag){
ObjectSetString(0,"TotalEarnPips"+IntegerToString(magicnumber),OBJPROP_TEXT,"Holding position "+IntegerToString(magicnumber)+" : "+DoubleToString(totalpips1, 1));
ObjectSetInteger(0,"TotalEarnPips"+IntegerToString(magicnumber), OBJPROP_COLOR, HP_Color);
}
}
double EarnPipsLine(int ticket, datetime opentime, double openprice, datetime closetime, double closeprice, int type){
double pips = (type == 0 ? closeprice - openprice : openprice - closeprice) / Point() * 0.1 ;
ObjectDelete("EarnPipsLine" + IntegerToString(ticket));
ObjectCreate(0,"EarnPipsLine" + IntegerToString(ticket), OBJ_TREND, 0, opentime, openprice, closetime, closeprice);
ObjectSetInteger(0, "EarnPipsLine" + IntegerToString(ticket), OBJPROP_RAY_RIGHT, false);
ObjectSetInteger(0, "EarnPipsLine" + IntegerToString(ticket), OBJPROP_COLOR, type == 0 ? Line_Color : Line_Color); //<EFBFBD>0<EFBFBD>0<EFBFBD>0n0r<EFBFBD>
ObjectSetInteger(0, "EarnPipsLine" + IntegerToString(ticket), OBJPROP_SELECTABLE, false);
ObjectDelete("EarnPipsText" + IntegerToString(ticket));
ObjectCreate(0, "EarnPipsText" + IntegerToString(ticket), OBJ_TEXT, 0, (datetime)(((double)closetime - (double)opentime) * 0.8+(double)opentime), (closeprice-openprice) * 0.8+(openprice) );
ObjectSetInteger(0, "EarnPipsText" + IntegerToString(ticket), OBJPROP_COLOR, pips < 0 ? L_Color : type == 0 ? P_Color : P_Color);
ObjectSetInteger(0, "EarnPipsText" + IntegerToString(ticket), OBJPROP_SELECTABLE, false);
ObjectSetInteger(0, "EarnPipsText" + IntegerToString(ticket), OBJPROP_FONTSIZE, 11);
ObjectSetInteger(0, "EarnPipsText" + IntegerToString(ticket), OBJPROP_ANCHOR, ANCHOR_CENTER);
ObjectSetString(0, "EarnPipsText" + IntegerToString(ticket), OBJPROP_TEXT, DoubleToString(pips, 1));
ObjectSetString(0, "EarnPipsText" + IntegerToString(ticket), OBJPROP_FONT, "Arial Black");
return(pips);
}
void SetChart(){
ChartSetInteger(0, CHART_SHOW_DATE_SCALE, true);
ChartSetInteger(0, CHART_SHOW_PRICE_SCALE, true);
ChartSetInteger(0, CHART_FOREGROUND, false);
ChartSetInteger(0, CHART_SHOW_GRID, false);
ChartSetInteger(0, CHART_SHOW_ONE_CLICK, false);
ChartSetInteger(0, CHART_SHOW_OHLC, true);
ChartSetInteger(0, CHART_COLOR_FOREGROUND, clrLightGray);
ChartSetInteger(0, CHART_COLOR_BACKGROUND, clrBlack);
ChartSetInteger(0, CHART_COLOR_CANDLE_BEAR, clrBlack);
ChartSetInteger(0, CHART_COLOR_CANDLE_BULL, clrDarkGray);
ChartSetInteger(0, CHART_COLOR_CHART_DOWN, clrDimGray);
ChartSetInteger(0, CHART_COLOR_CHART_UP, clrDimGray);
ChartSetInteger(0, CHART_COLOR_CHART_LINE, clrDimGray);
ChartSetInteger(0, CHART_SHIFT, true);
ChartSetInteger(0, CHART_SCALE, 2);
ChartSetInteger(0, CHART_MODE, CHART_CANDLES);
}