Задвоение ордеров при торговле советником.

 
Подскажите, кто знает. При торговле советником происходит задвоение ордера (по коду открываю 1, а открывается 2). И че самое интересное, он их потом 2 и закрывает, хотя в коде хранится и закрывается только один номер ордера???
 
Не волнуйтесь, бригада телепатов уже выехала.
 
код в студию
 


не, не надо "код в студию". без кода - интереснее. игрушка "угадал - не угадал"... может кто и поиграет... "с кодом" - эка невидаль... главное ведь - ПРОЦЕСС!

 
думаю причина в том, что функций на открытие несколько, а между ними нету оператора return, вот обе близкие и срабатывают до проверки на наличие открытых позиций. Или подсчет открытых позиций не верный.
 
Банальная ошибка в нумерации ордеров, точней проверкой ордеров. Учтите, при выборе ордера, что нумерация начинается с нуля.
 
Если бы дело было бы в коде, то на тестере была бы такая же проблема, а там все впорядке. Может советник глючить, если был откомпилирован на mql4 другой программы. Компилировался с mql meta trader, а запускается  в mik bank
 
BantV писал(а) >>
Подскажите, кто знает. При торговле советником происходит задвоение ордера (по коду открываю 1, а открывается 2). И че самое интересное, он их потом 2 и закрывает, хотя в коде хранится и закрывается только один номер ордера???

Когда попадеш в тренд спасибо скажеш...
 
 void add_system(bool buy)
{
int c;
double peregib1=tochki[chislo_toch-1];
for(c=chislo_toch-1;c>0;c--)
{
if(buy)
{
if((peregibVverh[c-1]==false))
{
if((tochki[c-1]<peregib1)){ty[i]=0; first=true;
max[i]=iClose(para,0,0);
min[i]=iClose(para,0,0);
Lots1=NormalizeDouble(summ/(MathAbs(iClose(para,0,0)-peregib1)*100000),DigitLot);
if(Lots1>maxLot)
Lots1=maxLot;
if(Lots1<MathPow(0.1,DigitLot))
Lots1=MathPow(0.1,DigitLot);
order[i]=-1;
while(order[i]==-1)
{
RefreshRates();
order[i]= OrderSend(Symbol(),OP_BUY,Lots1,NormalizeDouble(Ask,Digits),slip,0,0);
}
//order[i]= OrderSend(Symbol(),OP_SELL,Lots1,NormalizeDouble(Bid,Digits),slip,0,0);
stop_los[i]=peregib1;firstStop[i]=peregib1;rasstDoCeli[i]=MathAbs(iClose(para,0,0)-stop_los[i]);}
break;
}
}
if(!buy)
{
if((peregibVverh[c-1]==true))
{
if((tochki[c-1]>peregib1)){ty[i]=1; first=true;
max[i]=iClose(para,0,0);
min[i]=iClose(para,0,0);
Lots1=NormalizeDouble(summ/(MathAbs(iClose(para,0,0)-peregib1)*100000),DigitLot);
if(Lots1>maxLot)
Lots1=maxLot;
if(Lots1<MathPow(0.1,DigitLot))
Lots1=MathPow(0.1,DigitLot);
order[i]=-1;
while(order[i]==-1)
{
RefreshRates();
order[i]= OrderSend(Symbol(),OP_SELL,Lots1,NormalizeDouble(Bid,Digits),slip,0,0);
}
//order[i]= OrderSend(Symbol(),OP_BUY,Lots1,NormalizeDouble(Ask,Digits),slip,0,0);
stop_los[i]=peregib1;firstStop[i]=peregib1;rasstDoCeli[i]=MathAbs(iClose(para,0,0)-stop_los[i]);}
break;
}
}
}
}
 
Вероятно, у вас работают 2 советника в разных окнах... Закройте терминал, потом опять включите... Во вкладке терминала "Журнал" увидите какие эксперты и индикаторы у вас подключены...
 
kharko писал(а) >>
Вероятно, у вас работают 2 советника в разных окнах... Закройте терминал, потом опять включите... Во вкладке терминала "Журнал" увидите какие эксперты и индикаторы у вас подключены...


<Alt>+<W>

Появится список окон и советников.

Причина обращения: