Насчет зависания не замечал.. а вот эта новшество не пашет правильно!!!
for(int i=0; i<позиций_всего; i++)
В частности в процедурах закрытия позиций,.. по событию на кнопке сразу видно."Закрыть все" жмыкаешь, закрывает 2-3 и все, опять жмыкаеш 2-3.Поменял на
for(int i=OrdersTotal()-1; i>=0; i--)
Все стало в норму. это я про версию 11,5.
Может переменную "позиций_всего" сделать массивом? и перед каждым вызовом пересчитывать.
Дальше, колонка сотояния профита, постоянно кажет некоректные данные, и не того цвета, лоси зеленым..
if(позиций_в_паре[i]!=0)
{
DrawButton(0,символ+"_close",0,650,40+i*20,14,14,CORNER_LEFT_UPPER,CharToStr(0xFB),"Wingdings",10,clrRed,clrGainsboro,clrNONE,0,1,0,0,0);
double prof=Профит[i];
if(NormalizeDouble(prof,0)>999)
{
prof= Профит[i]/1000;
text=DoubleToString(prof,3);
}
else text=DoubleToString(prof,0);
if(Профит[i]>=0) CL=clrLimeGreen;
else CL=clrTomato;
}
else
{
text="";
ObjectDelete(0,символ+"_close");
}
Поменял на другую функцию вычисления профита.. все стало в норму.Это касается 11,5 и 11,4.
if(позиций_в_паре[i]!=0)
{ DrawButton(0,символ+"_close",0,750,40+i*20,14,14,CORNER_LEFT_UPPER,CharToStr(0xFB),"Wingdings",10,clrRed,clrGainsboro,clrNONE,0,1,0,0,0);
double prof=GetProfitOpenPosInCurrency(Пары[i], -1, -1);
if(NormalizeDouble(prof,0)>999)
{
prof=GetProfitOpenPosInCurrency(Пары[i], -1, -1)/1000;
text=DoubleToString(prof,1);
}
[b] else text=DoubleToString(prof,1);
if(prof>=0) SL=clrLimeGreen;
if(prof<0) SL=clrTomato;[/b]
}
else
{
text="";
ObjectDelete(0,символ+"_close");
}
ObjectSetText(name+"info",text,9,"Calibri Bold",SL);