Позиция должна открываться в диапазоне. Вот часть кода .
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 допускается такое написание? (Выделено в коде)
Delta_Buy<close && close<Delta_Buy1
Delta_Sell>close && close>Delta_Sell1
А разве в mql допускается такое написание? (Выделено в коде)
Не допускается, хотя в старых билдах вроде работало, но не буду утверждать, много времени прошло.
Так-же не удобно, что не работают такие конструкции в mql
запись в таком виде краткая и понятная, но приходиться растягивать
поясню - такое всмысле надо разделять сравнение на части по 2 элемента
Delta_Buy<close && close<Delta_Buy1
Delta_Sell>close && close>Delta_Sell1
Разделял, бесполезно. Как будто второе условие вообще не существует.
Delta_Buy1 меньше Delta_Buy. Разберитесь со значениями параметров Dist и Dist1 или условия надо исправить.
Извините писал поздно и сделал опечатку, на самом деле в советнике Delta_Buy1 больше Delta_Buy.
Delta_Buy>close && close>Delta_Buy1
Delta_Sell<close && close<Delta_Sell1
поясню - такое всмысле надо разделять сравнение на части по 2 элемента
Delta_Buy<close && close<Delta_Buy1
Delta_Sell>close && close>Delta_Sell1
Не допускается, хотя в старых билдах вроде работало, но не буду утверждать, много времени прошло.
Так-же не удобно, что не работают такие конструкции в mql
запись в таком виде краткая и понятная, но приходиться растягивать
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Позиция должна открываться в диапазоне. Вот часть кода .
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 соответственно нижнюю.