diff --git a/MtApi/MqlRates.cs b/MtApi/MqlRates.cs
index 539e74cb..36fca8c5 100644
--- a/MtApi/MqlRates.cs
+++ b/MtApi/MqlRates.cs
@@ -5,12 +5,7 @@ namespace MtApi
public class MqlRates
{
public int MtTime { get; set; }
-
- public DateTime Time
- {
- get { return MtApiTimeConverter.ConvertFromMtTime(MtTime); }
- }
-
+ public DateTime Time => MtApiTimeConverter.ConvertFromMtTime(MtTime);
public double Open { get; set; }
public double High { get; set; }
public double Low { get; set; }
diff --git a/MtApi/MqlTick.cs b/MtApi/MqlTick.cs
new file mode 100755
index 00000000..f362cf27
--- /dev/null
+++ b/MtApi/MqlTick.cs
@@ -0,0 +1,14 @@
+using System;
+
+namespace MtApi
+{
+ public class MqlTick
+ {
+ public int MtTime { get; set; }
+ public DateTime Time => MtApiTimeConverter.ConvertFromMtTime(MtTime);
+ public double Bid { get; set; }
+ public double Ask { get; set; }
+ public double Last { get; set; }
+ public ulong Volume { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/MtApi/MtApi.csproj b/MtApi/MtApi.csproj
index 1118608b..1d995095 100755
--- a/MtApi/MtApi.csproj
+++ b/MtApi/MtApi.csproj
@@ -65,6 +65,7 @@
+
@@ -99,6 +100,7 @@
+
@@ -108,6 +110,7 @@
+
diff --git a/MtApi/MtApiClient.cs b/MtApi/MtApiClient.cs
index 431ee383..296077d0 100755
--- a/MtApi/MtApiClient.cs
+++ b/MtApi/MtApiClient.cs
@@ -1546,6 +1546,23 @@ namespace MtApi
return response?.Value ?? 0;
}
+
+ ///
+ ///Returns the corresponding property of a specified symbol.
+ ///
+ ///Symbol name.
+ ///
+ /// MqlTick object, to which the current prices and time of the last price update will be placed.
+ ///
+ public MqlTick SymbolInfoTick(string symbol)
+ {
+ var response = SendRequest(new SymbolInfoTickRequest
+ {
+ Symbol = symbol
+ });
+
+ return response?.Tick;
+ }
#endregion
#region Private Methods
diff --git a/MtApi/MtQuote.cs b/MtApi/MtQuote.cs
index e3a1d998..34fb0954 100755
--- a/MtApi/MtQuote.cs
+++ b/MtApi/MtQuote.cs
@@ -1,9 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace MtApi
+namespace MtApi
{
public class MtQuote
{
diff --git a/MtApi/Requests/RequestType.cs b/MtApi/Requests/RequestType.cs
index 7f43184c..38a9d2ae 100644
--- a/MtApi/Requests/RequestType.cs
+++ b/MtApi/Requests/RequestType.cs
@@ -14,6 +14,7 @@
CopyRates = 9,
Session = 10,
SeriesInfoInteger = 11,
- SymbolInfoDouble = 12
+ SymbolInfoDouble = 12,
+ SymbolInfoTick = 13
}
}
\ No newline at end of file
diff --git a/MtApi/Requests/SymbolInfoTickRequest.cs b/MtApi/Requests/SymbolInfoTickRequest.cs
new file mode 100755
index 00000000..2e01e95c
--- /dev/null
+++ b/MtApi/Requests/SymbolInfoTickRequest.cs
@@ -0,0 +1,9 @@
+namespace MtApi.Requests
+{
+ internal class SymbolInfoTickRequest: RequestBase
+ {
+ public override RequestType RequestType => RequestType.SymbolInfoTick;
+
+ public string Symbol { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/MtApi/Responses/SymbolInfoTickResponse.cs b/MtApi/Responses/SymbolInfoTickResponse.cs
new file mode 100755
index 00000000..e22af346
--- /dev/null
+++ b/MtApi/Responses/SymbolInfoTickResponse.cs
@@ -0,0 +1,7 @@
+namespace MtApi.Responses
+{
+ internal class SymbolInfoTickResponse: ResponseBase
+ {
+ public MqlTick Tick { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/TestClients/TestApiClientUI/Form1.Designer.cs b/TestClients/TestApiClientUI/Form1.Designer.cs
index 6c112682..8c9b2b14 100644
--- a/TestClients/TestApiClientUI/Form1.Designer.cs
+++ b/TestClients/TestApiClientUI/Form1.Designer.cs
@@ -161,6 +161,7 @@
this.button33 = new System.Windows.Forms.Button();
this.label30 = new System.Windows.Forms.Label();
this.comboBox8 = new System.Windows.Forms.ComboBox();
+ this.button34 = new System.Windows.Forms.Button();
this.groupBox1.SuspendLayout();
this.statusStrip1.SuspendLayout();
this.groupBox2.SuspendLayout();
@@ -1043,6 +1044,7 @@
//
// tabPage4
//
+ this.tabPage4.Controls.Add(this.button34);
this.tabPage4.Controls.Add(this.comboBox8);
this.tabPage4.Controls.Add(this.label30);
this.tabPage4.Controls.Add(this.button33);
@@ -1596,6 +1598,16 @@
this.comboBox8.Size = new System.Drawing.Size(186, 21);
this.comboBox8.TabIndex = 31;
//
+ // button34
+ //
+ this.button34.Location = new System.Drawing.Point(387, 47);
+ this.button34.Name = "button34";
+ this.button34.Size = new System.Drawing.Size(112, 23);
+ this.button34.TabIndex = 32;
+ this.button34.Text = "SymbolInfoTick";
+ this.button34.UseVisualStyleBackColor = true;
+ this.button34.Click += new System.EventHandler(this.button34_Click);
+ //
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -1775,6 +1787,7 @@
private System.Windows.Forms.Button button33;
private System.Windows.Forms.Label label30;
private System.Windows.Forms.ComboBox comboBox8;
+ private System.Windows.Forms.Button button34;
}
}
diff --git a/TestClients/TestApiClientUI/Form1.cs b/TestClients/TestApiClientUI/Form1.cs
index e06f7d50..fc37ee5b 100644
--- a/TestClients/TestApiClientUI/Form1.cs
+++ b/TestClients/TestApiClientUI/Form1.cs
@@ -123,7 +123,7 @@ namespace TestApiClientUI
var msg =
$"TimeBar: Symbol = {e.TimeBar.Symbol}, OpenTime = {e.TimeBar.OpenTime}, CloseTime = {e.TimeBar.CloseTime}, Open = {e.TimeBar.Open}, Close = {e.TimeBar.Close}, High = {e.TimeBar.High}, Low = {e.TimeBar.Low}";
Console.WriteLine(msg);
- AddToLog(msg);
+ PrintLog(msg);
}
private void apiClient_QuoteUpdated(object sender, string symbol, double bid, double ask)
@@ -281,7 +281,7 @@ namespace TestApiClientUI
sendedOrders.Add(orderId);
}
- AddToLog($"Closed order result: {result}, ticketId = {orderId}, volume - {volume}, slippage {slippage}");
+ PrintLog($"Closed order result: {result}, ticketId = {orderId}, volume - {volume}, slippage {slippage}");
}
foreach (var orderId in sendedOrders)
@@ -317,7 +317,7 @@ namespace TestApiClientUI
var result = _apiClient.OrderCloseBy(ticket, opposite, color);
- AddToLog($"ClosedBy order result: {result}, ticketId = {ticket}, opposite {opposite}");
+ PrintLog($"ClosedBy order result: {result}, ticketId = {ticket}, opposite {opposite}");
}
}
@@ -325,26 +325,26 @@ namespace TestApiClientUI
{
var result = _apiClient.OrderClosePrice();
textBoxOrderPrice.Text = result.ToString(CultureInfo.CurrentCulture);
- AddToLog($"OrderClosePrice result: {result}");
+ PrintLog($"OrderClosePrice result: {result}");
}
private void OrderCloseTime()
{
var result = _apiClient.OrderCloseTime();
- AddToLog($"OrderCloseTime result: {result}");
+ PrintLog($"OrderCloseTime result: {result}");
}
private void OrderComment()
{
var result = _apiClient.OrderComment();
textBoxOrderComment.Text = result;
- AddToLog($"OrderComment result: {result}");
+ PrintLog($"OrderComment result: {result}");
}
private void OrderCommission()
{
var result = _apiClient.OrderCommission();
- AddToLog($"OrderCommission result: {result}");
+ PrintLog($"OrderCommission result: {result}");
}
private void OrderDelete()
@@ -353,26 +353,26 @@ namespace TestApiClientUI
{
var ticket = (int)listBoxSendedOrders.SelectedItems[0];
var result = _apiClient.OrderDelete(ticket);
- AddToLog($"Delete order result: {result}, ticketId = {ticket}");
+ PrintLog($"Delete order result: {result}, ticketId = {ticket}");
}
}
private void OrderExpiration()
{
var result = _apiClient.OrderExpiration();
- AddToLog($"Expiration order result: {result}");
+ PrintLog($"Expiration order result: {result}");
}
private void OrderLots()
{
var result = _apiClient.OrderLots();
- AddToLog($"Lots order result: {result}");
+ PrintLog($"Lots order result: {result}");
}
private void OrderMagicNumber()
{
var result = _apiClient.OrderMagicNumber();
- AddToLog($"MagicNumber order result: {result}");
+ PrintLog($"MagicNumber order result: {result}");
}
private void OrderModify()
@@ -410,20 +410,20 @@ namespace TestApiClientUI
var result = _apiClient.OrderModify(ticket, price, stoploss, takeprofit, expiration, arrowColor);
- AddToLog($"OrderModify result: {result}");
+ PrintLog($"OrderModify result: {result}");
}
}
private void OrderOpenPrice()
{
var result = _apiClient.OrderOpenPrice();
- AddToLog($"OrderOpenPrice result: {result}");
+ PrintLog($"OrderOpenPrice result: {result}");
}
private void OrderOpenTime()
{
var result = _apiClient.OrderOpenTime();
- AddToLog($"OpenTime order result: {result}");
+ PrintLog($"OpenTime order result: {result}");
}
private void OrderPrint()
@@ -434,7 +434,7 @@ namespace TestApiClientUI
private void OrderProfit()
{
var result = _apiClient.OrderProfit();
- AddToLog($"Profit order result: {result}");
+ PrintLog($"Profit order result: {result}");
}
private void OrderSelect()
@@ -452,60 +452,60 @@ namespace TestApiClientUI
{
var result = _apiClient.OrderSelect(ticket, OrderSelectMode.SELECT_BY_POS);
- AddToLog($"OrderSelect result: {result}");
+ PrintLog($"OrderSelect result: {result}");
}
}
private void OrdersHistoryTotal()
{
var result = _apiClient.OrdersHistoryTotal();
- AddToLog($"OrdersHistoryTotal result: {result}");
+ PrintLog($"OrdersHistoryTotal result: {result}");
}
private void OrderStopLoss()
{
var result = _apiClient.OrderStopLoss();
textBoxOrderStoploss.Text = result.ToString(CultureInfo.CurrentCulture);
- AddToLog($"OrderStopLoss result: {result}");
+ PrintLog($"OrderStopLoss result: {result}");
}
private void OrdersTotal()
{
var result = _apiClient.OrdersTotal();
- AddToLog($"OrdersTotal result: {result}");
+ PrintLog($"OrdersTotal result: {result}");
}
private void OrderSwap()
{
var result = _apiClient.OrderSwap();
- AddToLog($"OrderSwap result: {result}");
+ PrintLog($"OrderSwap result: {result}");
}
private void OrderSymbol()
{
var result = _apiClient.OrderSymbol();
textBoxOrderSymbol.Text = result;
- AddToLog($"OrderSymbol result: {result}");
+ PrintLog($"OrderSymbol result: {result}");
}
private void OrderTakeProfit()
{
var result = _apiClient.OrderTakeProfit();
textBoxOrderProffit.Text = result.ToString(CultureInfo.CurrentCulture);
- AddToLog($"OrderTakeProfit result: {result}");
+ PrintLog($"OrderTakeProfit result: {result}");
}
private void OrderTicket()
{
var result = _apiClient.OrderTicket();
- AddToLog($"OrderTicket result: {result}");
+ PrintLog($"OrderTicket result: {result}");
}
private void OrderType()
{
var result = _apiClient.OrderType();
comboBoxOrderCommand.SelectedIndex = (int)result;
- AddToLog($"OrderType result: {result}");
+ PrintLog($"OrderType result: {result}");
}
private void button2_Click(object sender, EventArgs e)
@@ -513,7 +513,7 @@ namespace TestApiClientUI
_groupOrderCommands[comboBoxSelectedCommand.SelectedIndex]();
}
- private void AddToLog(string msg)
+ private void PrintLog(string msg)
{
RunOnUiThread(() =>
{
@@ -531,79 +531,79 @@ namespace TestApiClientUI
case 0:
{
var result = _apiClient.GetLastError();
- AddToLog($"GetLastError result: {result}");
+ PrintLog($"GetLastError result: {result}");
}
break;
case 1:
{
var result = _apiClient.IsConnected();
- AddToLog($"IsConnected result: {result}");
+ PrintLog($"IsConnected result: {result}");
}
break;
case 2:
{
var result = _apiClient.IsDemo();
- AddToLog($"IsDemo result: {result}");
+ PrintLog($"IsDemo result: {result}");
}
break;
case 3:
{
var result = _apiClient.IsDllsAllowed();
- AddToLog($"IsDllsAllowed result: {result}");
+ PrintLog($"IsDllsAllowed result: {result}");
}
break;
case 4:
{
var result = _apiClient.IsExpertEnabled();
- AddToLog($"IsExpertEnabled result: {result}");
+ PrintLog($"IsExpertEnabled result: {result}");
}
break;
case 5:
{
var result = _apiClient.IsLibrariesAllowed();
- AddToLog($"IsLibrariesAllowed result: {result}");
+ PrintLog($"IsLibrariesAllowed result: {result}");
}
break;
case 6:
{
var result = _apiClient.IsOptimization();
- AddToLog($"IsOptimization result: {result}");
+ PrintLog($"IsOptimization result: {result}");
}
break;
case 7:
{
var result = _apiClient.IsStopped();
- AddToLog($"IsStopped result: {result}");
+ PrintLog($"IsStopped result: {result}");
}
break;
case 8:
{
var result = _apiClient.IsTesting();
- AddToLog($"IsTesting result: {result}");
+ PrintLog($"IsTesting result: {result}");
}
break;
case 9:
{
var result = _apiClient.IsTradeAllowed();
- AddToLog($"IsTradeAllowed result: {result}");
+ PrintLog($"IsTradeAllowed result: {result}");
}
break;
case 10:
{
var result = _apiClient.IsTradeContextBusy();
- AddToLog($"IsTradeContextBusy result: {result}");
+ PrintLog($"IsTradeContextBusy result: {result}");
}
break;
case 11:
{
var result = _apiClient.IsVisualMode();
- AddToLog($"IsVisualMode result: {result}");
+ PrintLog($"IsVisualMode result: {result}");
}
break;
case 12:
{
var result = _apiClient.UninitializeReason();
- AddToLog($"UninitializeReason result: {result}");
+ PrintLog($"UninitializeReason result: {result}");
}
break;
case 13:
@@ -611,7 +611,7 @@ namespace TestApiClientUI
int errorCode;
int.TryParse(textBoxErrorCode.Text, out errorCode);
var result = _apiClient.ErrorDescription(errorCode);
- AddToLog($"ErrorDescription result: {result}");
+ PrintLog($"ErrorDescription result: {result}");
}
break;
default:
@@ -626,97 +626,97 @@ namespace TestApiClientUI
case 0:
{
var result = _apiClient.AccountBalance();
- AddToLog($"AccountBalance result: {result}");
+ PrintLog($"AccountBalance result: {result}");
}
break;
case 1:
{
var result = _apiClient.AccountCredit();
- AddToLog($"AccountCredit result: {result}");
+ PrintLog($"AccountCredit result: {result}");
}
break;
case 2:
{
var result = _apiClient.AccountCompany();
- AddToLog($"AccountCompany result: {result}");
+ PrintLog($"AccountCompany result: {result}");
}
break;
case 3:
{
var result = _apiClient.AccountCurrency();
- AddToLog($"AccountCurrency result: {result}");
+ PrintLog($"AccountCurrency result: {result}");
}
break;
case 4:
{
var result = _apiClient.AccountEquity();
- AddToLog($"AccountEquity result: {result}");
+ PrintLog($"AccountEquity result: {result}");
}
break;
case 5:
{
var result = _apiClient.AccountFreeMargin();
- AddToLog($"AccountFreeMargin result: {result}");
+ PrintLog($"AccountFreeMargin result: {result}");
}
break;
case 6:
{
var result = _apiClient.AccountFreeMarginCheck(textBoxAccountInfoSymbol.Text, (TradeOperation)comboBoxAccountInfoCmd.SelectedIndex, int.Parse(textBoxAccountInfoVolume.Text));
- AddToLog($"AccountFreeMarginCheck result: {result}");
+ PrintLog($"AccountFreeMarginCheck result: {result}");
}
break;
case 7:
{
var result = _apiClient.AccountFreeMarginMode();
- AddToLog($"AccountFreeMarginMode result: {result}");
+ PrintLog($"AccountFreeMarginMode result: {result}");
}
break;
case 8:
{
var result = _apiClient.AccountLeverage();
- AddToLog($"AccountLeverage result: {result}");
+ PrintLog($"AccountLeverage result: {result}");
}
break;
case 9:
{
var result = _apiClient.AccountMargin();
- AddToLog($"AccountMargin result: {result}");
+ PrintLog($"AccountMargin result: {result}");
}
break;
case 10:
{
var result = _apiClient.AccountName();
- AddToLog($"AccountName result: {result}");
+ PrintLog($"AccountName result: {result}");
}
break;
case 11:
{
var result = _apiClient.AccountNumber();
- AddToLog($"AccountNumber result: {result}");
+ PrintLog($"AccountNumber result: {result}");
}
break;
case 12:
{
var result = _apiClient.AccountProfit();
- AddToLog($"AccountProfit result: {result}");
+ PrintLog($"AccountProfit result: {result}");
}
break;
case 13:
{
var result = _apiClient.AccountServer();
- AddToLog($"AccountServer result: {result}");
+ PrintLog($"AccountServer result: {result}");
}
break;
case 14:
{
var result = _apiClient.AccountStopoutLevel();
- AddToLog($"AccountStopoutLevel result: {result}");
+ PrintLog($"AccountStopoutLevel result: {result}");
}
break;
case 15:
{
var result = _apiClient.AccountStopoutMode();
- AddToLog($"AccountStopoutMode result: {result}");
+ PrintLog($"AccountStopoutMode result: {result}");
}
break;
default:
@@ -732,7 +732,7 @@ namespace TestApiClientUI
Enum.TryParse(comboBox8.Text, out propId);
var result = await Execute(() => _apiClient.MarketInfo(symbol, propId));
- AddToLog($"MarketInfo result: {result}");
+ PrintLog($"MarketInfo result: {result}");
}
private void button6_Click(object sender, EventArgs e)
@@ -810,19 +810,19 @@ namespace TestApiClientUI
private void button13_Click(object sender, EventArgs e)
{
var retVal = _apiClient.TimeCurrent();
- AddToLog($"TimeCurrent result: {retVal}");
+ PrintLog($"TimeCurrent result: {retVal}");
}
private void button14_Click(object sender, EventArgs e)
{
var retVal = _apiClient.TimeLocal();
- AddToLog($"TimeLocal result: {retVal}");
+ PrintLog($"TimeLocal result: {retVal}");
}
private void buttonRefreshRates_Click(object sender, EventArgs e)
{
var retVal = _apiClient.RefreshRates();
- AddToLog($"RefreshRates result: {retVal}");
+ PrintLog($"RefreshRates result: {retVal}");
}
private void listBoxEventLog_MouseDoubleClick(object sender, MouseEventArgs e)
@@ -841,11 +841,11 @@ namespace TestApiClientUI
}
catch (MtConnectionException ex)
{
- AddToLog("MtExecutionException: " + ex.Message);
+ PrintLog("MtExecutionException: " + ex.Message);
}
catch (MtExecutionException ex)
{
- AddToLog("MtExecutionException: " + ex.Message + "; ErrorCode = " + ex.ErrorCode);
+ PrintLog("MtExecutionException: " + ex.Message + "; ErrorCode = " + ex.ErrorCode);
}
return result;
@@ -898,7 +898,7 @@ namespace TestApiClientUI
var ticket = await Execute(() => _apiClient.OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrowColor));
- AddToLog($"Sended order result: ticket = {ticket}");
+ PrintLog($"Sended order result: ticket = {ticket}");
}
//GetOrder
@@ -914,7 +914,7 @@ namespace TestApiClientUI
{
var result =
$"Order: Ticket = {order.Ticket}, Symbol = {order.Symbol}, Operation = {order.Operation}, OpenPrice = {order.OpenPrice}, ClosePrice = {order.ClosePrice}, Lots = {order.Lots}, Profit = {order.Profit}, Comment = {order.Comment}, Commission = {order.Commission}, MagicNumber = {order.MagicNumber}, OpenTime = {order.OpenTime}, CloseTime = {order.CloseTime}, Swap = {order.Swap}, Expiration = {order.Expiration}, TakeProfit = {order.TakeProfit}, StopLoss = {order.StopLoss}";
- AddToLog(result);
+ PrintLog(result);
}
}
@@ -932,12 +932,12 @@ namespace TestApiClientUI
{
var result =
$"Order: Ticket = {order.Ticket}, Symbol = {order.Symbol}, Operation = {order.Operation}, OpenPrice = {order.OpenPrice}, ClosePrice = {order.ClosePrice}, Lots = {order.Lots}, Profit = {order.Profit}, Comment = {order.Comment}, Commission = {order.Commission}, MagicNumber = {order.MagicNumber}, OpenTime = {order.OpenTime}, CloseTime = {order.CloseTime}, Swap = {order.Swap}, Expiration = {order.Expiration}, TakeProfit = {order.TakeProfit}, StopLoss = {order.StopLoss}";
- AddToLog(result);
+ PrintLog(result);
}
}
else
{
- AddToLog("GetOrders: 0 orders");
+ PrintLog("GetOrders: 0 orders");
}
}
@@ -953,7 +953,7 @@ namespace TestApiClientUI
var ticket = await Execute(() => _apiClient.OrderSendBuy(symbol, volume, slippage));
- AddToLog(
+ PrintLog(
$"Sended order result: ticketId = {ticket}, symbol = {symbol}, volume = {volume}, slippage = {slippage}");
}
@@ -969,7 +969,7 @@ namespace TestApiClientUI
var ticket = await Execute(() => _apiClient.OrderSendSell(symbol, volume, slippage));
- AddToLog($"Sended order result: ticketId = {ticket}, symbol = {symbol}, volume = {volume}, slippage = {slippage}");
+ PrintLog($"Sended order result: ticketId = {ticket}, symbol = {symbol}, volume = {volume}, slippage = {slippage}");
}
//OrderClose
@@ -994,7 +994,7 @@ namespace TestApiClientUI
closed = await Execute(() => _apiClient.OrderClose(ticket, volume, price, slippage));
}
- AddToLog($"Close order result: {closed}, ticket = {ticket}");
+ PrintLog($"Close order result: {closed}, ticket = {ticket}");
}
//OrderCloseBy
@@ -1005,7 +1005,7 @@ namespace TestApiClientUI
var closed = await Execute(() => _apiClient.OrderCloseBy(ticket, opposite));
- AddToLog($"Close order result: {closed}, ticket = {ticket}");
+ PrintLog($"Close order result: {closed}, ticket = {ticket}");
}
//OrderDelete
@@ -1015,7 +1015,7 @@ namespace TestApiClientUI
var deleted = await Execute(() => _apiClient.OrderDelete(ticket));
- AddToLog($"Delete order result: {deleted}, ticket = {ticket}");
+ PrintLog($"Delete order result: {deleted}, ticket = {ticket}");
}
//OrderModify
@@ -1052,7 +1052,7 @@ namespace TestApiClientUI
var modified = await Execute(() => _apiClient.OrderModify(ticket, price, stoploss, takeprofit, expiration, color));
- AddToLog($"Modify order result: {modified}, ticket = {ticket}");
+ PrintLog($"Modify order result: {modified}, ticket = {ticket}");
}
//iCustom (ZigZag)
@@ -1066,7 +1066,7 @@ namespace TestApiClientUI
const int shift = 0;
var retVal = await Execute(() => _apiClient.iCustom(symbol, (int)timeframe, name, parameters, mode, shift));
- AddToLog($"ICustom result: {retVal}");
+ PrintLog($"ICustom result: {retVal}");
}
//iCustom (Parabolic)
@@ -1080,7 +1080,7 @@ namespace TestApiClientUI
const int shift = 1;
var retVal = await Execute(() => _apiClient.iCustom(symbol, (int)timeframe, name, parameters, mode, shift));
- AddToLog($"ICustom result: {retVal}");
+ PrintLog($"ICustom result: {retVal}");
}
//CopyRates
@@ -1101,12 +1101,12 @@ namespace TestApiClientUI
{
var result =
$"Rate: Time = {r.Time}, Open = {r.Open}, High = {r.High}, Low = {r.Low}, Close = {r.Close}, TickVolume = {r.TickVolume}, Spread = {r.Spread}, RealVolume = {r.RealVolume}";
- AddToLog(result);
+ PrintLog(result);
}
}
else
{
- AddToLog("CopyRates: 0 rates");
+ PrintLog("CopyRates: 0 rates");
}
}
@@ -1128,12 +1128,12 @@ namespace TestApiClientUI
{
var result =
$"Rate: Time = {r.Time}, Open = {r.Open}, High = {r.High}, Low = {r.Low}, Close = {r.Close}, TickVolume = {r.TickVolume}, Spread = {r.Spread}, RealVolume = {r.RealVolume}";
- AddToLog(result);
+ PrintLog(result);
}
}
else
{
- AddToLog("CopyRates: 0 rates");
+ PrintLog("CopyRates: 0 rates");
}
}
@@ -1155,12 +1155,12 @@ namespace TestApiClientUI
{
var result =
$"Rate: Time = {r.Time}, Open = {r.Open}, High = {r.High}, Low = {r.Low}, Close = {r.Close}, TickVolume = {r.TickVolume}, Spread = {r.Spread}, RealVolume = {r.RealVolume}";
- AddToLog(result);
+ PrintLog(result);
}
}
else
{
- AddToLog("CopyRates: 0 rates");
+ PrintLog("CopyRates: 0 rates");
}
}
@@ -1171,7 +1171,7 @@ namespace TestApiClientUI
if (!string.IsNullOrEmpty(msg))
{
_apiClient.Print(msg);
- AddToLog("Print executed");
+ PrintLog("Print executed");
}
}
@@ -1179,10 +1179,10 @@ namespace TestApiClientUI
private async void button28_Click(object sender, EventArgs e)
{
var resultTrue = await Execute(() => _apiClient.SymbolsTotal(true));
- AddToLog($"SymbolsTotal [true]: result = {resultTrue}");
+ PrintLog($"SymbolsTotal [true]: result = {resultTrue}");
var resultFalse = await Execute(() => _apiClient.SymbolsTotal(false));
- AddToLog($"SymbolsTotal [false]: result = {resultFalse}");
+ PrintLog($"SymbolsTotal [false]: result = {resultFalse}");
}
//SymbolName
@@ -1192,7 +1192,7 @@ namespace TestApiClientUI
const bool selected = false;
var result = await Execute(() => _apiClient.SymbolName(pos, selected));
- AddToLog($"SymbolName [true]: result = {result}");
+ PrintLog($"SymbolName [true]: result = {result}");
}
//SymbolSelect
@@ -1202,7 +1202,7 @@ namespace TestApiClientUI
const bool @select = true;
var result = await Execute(() => _apiClient.SymbolSelect(symbol, select));
- AddToLog($"SymbolSelect [true]: result = {result}");
+ PrintLog($"SymbolSelect [true]: result = {result}");
}
//SymbolInfoInteger
@@ -1213,19 +1213,19 @@ namespace TestApiClientUI
Enum.TryParse(comboBox4.Text, out propId);
var result = await Execute(() => _apiClient.SymbolInfoInteger(symbol, propId));
- AddToLog($"SymbolInfoInteger [true]: result = {result}");
+ PrintLog($"SymbolInfoInteger [true]: result = {result}");
}
private void _tradeMonitor_AvailabilityOrdersChanged(object sender, AvailabilityOrdersEventArgs e)
{
if (e.Opened != null)
{
- AddToLog($"{sender.GetType()}: Opened orders - {string.Join(", ", e.Opened.Select(o => o.Ticket).ToList())}");
+ PrintLog($"{sender.GetType()}: Opened orders - {string.Join(", ", e.Opened.Select(o => o.Ticket).ToList())}");
}
if (e.Closed != null)
{
- AddToLog($"{sender.GetType()}: Closed orders - {string.Join(", ", e.Closed.Select(o => o.Ticket).ToList())}");
+ PrintLog($"{sender.GetType()}: Closed orders - {string.Join(", ", e.Closed.Select(o => o.Ticket).ToList())}");
}
}
@@ -1239,7 +1239,7 @@ namespace TestApiClientUI
Enum.TryParse(comboBox5.Text, out propId);
var result = await Execute(() => _apiClient.SeriesInfoInteger(symbol, timeframes, propId));
- AddToLog($"SeriesInfoInteger: result = {result}");
+ PrintLog($"SeriesInfoInteger: result = {result}");
}
//SymbolInfoDouble
@@ -1250,7 +1250,19 @@ namespace TestApiClientUI
Enum.TryParse(comboBox7.Text, out propId);
var result = await Execute(() => _apiClient.SymbolInfoDouble(symbol, propId));
- AddToLog($"SymbolInfoDouble: result = {result}");
+ PrintLog($"SymbolInfoDouble: result = {result}");
+ }
+
+ //SymbolInfoTick
+ private async void button34_Click(object sender, EventArgs e)
+ {
+ var symbol = txtMarketInfoSymbol.Text;
+
+ var result = await Execute(() => _apiClient.SymbolInfoTick(symbol));
+ if (result != null)
+ {
+ PrintLog($"SymbolInfoTick: Tick - time = {result.Time}, Bid = {result.Bid}, Ask = {result.Ask}, Last = {result.Last}, Volume = {result.Volume}");
+ }
}
}
}
diff --git a/mq4/MtApi.ex4 b/mq4/MtApi.ex4
index 4f7e2fa5..3f0aca61 100755
Binary files a/mq4/MtApi.ex4 and b/mq4/MtApi.ex4 differ
diff --git a/mq4/MtApi.mq4 b/mq4/MtApi.mq4
index 7487cb69..1e744d48 100755
Binary files a/mq4/MtApi.mq4 and b/mq4/MtApi.mq4 differ