#my history coding is here 006
Untuk memantau forex dari sudut terluas, aku mulai dari menampilkan spread semua pair, Let's Go
//+------------------------------------------------------------------+
//| EA Trade Manager.mq4 |
//| Copyright 2023, MetaQuotes Ltd. |
//|
https://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, Riki Romansyah."
#property link "
https://soehoe.id/ea-trade-manager-by-riki-romansyah.t29534/"
#property version "1.00"
#property strict
#define Develover "Riki Romansyah"
#define EAVersion "1.0"
//+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
//| Expert initialization Array |
//+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
string TradePairs[] = {"AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD","CADCHF","CADJPY","CHFJPY","EURAUD","EURCAD","EURCHF","EURGBP","EURJPY","EURNZD","EURUSD","GBPAUD","GBPCAD","GBPCHF","GBPJPY","GBPNZD","GBPUSD","NZDCAD","NZDCHF","NZDJPY","NZDUSD","USDCAD","USDCHF","USDJPY"};
string curr[8] = {"USD","EUR","GBP","JPY","AUD","NZD","CAD","CHF"};
string Periode[9]={"M1","M5","M15","M30","H1","H4","D1","W1","MN1"};
//+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
struct signal{
string pair;
double spread;
int digit;
}; signal signals[28];
sinput string ID_set_Panels = "MANAGEMENT EA - Posisi"; // =================================
int x_axis = 0;
int y_axis = 0;
sinput double Spread_Trigger = 2.5;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//Pembuatan Panel
SetPanel("DashboardPanel",0,x_axis+3,y_axis+13,1024,25,C'30,30,30',C'61,61,61',1);
SetText("txtPAutoTrading","EA Trade Manager : "+(string)EAVersion,x_axis+10,y_axis+15,clrSilver,10);
SetPanel("SubDashboardPanel",0,x_axis+3,y_axis+43,1024,415,C'30,30,30',C'61,61,61',1);
for(int i=0;i<ArraySize(TradePairs);i++){
signals
.pair=TradePairs;
signals.digit=(int) MarketInfo(TradePairs ,MODE_DIGITS);
}
SetPanel("PanelHeadPair",0,x_axis+5,y_axis+45,50,15,clrGoldenrod,C'61,61,61',1);
SetText("TextPanelHeadPair","Pair",x_axis+8,y_axis+45,clrBlack,8);
SetPanel("HeadSpread",0,x_axis+56,y_axis+45,45,15,clrGoldenrod,C'61,61,61',1);
SetText("TextHeadSpread","Spread",x_axis+57,y_axis+45,clrBlack,8);
for(int i=0;i<ArraySize(TradePairs);i++){
SetPanel("PanelsPair"+(string)i,0,x_axis+5,y_axis+62+(i*14),50,13,C'30,30,30',C'61,61,61',1);
SetText("TextsPair"+(string)i,(string)TradePairs,x_axis+8,y_axis+62+(i*14),clrWhite,8);
SetPanel("PanelSpread"+(string)i,0,x_axis+56,y_axis+62+(i*14),45,15,clrGoldenrod,C'61,61,61',1);
SetText("TextSpread"+(string)i,"0.0",x_axis+60,y_axis+62+(i*14),clrBlack,8);
}
EventSetTimer(1);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
void GetSpread(){
color clrSpread= clrBlack;
for (int i=0;i<ArraySize(TradePairs);i++){
signals.spread=MarketInfo(TradePairs,MODE_SPREAD)/10;
if(signals.spread>=Spread_Trigger){
clrSpread=clrRed;
}else{
clrSpread=clrBlack;
}
EditText("TextSpread"+(string)i,DoubleToString(signals.spread,1),clrSpread,8);
}
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
GetSpread();
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//---
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| function SetPanel |
//+------------------------------------------------------------------+
void SetPanel(string name,int sub_window,int x,int y,int width,int height,color bg_color,color border_clr,int border_width)
{
ObjectDelete(name);
if(ObjectCreate(0,name,OBJ_RECTANGLE_LABEL,sub_window,0,0))
{
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
ObjectSetInteger(0,name,OBJPROP_XSIZE,width);
ObjectSetInteger(0,name,OBJPROP_YSIZE,height);
ObjectSetInteger(0,name,OBJPROP_COLOR,border_clr);
ObjectSetInteger(0,name,OBJPROP_BORDER_TYPE,BORDER_FLAT);
ObjectSetInteger(0,name,OBJPROP_WIDTH,border_width);
ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_SOLID);
ObjectSetInteger(0,name,OBJPROP_BACK,true);
ObjectSetInteger(0,name,OBJPROP_SELECTABLE,0);
ObjectSetInteger(0,name,OBJPROP_SELECTED,0);
ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
ObjectSetInteger(0,name,OBJPROP_ZORDER,0);
}
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,bg_color);
}
//+------------------------------------------------------------------+
void SetText(string name,string text,int x,int y,color colour,int fontsize=12)
{
ObjectDelete(name);
if (ObjectFind(0,name)<0)
ObjectCreate(0,name,OBJ_LABEL,0,0,0);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
ObjectSetInteger(0,name,OBJPROP_COLOR,colour);
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,fontsize);
ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
ObjectSetString(0,name,OBJPROP_TEXT,text);
ObjectSetString(0,name,OBJPROP_FONT,"Segoe UI");
ObjectSetInteger(0,name,OBJPROP_SELECTABLE,0);
ObjectSetInteger(0,name,OBJPROP_SELECTED,0);
}
void EditText(string name,string text,color fontcolor,int fontsize) {
ObjectSetString(0,name,OBJPROP_TEXT,text);
ObjectSetInteger(0,name,OBJPROP_COLOR,fontcolor);
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,fontsize);
}
void SetButton(string but_name,string label,int xsize,int ysize,int xdist,int ydist,int bcolor,int fcolor,int textFont)
{
if(ObjectFind(0,but_name)<0)
{
if(!ObjectCreate(0,but_name,OBJ_BUTTON,0,0,0))
{
Print(__FUNCTION__,
": failed to create the button! Error code = ",GetLastError());
return;
}
ObjectSetString(0,but_name,OBJPROP_TEXT,label);
ObjectSetInteger(0,but_name,OBJPROP_XSIZE,xsize);
ObjectSetInteger(0,but_name,OBJPROP_YSIZE,ysize);
ObjectSetInteger(0,but_name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
ObjectSetInteger(0,but_name,OBJPROP_XDISTANCE,xdist);
ObjectSetInteger(0,but_name,OBJPROP_YDISTANCE,ydist);
ObjectSetInteger(0,but_name,OBJPROP_BGCOLOR,bcolor);
ObjectSetInteger(0,but_name,OBJPROP_COLOR,fcolor);
ObjectSetInteger(0,but_name,OBJPROP_FONTSIZE,textFont);
ObjectSetInteger(0,but_name,OBJPROP_HIDDEN,true);
ObjectSetInteger(0,but_name,OBJPROP_BORDER_TYPE,BORDER_FLAT);
ChartRedraw();
}
}