Взгляните на эту команду:
OrderSend(Symbol(),OP_BUY,0.01,Ask,10,0,Bid+10*Point);
Если у вас слипаж 10 пунктов, то имеем черырехзнак, когда:
1. Объем 0.01 может не поддерживаться типом вашего счета. Смотрим значение MODE_MINLOT для MarketInfo().
2. Фиксированное значение 10п для тейкпрофита, может оказаться меньше чем MODE_STOPLEVEL.
Ну и типично для бай-счетов тейкпрофит выставляется от Ask, а не Bid.
Да нет, ордера выставляет.
Нужно чтобы было всего 5 ордеров, не больше и не меньше, если меньше 5 то удалить все ордера к чертям!
Да нет, ордера выставляет.
Нужно чтобы было всего 5 ордеров, не больше и не меньше, если меньше 5 то удалить все ордера к чертям!
не понятно, что вам надо: найти ошибки в вашей функции? либо найти ошибки в вашем советнике, который не окрывает ордера?
int SecondBuy () { } void Send_BUYLIMIT(double Lot,double cena) { if ( OrdersTotal()==0 ) OrderSend(Symbol(),OP_BUY,0.01,Ask,10,0,Bid+10*Point); if ( OrderType()==OP_BUY && OrdersTotal()<=5)OrderSend(Symbol(),OP_BUYLIMIT,Lot,cena,10,0,cena+tp*Point,0,123,0,Blue); } return(0); int DeletAll () { if (OrdersTotal()!=5 )DeletAll (); for (int i=OrdersTotal()-1; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break; if (OrderType()==OP_BUYSTOP ) OrderDelete(OrderTicket()); if (OrderType()==OP_SELLSTOP ) OrderDelete(OrderTicket()); if (OrderType()==OP_BUYLIMIT ) OrderDelete(OrderTicket()); if (OrderType()==OP_SELLLIMIT) OrderDelete(OrderTicket()); if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),2); if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),2); } } return(0);Должно быть открыть 5 ордеров, если их меньше 5 то удалить все. Вызов функций каждый тик. Советник выставляет ордера, но если один закрывается, то опять выставляеться ордер,а надо удалить все ордера.
_SS_:
int SecondBuy () { } void Send_BUYLIMIT(double Lot,double cena) { if ( OrdersTotal()==0 ) OrderSend(Symbol(),OP_BUY,0.01,Ask,10,0,Bid+10*Point); if ( OrderType()==OP_BUY && OrdersTotal()<=5)OrderSend(Symbol(),OP_BUYLIMIT,Lot,cena,10,0,cena+tp*Point,0,123,0,Blue); } return(0); int DeletAll () { if (OrdersTotal()!=5 )DeletAll (); for (int i=OrdersTotal()-1; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break; if (OrderType()==OP_BUYSTOP ) OrderDelete(OrderTicket()); if (OrderType()==OP_SELLSTOP ) OrderDelete(OrderTicket()); if (OrderType()==OP_BUYLIMIT ) OrderDelete(OrderTicket()); if (OrderType()==OP_SELLLIMIT) OrderDelete(OrderTicket()); if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),2); if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),2); } } return(0);
Должно быть открыть 5 ордеров, если их меньше 5 то удалить все. Вызов функций каждый тик. Советник выставляет ордера, но если один закрывается, то опять выставляеться ордер,а надо удалить все ордера.
и как быть?
Так Вам же сказали :
По тому куску кода, что вы привели больше комментировать нечего. Либо выкладывайте все, либо ищете ошибку самостоятельно.
К этому куску кода это тоже относится .... И кому оно надо - за Вас догадываться ?????????????
а че тут выкладывать, вот 2 функции и все.
Так они вообще не должны работать.... и стало быть обсуждать нечего.
Как минимум вызов начинается с функции start(){....} ... если это не понято - все остальное бессмысленно.
Удачи.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как сделать чтобы, открылся бай и установилось 4 отложенных ордера байлимит? Итого 5 ордеров, 1 рыночный, а 4 отложники. В чем тут ошибка?