diff --git a/MtApi/Monitors/TradeMonitor.cs b/MtApi/Monitors/TradeMonitor.cs index a2a855fe..fa230d09 100644 --- a/MtApi/Monitors/TradeMonitor.cs +++ b/MtApi/Monitors/TradeMonitor.cs @@ -89,7 +89,7 @@ namespace MtApi.Monitors { //get closed orders from history with actual values var historyOrders = ApiClient.GetOrders(OrderSelectSource.MODE_HISTORY) ?? []; - closedOrders = closeOrdersTemp.Where(cot => historyOrders.Find(a => a.Ticket == cot.Ticket) != null).ToList(); + closedOrders = historyOrders.Where(cot => closeOrdersTemp.Find(a => a.Ticket == cot.Ticket) != null).ToList(); } } diff --git a/TestClients/TestApiClientUI/Form1.cs b/TestClients/TestApiClientUI/Form1.cs index c3ad4aa1..acb592bd 100644 --- a/TestClients/TestApiClientUI/Form1.cs +++ b/TestClients/TestApiClientUI/Form1.cs @@ -1,9 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Globalization; -using MtApi; +using MtApi; using MtApi.Monitors; +using System.Globalization; using System.Runtime.InteropServices; namespace TestApiClientUI @@ -1088,12 +1085,12 @@ namespace TestApiClientUI { if (e.Opened != null) { - PrintLog($"{sender.GetType()}: Opened orders - {string.Join(", ", e.Opened.Select(o => o.Ticket).ToList())}"); + PrintLog($"{sender.GetType()}: Opened orders - {string.Join(", ", e.Opened.Select(o => new { o.Ticket, o.Symbol, o.OpenPrice, o.OpenTime }).ToList())}"); } if (e.Closed != null) { - PrintLog($"{sender.GetType()}: Closed orders - {string.Join(", ", e.Closed.Select(o => o.Ticket).ToList())}"); + PrintLog($"{sender.GetType()}: Closed orders - {string.Join(", ", e.Closed.Select(o => new { o.Ticket, o.Symbol, o.ClosePrice, o.CloseTime }).ToList())}"); } } diff --git a/mq4/MtApi.ex4 b/mq4/MtApi.ex4 index 9d1b3d0a..1c266664 100755 Binary files a/mq4/MtApi.ex4 and b/mq4/MtApi.ex4 differ diff --git a/mq4/MtApi.mq4 b/mq4/MtApi.mq4 index 08696492..e721df62 100755 --- a/mq4/MtApi.mq4 +++ b/mq4/MtApi.mq4 @@ -3795,16 +3795,25 @@ bool OrderCloseAll() { if (OrderSelect(i, SELECT_BY_POS)) { - int type = OrderType(); + int type = OrderType(); + bool order_closed = true; switch(type) { //Close opened long positions - case OP_BUY: OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red ); + case OP_BUY: + { + order_closed = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red ); break; + } //Close opened short positions - case OP_SELL: OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red ); + case OP_SELL: + { + order_closed = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red ); break; + } } + if (order_closed == false) + Print("Failed to close order ", OrderTicket()); } }