одно и то же что и for (int k=0; k<OrdersTotal(); k++). Дело именно в if(iRSI(NULL,PERIOD_M1,14,PRICE_CLOSE,0)<iRSI(NULL,PERIOD_M1,14,PRICE_CLOSE,1) && OrderType()==OP_BUY && OrderMagicNumber()==21 && OrderProfit()>0).
Потомучто если ставлю Alert в цикл - сообщение появляется, а если под условие, то нет. Вот и не могу разобраться в чем дело.
попробуй так..
for (int k=0; k<=OrdersTotal(); k++) //проверка наличия открытых ордеров
{
OrderSelect(k,SELECT_BY_POS);//выбор ордера по списку
{
if (OrderSymbol()==Symbol())
{
//M1 - для графика с минутным периодом
if(iRSI(NULL,PERIOD_M1,14,PRICE_CLOSE,0)<iRSI(NULL,PERIOD_M1,14,PRICE_CLOSE,1)
&& OrderType()==OP_BUY && OrderMagicNumber()==21
&& OrderProfit()>0)
{
while(true)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);
if(result!=TRUE) error=GetLastError();
if(error==135) RefreshRates(); else break;
}
}
}
}
}
Проверял, все условия по графику были соблюдены, тип ордера верный, график и его период тоже смотрел верно, но по какой-то причине ордер не закрывается.
По какой-то причине не выполняет ся условие if(iRSI(NULL,PERIOD_M1,14,PRICE_CLOSE,0)<iRSI(NULL,PERIOD_M1,14,PRICE_CLOSE,1)
&& OrderType()==OP_BUY && OrderMagicNumber()==21
&& OrderProfit()>0), хотя по графику и списку ордеров все параметры соблюдены
В чем может быть дело?
А магик тоже по графику проверяли?
В один if () смешаны
а)проверки ордера
в)проверка индикатора
Раздели, будет проще разобраться. Да и программке полегче жить станет, если RSI вынесешь из цикла )
не по графику конечно. У меня ордер открывается и в зависимости от условий ставит мэджик определенный. вот его и при закрытии провевяю. всё равно всем спасибо большое. внёс корретивы, вроде пока всё окей.
рад буду так же сотрудничеству в области написания советников. предложения пишите в личку.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите пожалуйста, по какой причине ордер может не закрываться, если я использую код:
for (int k=0; k<=OrdersTotal(); k++) //проверка наличия открытых ордеров
{
OrderSelect(k,SELECT_BY_POS);//выбор ордера по списку
if (OrderSymbol()==Symbol())
{
//M1 - для графика с минутным периодом
if(iRSI(NULL,PERIOD_M1,14,PRICE_CLOSE,0)<iRSI(NULL,PERIOD_M1,14,PRICE_CLOSE,1) && OrderType()==OP_BUY && OrderMagicNumber()==21 && OrderProfit()>0)
{
while(true)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
if(result!=TRUE) error=GetLastError();
if(error==135) RefreshRates(); else break;
}
}
}
}
Проверял, все условия по графику были соблюдены, тип ордера верный, график и его период тоже смотрел верно, но по какой-то причине ордер не закрывается.
По какой-то причине не выполняет ся условие if(iRSI(NULL,PERIOD_M1,14,PRICE_CLOSE,0)<iRSI(NULL,PERIOD_M1,14,PRICE_CLOSE,1) && OrderType()==OP_BUY && OrderMagicNumber()==21 && OrderProfit()>0), хотя по графику и списку ордеров все параметры соблюдены
В чем может быть дело?