Ошибка 138

 

Здравствуйте, есть такой вопрос, почему появляется ошибка 138,переменная становится Price=0 время от времени, как решить эту проблему?

Как только отложенный ордер исполняется, необходимо установить новый отложник в противоположную сторону по цене stop loss того ордера, который в рынке. Когда срабатывает лось должен исполнится новый отложенник и т.д. Не получается грамотно сделать(

Кусок кода:

if ((Total<=1) && (N>1))
{ 
if ((N==3) || (N==5) || (N==7) || (N==9) || (N==11) || (N==13) || (N==15))
Price=Price1;
if ((N==2) || (N==4) || (N==6) || (N==8) || (N==10) || (N==12) || (N==14))
Price=Price2; 

} 


while(true) 
{
if (Total<=1) //Total - кол-во имеющихся ордеров, в рынке и отложенных 
{ 
RefreshRates(); 
if ((N==1) && (Type==OP_BUY)) //N-номер ордера в серии ордеров
{SL=Ask - 12*Point; //Price1 и Price2 являются static
TP=Ask + takeprofit*Point;
Price=Ask;
Price1=Ask;
Price2=SL;
}
if ((N>1) && (Type==OP_BUYSTOP))
{SL=Price - 12*Point;
TP=Price + takeprofit*Point;
} 
if ((N==1) && (Type==OP_SELL))
{SL=Ask + 12*Point;
TP=Ask - takeprofit*Point;
Price=Bid;
Price1=Bid;
Price2=SL;
} 
if ((N>1) && (Type==OP_SELLSTOP))
{SL=Price + 12*Point;
TP=Price - takeprofit*Point;
} 

Alert("Попытка открыть ",Type,". Ожидание ответа..");
Ticket=OrderSend(Symb,Type,Lts,Price,2,SL,TP," ",N);
if (Ticket > 0) 
{
Alert ("Открыт ордер ",Ticket); 
}
if (Fun_Error(GetLastError())==1) 
continue; 
return; 
}
break; 
}
 

1. Используйте кнопку Код для вставки исходного кода.

2. Точный ответ по кускам кода дают экстрасенсы.

3. В строке

Ticket=OrderSend(Symb,Type,Lts,Price,2,SL,TP," ",N);
переменная Price может быть неприсвоенной в предшествующих if-ах, и если она локальная (см.п.2), то принимает значение 0.
 
OneDepo писал(а) >>

1. Используйте кнопку Код для вставки исходного кода.

2. Точный ответ по кускам кода дают экстрасенсы.

3. В строке

переменная Price может быть неприсвоенной в предшествующих if-ах, и если она локальная (см.п.2), то принимает значение 0.

Спасибо за намёки. Исправил баги! 1 и 2 приму к сведению.

 
Ilusha_Benjamin >>:

Спасибо за намёки. Исправил баги! 1 и 2 приму к сведению.

138: ERR_STR="Новые цены "; иногда помогает RefreshRates();

 
Да тут смысл был в паременной N, не туда его воткнул и поэтому переменная Price действительно принимала значение 0. Отсюда ошибка 138, т.е. цена отсутствовала.
Причина обращения: