Вам лучше зайти на страничку
https://forum.mql4.com/ru/11287/page20
(срт 19-20 и др.)
и задействовать выложенные там функции, напр.
Функция GetTicketLastPos().
Эта функция возвращает тикет последней открытой позиции или -1.
Функция GetTypeLastOpenPos(). Стп.20
Эта функция возвращает тип последней открытой позиции или -1.
И не надо ломать голову с OrderSelect
https://forum.mql4.com/ru/11287/page20
(срт 19-20 и др.)
и задействовать выложенные там функции, напр.
Функция GetTicketLastPos().
Эта функция возвращает тикет последней открытой позиции или -1.
Функция GetTypeLastOpenPos(). Стп.20
Эта функция возвращает тип последней открытой позиции или -1.
И не надо ломать голову с OrderSelect
Ну, хитрый, уже убрал код. :-)
Пока не будет OrderSelect ни о каком OrderType не может быть и речи.
не хитрый а попался - думаю тай вставлю папраметр цикла и все хоккей,
а там цикла то и нету(((
а там цикла то и нету(((
Не судите строго-недавно занялся изучать программирование!
to mozg
совет: - для ускорения изучения рисуй блок-схемы того что пишешь
Ну, ты хоть пробуешь, это приветствуется. Другие просто канючат, дайте код.
if (OrdersTotal()>1) if (Bar<iBars(NULL,PERIOD_H1)) for(int i=0;i<OrdersTotal();i++) { OrderSelect(i,SELECT_BY_POS); cmd=OrderType(); if (cmd<2) { while(true) { if(cmd==OP_BUY) price=Bid; else price=Ask; if(!OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE)) { error=GetLastError(); Print("LastError = ",error); if(error==135) RefreshRates(); } else break; } } }
В этом коде ошибочка только не могу найти где. Он закрывает ордер сразу после открытия.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
if (OrdersTotal()>1)
if (Bar<iBars(NULL,PERIOD_H1))
cmd=OrderType();
else return(0);
if (cmd==OP_SELL||cmd==OP_BUY)
{
while(true)
{
if(cmd==OP_BUY)
price=Bid;
else
price=Ask;
if(OrderSelect(№,SELECT_BY_POS)==true)
result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
if(result!=TRUE)
{
error=GetLastError(); Print("LastError = ",error);
}
else error=0;
if(error==135)
RefreshRates();
else break;
}
}
Подскажите пожалуйста как мне узнать номет или тикет ордера который нужно закрыть? вот в этой строчке if(OrderSelect(№,SELECT_BY_POS)==true) Как подставить номер?
Всем спасибо!