Скрипт !!!
//+------------------------------------------------------------------+ //| close-all-orders.mq4 | //| Copyright © 2005, Matias Romeo. | //| Custom Metatrader Systems. | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Matias Romeo." #property link "mailto:matiasDOTromeoATgmail.com" int start() { int total = OrdersTotal(); for(int i=total-1;i>=0;i--) { OrderSelect(i, SELECT_BY_POS); int type = OrderType(); bool result = false; switch(type) { //Close opened long positions case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red ); break; //Close opened short positions case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red ); break; //Close pending orders case OP_BUYLIMIT : case OP_BUYSTOP : case OP_SELLLIMIT : case OP_SELLSTOP : result = OrderDelete( OrderTicket() ); } if(result == false) { Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() ); Sleep(3000); } } return(0); }
//+------------------------------------------------------------------+ //| Закрытие всех позиций по рыночной цене | //+------------------------------------------------------------------+ void CloseAllPositions() { bool fc; int err, it; for (int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) { fc=False; for (it=0; it<NumberOfTry; it++) { while (!IsTradeAllowed()) Sleep(5000); if (OrderType()==OP_BUY) { fc=OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clCloseBuy); if (fc) { if (UseSound) PlaySound(NameFileSound); break; } else { err=GetLastError(); Print("Error(",err,") closing buy: ",ErrorDescription(err),", try ",it); Sleep(1000*PauseAfterError); } } if (OrderType()==OP_SELL) { fc=OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell); if (fc) { if (UseSound) PlaySound(NameFileSound); break; } else { err=GetLastError(); Print("Error(",err,") closing sell: ",ErrorDescription(err),", try ",it); Sleep(1000*PauseAfterError); } } } } } } }
упс, чето не мало строк)
спасибо. разберемся
спасибо. разберемся
gen4,
за то время, пока закроется первый ордер, курс уже вполне может уйти, поэтому OrderClose(), требующий свежих курсов, не исполняется по старым. Надо использовать в теле цикла RefreshRates().
за то время, пока закроется первый ордер, курс уже вполне может уйти, поэтому OrderClose(), требующий свежих курсов, не исполняется по старым. Надо использовать в теле цикла RefreshRates().
gen4,
за то время, пока закроется первый ордер, курс уже вполне может уйти, поэтому OrderClose(), требующий свежих курсов, не исполняется по старым. Надо использовать в теле цикла RefreshRates().
за то время, пока закроется первый ордер, курс уже вполне может уйти, поэтому OrderClose(), требующий свежих курсов, не исполняется по старым. Надо использовать в теле цикла RefreshRates().
ммм..., спасибо.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
у меня трабл тут:
прохожу циклом
for(int pos=0;pos<1000;pos++){ //примерный код
OrderSelect(pos,SELECT_BY_POS);
OrderClose(OrderTicket,..... .);
}
не работает) в лучшем случае закрывает 1 ордер ) почему не понятно.
спас.