Прежде, чем удалять или закрывать ордер, его нужно выбрать:
for(cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); ............................................ }
Analitik:
Прежде, чем удалять или закрывать ордер, его нужно выбрать:
Прежде, чем удалять или закрывать ордер, его нужно выбрать:
for(cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); ............................................ }
Выдает ошибку: 'cnt' - variable not define. Хотя она описана...
maxtor:
пробуйте:)Посмотрите, в блоке закрытия и удаления ордеров, где ошибка?
Нужно чтоб в заданное время закрывал ордер и удалял отложенный
Спасибо
//+------------------------------------------------------------------+ //| Exp2.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "" #property link "" extern int TakeProfit = 150; extern int StopLoss = 100; extern int lev= 100; extern int TR= 20; extern double Lots = 0.1; extern int HouerOpen = 10; extern int MinutesOpen = 18; extern int HourClose = 12; extern int MinutesClose = 0; //---- int pos; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- //+------------------------------------------------------------------+ //|Блок выставления ордеров | //+------------------------------------------------------------------+ if(TimeHour(TimeCurrent())==HouerOpen && TimeMinute(TimeCurrent())==MinutesOpen)//здесь может не сработать при отсутствии //цены в это время { //---- if(OrderTotal(OP_BUYSTOP)==0) { OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+lev*Point,3, (Ask+lev*Point)-StopLoss*Point, Ask+(TakeProfit+lev)*Point,"Покупка",222,0,Blue); } //---- if(OrderTotal(OP_SELLSTOP)==0) { OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-lev*Point,3, (Bid-lev*Point)+StopLoss*Point, Bid-(TakeProfit+lev)*Point,"Продажа",222,0,Red); } //---- } //+------------------------------------------------------------------+ //|удаление всех ордеров по данному инструменту | //+------------------------------------------------------------------+ if(TimeHour(TimeCurrent())==HourClose && TimeMinute(TimeCurrent())==MinutesClose)//и здесь тоже может не сработать { for(pos=OrdersTotal()-1; pos>=0; pos--) { if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true) { if(OrderSymbol()==Symbol()) { //---- if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,Blue); } //---- if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,Red); } //---- if(OrderType()==OP_BUYSTOP) { OrderDelete(OrderTicket(),Blue); } //---- if(OrderType()==OP_SELLSTOP) { OrderDelete(OrderTicket(),Red); } //---- } } else Print("Ошибка ", GetLastError()); } } //---- return(0); } //+------------------------------------------------------------------+ int OrderTotal(int type) { int order=0; for(int pos=OrdersTotal()-1; pos>=0; pos--) { if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true) { if(OrderSymbol()==Symbol() && OrderType()==type) { order++; } } else Print("Ошибка ", GetLastError()); } return(order); }
conys:
maxtor:
пробуйте:)Посмотрите, в блоке закрытия и удаления ордеров, где ошибка?
Нужно чтоб в заданное время закрывал ордер и удалял отложенный
Спасибо
Спасибо, конечно. Все красиво, удаляет и закрывает ордера хорошо. Только ставит ордера не всегда. Вот в первом варианте на этой странице, ставятся ордера четко. Нельзя ли взять блок выставления ордеров с первого варианта. У меня не выходит - то переменная отсутствует, то скобка неправильная. Не программист, одним словом. .. :)
maxtor:
А вы где делали эксперемент, в тестере? Или уже пытались выйти
в реалку? У меня на тестере не пропущенно не одной сделки,conys:
maxtor:
пробуйте:)Посмотрите, в блоке закрытия и удаления ордеров, где ошибка?
Нужно чтоб в заданное время закрывал ордер и удалял отложенный
Спасибо
Спасибо, конечно. Все красиво, удаляет и закрывает ордера хорошо. Только ставит ордера не всегда. Вот в первом варианте на этой странице, ставятся ордера четко. Нельзя ли взять блок выставления ордеров с первого варианта. У меня не выходит - то переменная отсутствует, то скобка неправильная. Не программист, одним словом. .. :)
но это на тестере. На демо а темболее в реале в точно указанное время не будет например связи или цены или ещё чегонебудь и ордера не выставяться. Надо указывать не точное время а какойто промежуток времени. Например так:
if(TimeHour(TimeCurrent())>=HouerOpen && TimeMinute(TimeCurrent())>=MinutesOpen && TimeHour(TimeCurrent())<=HouerOpen+1 && TimeMinute(TimeCurrent())<=MinutesOpen+10)//для открытия if(TimeHour(TimeCurrent())>=HourClose && TimeMinute(TimeCurrent())>=MinutesClose && TimeHour(TimeCurrent())<=HourClose+1 && TimeMinute(TimeCurrent())<=MinutesClose+10)//для закрытияНу и это ещё не всё, много ещё что надо для реальной торговли, хотя в таком виде уже можно пробовать "дёргаться" на рынке.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Посмотрите, в блоке закрытия и удаления ордеров, где ошибка?
Нужно чтоб в заданное время закрывал ордер и удалял отложенный
Спасибо