Try this .
The first loop goes through your labels ,finds the biggest in width and assigns that value plus the offset as the offset value (xm)
//+------------------------------------------------------------------+ //| Multiple.mq4 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 12 int period[]={1,5,15,30,60,240,1440,10080,43200}; string periodString[]={"M1","M5","M15","M30","H1","H4","D1","W1","MN1"}; string signalNameString[]={"SMA5","EMA5","SMA10","EMA10","SMA20","EMA20","SMA50","EMA50","SMA100","EMA100","SMA200","EMA200"}; extern int scaleX=20, // horizontal interval at which the squares are created scaleY=20, // vertical interval offsetX=35, // horizontal indent of all squares offsetY=50, // vertical indent fontSize=20, // font size corner=0; extern color signalBuyColor=clrGreen, signalSellColor=clrRed; //noSignalColor=WhiteSmoke, //Disabled for the moment //textColor=Gold; //Disabled for the moment //--- indicator buffers double Buffer1[]; double Buffer2[]; double Buffer3[]; double Buffer4[]; double Buffer5[]; double Buffer6[]; double Buffer7[]; double Buffer8[]; double Buffer9[]; double Buffer10[]; double Buffer11[]; double Buffer12[]; double myPoint; //initialized in OnInit //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { uint indynames_max=0; TextSetFont("Tahoma",8,0,0); int x; int y; for(int y=0;y<12;y++) { uint w,h; TextGetSize(signalNameString[y],w,h); if(w>indynames_max) indynames_max=w; } int xm=indynames_max+offsetX; for(int x=0;x<9;x++) for(int y=0;y<12;y++) { ObjectCreate("signal"+x+y,OBJ_LABEL,0,0,0,0,0); ObjectSet("signal"+x+y,OBJPROP_CORNER,corner); // change the corner ObjectSet("signal"+x+y,OBJPROP_XDISTANCE,x*scaleX+xm); ObjectSet("signal"+x+y,OBJPROP_YDISTANCE,y*scaleY+offsetY); ObjectSetText("signal"+x+y,CharToStr(110),fontSize,"Wingdings",Gold); } // name of timeframes for(x=0;x<9;x++) { ObjectCreate("textPeriod"+x,OBJ_LABEL,0,0,0,0,0); //ObjectSet("textPeriod"+x,OBJPROP_CORNER,corner); // changing the corner ObjectSet("textPeriod"+x,OBJPROP_XDISTANCE,x*scaleX+xm+(scaleX/2)); ObjectSet("textPeriod"+x,OBJPROP_YDISTANCE,offsetY+scaleY/8); ObjectSetText("textPeriod"+x,periodString[x],8,"Tahoma",Gold); ObjectSetDouble(ChartID(),"textPeriod"+x,OBJPROP_ANGLE,90); ObjectSetInteger(ChartID(),"textPeriod"+x,OBJPROP_ANCHOR,ANCHOR_LEFT); } // names of indicators for(y=0;y<12;y++) { ObjectCreate("textSignal"+y,OBJ_LABEL,0,0,0,0,0); //ObjectSet("textSignal"+y,OBJPROP_CORNER,corner); // change the corner ObjectSet("textSignal"+y,OBJPROP_XDISTANCE,xm); ObjectSet("textSignal"+y,OBJPROP_YDISTANCE,y*scaleY+offsetY+scaleY/2); ObjectSetText("textSignal"+y,signalNameString[y],8,"Tahoma",Gold); ObjectSetInteger(ChartID(),"textSignal"+y,OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER); } //initialize myPoint myPoint = Point(); if(Digits() == 5 || Digits() == 3) { myPoint *= 10; } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| 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[]) { int limit = rates_total - prev_calculated; ArraySetAsSeries(Buffer1, true); ArraySetAsSeries(Buffer2, true); ArraySetAsSeries(Buffer3, true); ArraySetAsSeries(Buffer4, true); ArraySetAsSeries(Buffer5, true); ArraySetAsSeries(Buffer6, true); ArraySetAsSeries(Buffer7, true); ArraySetAsSeries(Buffer8, true); ArraySetAsSeries(Buffer9, true); ArraySetAsSeries(Buffer10, true); ArraySetAsSeries(Buffer11, true); ArraySetAsSeries(Buffer12, true); if(prev_calculated < 1) { ArrayInitialize(Buffer1, 0); ArrayInitialize(Buffer2, 0); ArrayInitialize(Buffer3, 0); ArrayInitialize(Buffer4, 0); ArrayInitialize(Buffer5, 0); ArrayInitialize(Buffer6, 0); ArrayInitialize(Buffer7, 0); ArrayInitialize(Buffer8, 0); ArrayInitialize(Buffer9, 0); ArrayInitialize(Buffer10, 0); ArrayInitialize(Buffer11, 0); ArrayInitialize(Buffer12, 0); } else limit++; //--- main loop for(int i = limit-1; i >= 0; i--) { if (i >= MathMin(5000-1, rates_total-1-50)) continue; //omit some old rates to prevent "Array out of range" //- int x; for(int x=0;x<9;x++) //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 1 if(Bid > iMA(NULL, period[x], 5, 0, MODE_SMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"0",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"0",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 2 if(Bid > iMA(NULL, period[x], 5, 0, MODE_EMA, PRICE_CLOSE, i))//Price > Moving Average ObjectSetText("signal"+x+"1",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"1",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 3 if(Bid > iMA(NULL, period[x], 10, 0, MODE_SMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"2",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"2",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 4 if(Bid > iMA(NULL, period[x], 10, 0, MODE_EMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"3",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"3",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 5 if(Bid > iMA(NULL, period[x], 20, 0, MODE_SMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"4",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"4",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 6 if(Bid > iMA(NULL, period[x], 20, 0, MODE_EMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"5",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"5",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 7 if(Bid > iMA(NULL, period[x], 50, 0, MODE_SMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"6",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"6",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 8 if(Bid > iMA(NULL, period[x], 50, 0, MODE_EMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"7",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"7",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 9 if(Bid > iMA(NULL, period[x], 100, 0, MODE_SMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"8",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"8",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 10 if(Bid > iMA(NULL, period[x], 100, 0, MODE_EMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"9",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"9",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 11 if(Bid > iMA(NULL, period[x], 200, 0, MODE_SMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"10",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"10",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 12 if (Bid > iMA(NULL, period[x], 200, 0, MODE_EMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"11",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"11",CharToStr(110),fontSize,"Wingdings",signalSellColor); } } return(0); } //+------------------------------------------------------------------+
Try this .
The first loop goes through your labels ,finds the biggest in width and assigns that value plus the offset as the offset value (xm)
Oh, thank you very much, the truth is that you have solved one of the problems I had, that of the placement of the posters, thanks for the help.
But my main problem is that only one of the rows of x and one of the rows of y is filled, and the rest are not.
I have checked the code many times, and I cannot find the problem. It is a very simple code, but I can't fix it.
Oh, thank you very much, the truth is that you have solved one of the problems I had, that of the placement of the posters, thanks for the help.
But my main problem is that only one of the rows of x and one of the rows of y is filled, and the rest are not.
I have checked the code many times, and I cannot find the problem. It is a very simple code, but I can't fix it.
You are not iterating through the main boxes . you have 12 buffers but 12*9 boxes
//+------------------------------------------------------------------+ //| Multiple.mq4 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 12 int period[]={1,5,15,30,60,240,1440,10080,43200}; string periodString[]={"M1","M5","M15","M30","H1","H4","D1","W1","MN1"}; string signalNameString[]={"SMA5","EMA5","SMA10","EMA10","SMA20","EMA20","SMA50","EMA50","SMA100","EMA100","SMA200","EMA200"}; extern int scaleX=20, // horizontal interval at which the squares are created scaleY=20, // vertical interval offsetX=35, // horizontal indent of all squares offsetY=50, // vertical indent fontSize=20, // font size corner=0; extern color signalBuyColor=clrGreen, signalSellColor=clrRed; //noSignalColor=WhiteSmoke, //Disabled for the moment //textColor=Gold; //Disabled for the moment //--- indicator buffers double Buffer1[]; double Buffer2[]; double Buffer3[]; double Buffer4[]; double Buffer5[]; double Buffer6[]; double Buffer7[]; double Buffer8[]; double Buffer9[]; double Buffer10[]; double Buffer11[]; double Buffer12[]; double myPoint; //initialized in OnInit //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { uint indynames_max=0; TextSetFont("Tahoma",8,0,0); int x; int y; for(int y=0;y<12;y++) { uint w,h; TextGetSize(signalNameString[y],w,h); if(w>indynames_max) indynames_max=w; } int xm=indynames_max+offsetX; for(int x=0;x<9;x++) for(int y=0;y<12;y++) { ObjectCreate("signal"+x+y,OBJ_LABEL,0,0,0,0,0); ObjectSet("signal"+x+y,OBJPROP_CORNER,corner); // change the corner ObjectSet("signal"+x+y,OBJPROP_XDISTANCE,x*scaleX+xm); ObjectSet("signal"+x+y,OBJPROP_YDISTANCE,y*scaleY+offsetY); ObjectSetText("signal"+x+y,CharToStr(110),fontSize,"Wingdings",Gold); } // name of timeframes for(x=0;x<9;x++) { ObjectCreate("textPeriod"+x,OBJ_LABEL,0,0,0,0,0); //ObjectSet("textPeriod"+x,OBJPROP_CORNER,corner); // changing the corner ObjectSet("textPeriod"+x,OBJPROP_XDISTANCE,x*scaleX+xm+(scaleX/2)); ObjectSet("textPeriod"+x,OBJPROP_YDISTANCE,offsetY+scaleY/8); ObjectSetText("textPeriod"+x,periodString[x],8,"Tahoma",Gold); ObjectSetDouble(ChartID(),"textPeriod"+x,OBJPROP_ANGLE,90); ObjectSetInteger(ChartID(),"textPeriod"+x,OBJPROP_ANCHOR,ANCHOR_LEFT); } // names of indicators for(y=0;y<12;y++) { ObjectCreate("textSignal"+y,OBJ_LABEL,0,0,0,0,0); //ObjectSet("textSignal"+y,OBJPROP_CORNER,corner); // change the corner ObjectSet("textSignal"+y,OBJPROP_XDISTANCE,xm); ObjectSet("textSignal"+y,OBJPROP_YDISTANCE,y*scaleY+offsetY+scaleY/2); ObjectSetText("textSignal"+y,signalNameString[y],8,"Tahoma",Gold); ObjectSetInteger(ChartID(),"textSignal"+y,OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER); } //initialize myPoint myPoint = Point(); if(Digits() == 5 || Digits() == 3) { myPoint *= 10; } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| 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[]) { int limit = rates_total - prev_calculated; ArraySetAsSeries(Buffer1, true); ArraySetAsSeries(Buffer2, true); ArraySetAsSeries(Buffer3, true); ArraySetAsSeries(Buffer4, true); ArraySetAsSeries(Buffer5, true); ArraySetAsSeries(Buffer6, true); ArraySetAsSeries(Buffer7, true); ArraySetAsSeries(Buffer8, true); ArraySetAsSeries(Buffer9, true); ArraySetAsSeries(Buffer10, true); ArraySetAsSeries(Buffer11, true); ArraySetAsSeries(Buffer12, true); if(prev_calculated < 1) { ArrayInitialize(Buffer1, 0); ArrayInitialize(Buffer2, 0); ArrayInitialize(Buffer3, 0); ArrayInitialize(Buffer4, 0); ArrayInitialize(Buffer5, 0); ArrayInitialize(Buffer6, 0); ArrayInitialize(Buffer7, 0); ArrayInitialize(Buffer8, 0); ArrayInitialize(Buffer9, 0); ArrayInitialize(Buffer10, 0); ArrayInitialize(Buffer11, 0); ArrayInitialize(Buffer12, 0); } else limit++; //--- main loop for(int i = limit-1; i >= 0; i--) { if (i >= MathMin(5000-1, rates_total-1-50)) continue; //omit some old rates to prevent "Array out of range" //- int x; //Loop to timeframes starts here for(int x=0;x<9;x++) { //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 1 if(Bid > iMA(NULL, period[x], 5, 0, MODE_SMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"0",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"0",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 2 if(Bid > iMA(NULL, period[x], 5, 0, MODE_EMA, PRICE_CLOSE, i))//Price > Moving Average ObjectSetText("signal"+x+"1",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"1",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 3 if(Bid > iMA(NULL, period[x], 10, 0, MODE_SMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"2",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"2",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 4 if(Bid > iMA(NULL, period[x], 10, 0, MODE_EMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"3",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"3",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 5 if(Bid > iMA(NULL, period[x], 20, 0, MODE_SMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"4",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"4",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 6 if(Bid > iMA(NULL, period[x], 20, 0, MODE_EMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"5",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"5",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 7 if(Bid > iMA(NULL, period[x], 50, 0, MODE_SMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"6",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"6",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 8 if(Bid > iMA(NULL, period[x], 50, 0, MODE_EMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"7",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"7",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 9 if(Bid > iMA(NULL, period[x], 100, 0, MODE_SMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"8",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"8",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 10 if(Bid > iMA(NULL, period[x], 100, 0, MODE_EMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"9",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"9",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 11 if(Bid > iMA(NULL, period[x], 200, 0, MODE_SMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"10",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"10",CharToStr(110),fontSize,"Wingdings",signalSellColor); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //Indicator Buffer 12 if (Bid > iMA(NULL, period[x], 200, 0, MODE_EMA, PRICE_CLOSE, i)) //Price > Moving Average ObjectSetText("signal"+x+"11",CharToStr(110),fontSize,"Wingdings",signalBuyColor); else { ObjectSetText("signal"+x+"11",CharToStr(110),fontSize,"Wingdings",signalSellColor); } } //Loop to timeframes ends here } //main loop ends here return(0); } //+------------------------------------------------------------------+
You are not iterating through the main boxes . you have 12 buffers but 12*9 boxes
OMG, you are 100% right. Thank you very much again, I don't know how I didn't realize this. I am very grateful to you for this help
OMG, you are 100% right. Thank you very much again, I don't know how I didn't realize this. I am very grateful to you for this help
You are welcome
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Good morning friends, I am writing a simple table, using moving averages, and I am making a mistake that I cannot detect.
I leave you an image in which surely you can quickly see what I am doing, and the mq4 code.
Thank you very much in advance, I am very grateful if someone helps me with this.