Internal Stack error????

 

any one know what the problem here is? im doing a simple Dashboard indy that creates objects on the chart...i want the objects to change color accroding to differing market conditions...and i get this error half way thru coding!!! I know it says simplify the program but its only 814 lines of code...ive done over 4000 lines of code in some EA's ...how can 814 lines of code be so complex?



 

Any RECURSIVE calls to functions that might be out of control?

 
abstract_mind:



Any RECURSIVE calls to functions that might be out of control?

Not really functions per se', but I do make recursive calls to alter colors of certain objects on the chart should the market conditions alter.

but even so i have seen dashboard indies do WAAY more color changes that mine.

 

here is the code where the compiler says the erro is present...have to break it into codeblocks its too long for this post :


if(eurma15>eurma30&&swissma15<swissma30&&mixma15>mixma30)
{
ObjectSetText("corr3","BUY EURO", 18,"Times New Roman",Gold);
ObjectSetText("corr4","SELL EURO",18,"Times New Roman",Black);
ObjectSetText("graph",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph1",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph2",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph3",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph25",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph24",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph23",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph22",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph13",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph14",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph15",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph16",CharToStr(59), 12,"Wingdings",Blue);
//----
ObjectSetText("1",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("2",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("3",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("4",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("8",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("9",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("10",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("11",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("16",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("17",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("18",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("19",CharToStr(59), 12,"Wingdings",Blue);
}
if(eurma15<eurma30&&swissma15>swissma30&&mixma15<mixma30)
{
ObjectSetText("corr3","BUY EURO", 18,"Times New Roman",Black);
ObjectSetText("corr4","SELL EURO", 18,"Times New Roman",Gold);
ObjectSetText("graph",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph1",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph2",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph3",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph25",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph24",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph23",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph22",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph13",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph14",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph15",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph16",CharToStr(59), 12,"Wingdings",Red);
//----
ObjectSetText("1",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("2",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("3",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("4",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("8",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("9",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("10",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("11",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("16",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("17",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("18",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("19",CharToStr(59), 12,"Wingdings",Red);
}
 

and ...

if(eurma15>eurma30&&swissma15<swissma30&&mixma15<mixma30)
{
ObjectSetText("corr3","BUY EURO", 18,"Times New Roman",Black);
ObjectSetText("corr4","SELL EURO",18,"Times New Roman",Black); 
ObjectSetText("corr5","NO BIAS",18,"Times New Roman",Gold);
ObjectSetText("graph",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph1",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph2",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph3",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph25",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph24",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph23",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph22",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph13",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph14",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph15",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph16",CharToStr(59), 12,"Wingdings",Red);
//----
ObjectSetText("1",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("2",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("3",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("4",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("8",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("9",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("10",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("11",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("16",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("17",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("18",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("19",CharToStr(59), 12,"Wingdings",Red);
}
if(eurma15<eurma30&&swissma15>swissma30&&mixma15<mixma30)
{
ObjectSetText("corr3","BUY EURO", 18,"Times New Roman",Black);
ObjectSetText("corr4","SELL EURO",18,"Times New Roman",Black); 
ObjectSetText("corr5","NO BIAS",18,"Times New Roman",Gold);
ObjectSetText("graph",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph1",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph2",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph3",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph25",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph24",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph23",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph22",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph13",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph14",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph15",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph16",CharToStr(59), 12,"Wingdings",Red);
//----
ObjectSetText("1",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("2",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("3",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("4",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("8",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("9",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("10",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("11",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("16",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("17",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("18",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("19",CharToStr(59), 12,"Wingdings",Red);
}
 

and lastly...

if(eurma15<eurma30&&swissma15<swissma30&&mixma15<mixma30)
{
ObjectSetText("corr3","BUY EURO", 18,"Times New Roman",Black);
ObjectSetText("corr4","SELL EURO",18,"Times New Roman",Black); 
ObjectSetText("corr5","NO BIAS",18,"Times New Roman",Gold);
ObjectSetText("graph",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph1",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph2",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph3",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph25",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph24",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph23",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph22",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph13",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph14",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph15",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("graph16",CharToStr(59), 12,"Wingdings",Red);
//----
ObjectSetText("1",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("2",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("3",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("4",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("8",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("9",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("10",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("11",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("16",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("17",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("18",CharToStr(59), 12,"Wingdings",Red);
ObjectSetText("19",CharToStr(59), 12,"Wingdings",Red);
}
if(eurma15>eurma30&&swissma15>swissma30&&mixma15>mixma30)
{
ObjectSetText("corr3","BUY EURO", 18,"Times New Roman",Black);
ObjectSetText("corr4","SELL EURO",18,"Times New Roman",Black); 
ObjectSetText("corr5","NO BIAS",18,"Times New Roman",Gold);
ObjectSetText("graph",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph1",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph2",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph3",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph25",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph24",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph23",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph22",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph13",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph14",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph15",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("graph16",CharToStr(59), 12,"Wingdings",Blue);
//----
ObjectSetText("1",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("2",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("3",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("4",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("8",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("9",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("10",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("11",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("16",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("17",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("18",CharToStr(59), 12,"Wingdings",Blue);
ObjectSetText("19",CharToStr(59), 12,"Wingdings",Blue);
}
 

Think of structured programming.

you can reduce the code using this approach:

.....

int which_ones[]={1,3,4,6,7,8,12,1};


for(int i =0 ; i< array_size(which_ones);i++) // see in mql_editor the right name for array_size

{

ObjectSetText("graph" + which_ones[i], CharToStr(59), 12,"Wingdings",Red);

}

...

you can even put in a function that passes the array and labels as arguments. This way all the block of code you show can be reduced to about 10 lines.

 
abstract_mind:

Think of structured programming.

you can reduce the code using this approach:

.....

int which_ones[]={1,3,4,6,7,8,12,1};


for(int i =0 ; i< array_size(which_ones);i++) // see in mql_editor the right name for array_size

{

ObjectSetText("graph" + which_ones[i], CharToStr(59), 12,"Wingdings",Red);

}

...

you can even put in a function that passes the array and labels as arguments. This way all the block of code you show can be reduced to about 10 lines.


Worked like a charm! thanx for the advice :)

Reason: