#property copyright "© 2006-2008 BJF Trading Group" #property link "www.iticsoftware.com" #property show_inputs #define major 1 #define minor 0 extern int RepeatN = 3; extern int Slippage = 3; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void init() { } void deinit() { } void start() { fCloseOrders(); } void fCloseOrders() { int cnt = OrdersTotal(); for (int i=cnt-1; i >= 0; i--) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; int type = OrderType(); if (type == OP_BUY) { RefreshRates(); CloseOrder(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID)); continue; } if (type == OP_SELL) { RefreshRates(); CloseOrder(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK)); continue; } } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #include #include int SleepOk = 1000; int SleepErr = 3000; bool CloseOrder(int ticket, double lot, double price) { if (!OrderSelect(ticket, SELECT_BY_TICKET)) return(false); if (OrderCloseTime() > 0) return(false); int dig = MarketInfo(OrderSymbol(), MODE_DIGITS); string _lot = DoubleToStr(lot, 2); string _price = DoubleToStr(price, dig); Print("CloseOrder ", ticket, ", ", _lot, ", ", _price, ", ", Slippage); bool res = OrderClose(ticket, lot, price, Slippage); if (res) { Sleep(SleepOk); return (res); } int code = GetLastError(); Print("CloseOrder failed: ", ErrorDescription(code), " (", code, ")"); Sleep(SleepErr); return (false); }