если МТ4, то в библиотеке @fxsaber я выкладывал свои коды для открытия/закрытия ордеров https://www.mql5.com/ru/code/24829
файл TradePanel_C#.mqh , это переработанные на мой вкус библиотеки И.Ким, давно пользуюсь, особых проблем не замечал
- www.mql5.com
если МТ4, то в библиотеке @fxsaber я выкладывал свои коды для открытия/закрытия ордеров https://www.mql5.com/ru/code/24829
файл TradePanel_C#.mqh , это переработанные на мой вкус библиотеки И.Ким, давно пользуюсь, особых проблем не замечал
Так там же МТ5...
Вот мой код:
bool AllOrderClose() { for(int i=OrdersTotal()-1; i>=0; i--) { if(!OrderSelect(i,SELECT_BY_POS)) { Print("Orders not found"); } if(OrderSymbol()!=Symbol()) continue; if(OrderType()==OP_SELL && OrderMagicNumber()==Magic) { if(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrLavender)) { PlaySound("CoinsDrop2.wav"); } } if(OrderType()==OP_BUY && OrderMagicNumber()==Magic) { if(OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrLavender)) { PlaySound("CoinsDrop2.wav"); } } } return (true); }
в большинстве случаев работает (в тестере 100%), но на реале бывает что пропускает ордера (не все закрывает)... думаю это связано с задержкой исполнения, возможно достаточно просто Slippage увеличить? как-то не хочется на реале тестировать... а может стоит цены закрытия нормализовать?... но тогда бы была ошибка по типу неправильная цена или еще что-то в этом роде
Так там же МТ5...
там чистый МТ4 !
Привет! Кто не пожалеет и поделится своим кодом для закрытия ВСЕХ сделок? Я свой написал, но он, как оказалось, иногда не делает то что от него требуется...
Как-то так:
void AllOrderClose() { for(int i=OrdersTotal()-1; i>=0; i--) { if(!OrderSelect(i,SELECT_BY_POS)) continue; if(OrderMagicNumber()!=Magic) continue; if(OrderSymbol()!=Symbol()) continue; if(OrderType()==OP_SELL) { RefreshRates(); if(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrLavender)) PlaySound("CoinsDrop2.wav"); else i++; } if(OrderType()==OP_BUY) { RefreshRates(); if(OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrLavender)) PlaySound("CoinsDrop2.wav"); else i++; } } return; }
Как-то так:
тоесть, если я правильно понял, если сделка не закрылась тогда переменной i присваевается то же самое значение и проганяется до тех пор пока сделка не будет закрыта?
в смысле если сделка не закрыта переменная i никогда не будет 0...
да. И RefreshRates нужен, в реале первый ордер может закрываться секунд несколько.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования