Помогите написать условие

 

 Позиция должна открываться в диапазоне. Вот часть кода .

 

int Dist=500;
int Dist1=800;
double close=iClose(NULL,0,1);              

Ma_t1=iMA(Symbol(),0,Ma_period,0,MODE_SMA,0,1);
Ma_t1=NormalizeDouble(Ma_t1,Digits);
Delta_Sell=NormalizeDouble(Ma_t1+Dist*Point,Digits);
Delta_Sell1=NormalizeDouble(Ma_t1+Dist1*Point,Digits);

Delta_Buy=NormalizeDouble(Ma_t1-Dist*Point,Digits);
Delta_Buy1=NormalizeDouble(Ma_t1-Dist1*Point,Digits);

if(NumberOfPositions(Symbol(),-1)==0&&Delta_Buy<close<Delta_Buy1)

{
  OpenPosition(Symbol(),OP_BUY,Lts,Ask-SL*Point,Ask+TP*Point,0);
  return(0);
}
if(NumberOfPositions(Symbol(),-1)==0&&Delta_Sell>close>Delta_Sell1)
{
  OpenPosition(Symbol(),OP_SELL,Lts,Bid+SL*Point,Bid-TP*Point,0);
  return(0);
}
}
return(0);

 Для Sell программа не видит верхнюю границу, для Buy соответственно нижнюю. 

 
Neron_76:

 Позиция должна открываться в диапазоне. Вот часть кода .

 

int Dist=500;
int Dist1=800;
double close=iClose(NULL,0,1);              

Ma_t1=iMA(Symbol(),0,Ma_period,0,MODE_SMA,0,1);
Ma_t1=NormalizeDouble(Ma_t1,Digits);
Delta_Sell=NormalizeDouble(Ma_t1+Dist*Point,Digits);
Delta_Sell1=NormalizeDouble(Ma_t1+Dist1*Point,Digits);

Delta_Buy=NormalizeDouble(Ma_t1-Dist*Point,Digits);
Delta_Buy1=NormalizeDouble(Ma_t1-Dist1*Point,Digits);

if(NumberOfPositions(Symbol(),-1)==0&&Delta_Buy<close<Delta_Buy1)

{
  OpenPosition(Symbol(),OP_BUY,Lts,Ask-SL*Point,Ask+TP*Point,0);
  return(0);
}
if(NumberOfPositions(Symbol(),-1)==0&&Delta_Sell>close>Delta_Sell1)
{
  OpenPosition(Symbol(),OP_SELL,Lts,Bid+SL*Point,Bid-TP*Point,0);
  return(0);
}
}
return(0);

 Для Sell программа не видит верхнюю границу, для Buy соответственно нижнюю. 

А разве в mql допускается такое написание? (Выделено в коде)
 
Alexey Viktorov:
А разве в mql допускается такое написание? (Выделено в коде)
поясню - такое всмысле надо разделять сравнение на части по 2 элемента

 Delta_Buy<close && close<Delta_Buy1

Delta_Sell>close && close>Delta_Sell1
 
Alexey Viktorov:
А разве в mql допускается такое написание? (Выделено в коде)

Не допускается, хотя в старых билдах вроде работало, но не буду утверждать, много времени прошло.

Так-же не удобно, что не работают такие конструкции в mql

if(count > 1 && num ==(4 || 7 || 12))

 запись в таком виде краткая и понятная, но приходиться растягивать

 
Aleksey Semenov:
поясню - такое всмысле надо разделять сравнение на части по 2 элемента

 Delta_Buy<close && close<Delta_Buy1

Delta_Sell>close && close>Delta_Sell1

      Разделял, бесполезно. Как будто второе условие вообще не существует.

 
Delta_Buy1 меньше Delta_Buy. Разберитесь со значениями параметров Dist и Dist1 или условия надо исправить.
 
Dmitry Fedoseev:
Delta_Buy1 меньше Delta_Buy. Разберитесь со значениями параметров Dist и Dist1 или условия надо исправить.

      Извините писал поздно и сделал опечатку, на самом деле в советнике Delta_Buy1 больше Delta_Buy.

      Delta_Buy>close && close>Delta_Buy1


      Delta_Sell<close && close<Delta_Sell1 

 
 Все, вопрос закрыт. Работает как надо. Просто неправильно оценил визуализацию. Спасибо за участие.
 
Aleksey Semenov:
поясню - такое всмысле надо разделять сравнение на части по 2 элемента

 Delta_Buy<close && close<Delta_Buy1

Delta_Sell>close && close>Delta_Sell1
Vitaly Muzichenko:

Не допускается, хотя в старых билдах вроде работало, но не буду утверждать, много времени прошло.

Так-же не удобно, что не работают такие конструкции в mql

if(count > 1 && num ==(4 || 7 || 12))

 запись в таком виде краткая и понятная, но приходиться растягивать

Парни, спасибо за заботу, но мне не надо это объяснять. Это был намёк для Neron_76: чтобы он задумался.