diff --git a/MtApi/MtApiClient.cs b/MtApi/MtApiClient.cs index cd44a83f..19084530 100755 --- a/MtApi/MtApiClient.cs +++ b/MtApi/MtApiClient.cs @@ -134,26 +134,34 @@ namespace MtApi public int OrderSendBuy(string symbol, double volume, int slippage) { - var commandParameters = new ArrayList { symbol, volume, slippage}; - return sendCommand(MtCommandType.OrderSendBuy, commandParameters); + return OrderSendBuy(symbol, volume, slippage, 0, 0, null, 0); } public int OrderSendSell(string symbol, double volume, int slippage) { - var commandParameters = new ArrayList { symbol, volume, slippage }; - return sendCommand(MtCommandType.OrderSendSell, commandParameters); + return OrderSendSell(symbol, volume, slippage, 0, 0, null, 0); } public int OrderSendBuy(string symbol, double volume, int slippage, double stoploss, double takeprofit) { - var commandParameters = new ArrayList { symbol, volume, slippage, stoploss, takeprofit }; - return sendCommand(MtCommandType.OrderSendBuyStoplossProfit, commandParameters); + return OrderSendBuy(symbol, volume, slippage, stoploss, takeprofit, null, 0); } public int OrderSendSell(string symbol, double volume, int slippage, double stoploss, double takeprofit) { - var commandParameters = new ArrayList { symbol, volume, slippage, stoploss, takeprofit }; - return sendCommand(MtCommandType.OrderSendSellStoplossProfit, commandParameters); + return OrderSendSell(symbol, volume, slippage, stoploss, takeprofit, null, 0); + } + + public int OrderSendBuy(string symbol, double volume, int slippage, double stoploss, double takeprofit, string comment, int magic) + { + var commandParameters = new ArrayList { symbol, volume, slippage, stoploss, takeprofit, comment, magic }; + return sendCommand(MtCommandType.OrderSendBuy, commandParameters); + } + + public int OrderSendSell(string symbol, double volume, int slippage, double stoploss, double takeprofit, string comment, int magic) + { + var commandParameters = new ArrayList { symbol, volume, slippage, stoploss, takeprofit, comment, magic }; + return sendCommand(MtCommandType.OrderSendSell, commandParameters); } public bool OrderClose(int ticket, double lots, double price, int slippage, Color color) diff --git a/MtApi/MtCommandType.cs b/MtApi/MtCommandType.cs index fbcef7d5..20741383 100755 --- a/MtApi/MtCommandType.cs +++ b/MtApi/MtCommandType.cs @@ -13,8 +13,6 @@ namespace MtApi OrderSend = 1, OrderSendBuy = 1001, OrderSendSell = 1002, - OrderSendBuyStoplossProfit = 10011, - OrderSendSellStoplossProfit = 10012, OrderClose = 2, OrderCloseByCurrentPrice = 152, OrderCloseBy = 3, diff --git a/MtApi/Properties/AssemblyInfo.cs b/MtApi/Properties/AssemblyInfo.cs index afb673fa..47ddfe8b 100755 --- a/MtApi/Properties/AssemblyInfo.cs +++ b/MtApi/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.21.0")] -[assembly: AssemblyFileVersion("1.0.21.0")] +[assembly: AssemblyVersion("1.0.23.0")] +[assembly: AssemblyFileVersion("1.0.23.0")] diff --git a/MtApiInstaller/Product.wxs b/MtApiInstaller/Product.wxs index 20aae5c6..3cc4732e 100755 --- a/MtApiInstaller/Product.wxs +++ b/MtApiInstaller/Product.wxs @@ -1,7 +1,7 @@ - + diff --git a/mq4/MtApi.ex4 b/mq4/MtApi.ex4 index 75c557d4..14186771 100755 Binary files a/mq4/MtApi.ex4 and b/mq4/MtApi.ex4 differ diff --git a/mq4/MtApi.mq4 b/mq4/MtApi.mq4 index ec8e98c9..4e430e20 100755 --- a/mq4/MtApi.mq4 +++ b/mq4/MtApi.mq4 @@ -321,10 +321,31 @@ int executeCommand() PrintParamError("slippage"); } + if (!getDoubleValue(ExpertHandle, 3, stoplossValue)) + { + PrintParamError("stoploss"); + } + + if (!getDoubleValue(ExpertHandle, 4, takeprofitValue)) + { + PrintParamError("takeprofit"); + } + + if (!getStringValue(ExpertHandle, 5, commentValue)) + { + PrintParamError("comment"); + } + + if (!getIntValue(ExpertHandle, 6, magicValue)) + { + PrintParamError("magic"); + } + priceValue = MarketInfo(symbolValue, MODE_ASK); if (!sendIntResponse(ExpertHandle, OrderSend(symbolValue, OP_BUY, volumeValue, priceValue - , slippageValue, 0, 0))) + , slippageValue, stoplossValue, takeprofitValue + , commentValue, magicValue))) { PrintResponseError("OrderSend"); } @@ -347,32 +368,6 @@ int executeCommand() PrintParamError("slippage"); } - priceValue = MarketInfo(symbolValue, MODE_BID); - - if (!sendIntResponse(ExpertHandle, OrderSend(symbolValue, OP_SELL, volumeValue, priceValue - , slippageValue, 0, 0))) - { - PrintResponseError("OrderSend"); - } - - break; - - case 10011: // OrderSendBuy (stoploss and profit) - if (!getStringValue(ExpertHandle, 0, symbolValue)) - { - PrintParamError("symbol"); - } - - if (!getDoubleValue(ExpertHandle, 1, volumeValue)) - { - PrintParamError("volume"); - } - - if (!getIntValue(ExpertHandle, 2, slippageValue)) - { - PrintParamError("slippage"); - } - if (!getDoubleValue(ExpertHandle, 3, stoplossValue)) { PrintParamError("stoploss"); @@ -381,53 +376,28 @@ int executeCommand() if (!getDoubleValue(ExpertHandle, 4, takeprofitValue)) { PrintParamError("takeprofit"); - } - - priceValue = MarketInfo(symbolValue, MODE_ASK); - - if (!sendIntResponse(ExpertHandle, OrderSend(symbolValue, OP_BUY, volumeValue, priceValue - , slippageValue, stoplossValue, takeprofitValue))) - { - PrintResponseError("OrderSend"); - } - - break; - - case 10012: // OrderSendSell (stoploss and profit) - if (!getStringValue(ExpertHandle, 0, symbolValue)) - { - PrintParamError("symbol"); - } - - if (!getDoubleValue(ExpertHandle, 1, volumeValue)) - { - PrintParamError("volume"); - } - - if (!getIntValue(ExpertHandle, 2, slippageValue)) - { - PrintParamError("slippage"); } - if (!getDoubleValue(ExpertHandle, 3, stoplossValue)) + if (!getStringValue(ExpertHandle, 5, commentValue)) { - PrintParamError("stoploss"); + PrintParamError("comment"); } - - if (!getDoubleValue(ExpertHandle, 4, takeprofitValue)) - { - PrintParamError("takeprofit"); - } + if (!getIntValue(ExpertHandle, 6, magicValue)) + { + PrintParamError("magic"); + } + priceValue = MarketInfo(symbolValue, MODE_BID); if (!sendIntResponse(ExpertHandle, OrderSend(symbolValue, OP_SELL, volumeValue, priceValue - , slippageValue, stoplossValue, takeprofitValue))) + , slippageValue, stoplossValue, takeprofitValue + , commentValue, magicValue))) { PrintResponseError("OrderSend"); } - break; + break; case 2: // OrderClose if (!getIntValue(ExpertHandle, 0, ticketValue))