diff --git a/MtApi/ChartEventArgs.cs b/MtApi/ChartEventArgs.cs index 79f534ea..0cdb8e6b 100644 --- a/MtApi/ChartEventArgs.cs +++ b/MtApi/ChartEventArgs.cs @@ -1,4 +1,5 @@ using System; +using MtApi.Events; namespace MtApi { diff --git a/MtApi/MtChartEvent.cs b/MtApi/Events/MtChartEvent.cs similarity index 90% rename from MtApi/MtChartEvent.cs rename to MtApi/Events/MtChartEvent.cs index 838d2af9..9e765ace 100644 --- a/MtApi/MtChartEvent.cs +++ b/MtApi/Events/MtChartEvent.cs @@ -1,4 +1,4 @@ -namespace MtApi +namespace MtApi.Events { internal class MtChartEvent { diff --git a/MtApi/Events/MtEventTypes.cs b/MtApi/Events/MtEventTypes.cs new file mode 100644 index 00000000..413d4cc3 --- /dev/null +++ b/MtApi/Events/MtEventTypes.cs @@ -0,0 +1,9 @@ +namespace MtApi.Events +{ + public enum MtEventTypes + { + LastTimeBar = 1, + ChartEvent = 2, + OnLockTicks = 3 + } +} diff --git a/MtApi/Events/OnLockTicksEvent.cs b/MtApi/Events/OnLockTicksEvent.cs new file mode 100644 index 00000000..92f37f37 --- /dev/null +++ b/MtApi/Events/OnLockTicksEvent.cs @@ -0,0 +1,7 @@ +namespace MtApi.Events +{ + internal class OnLockTicksEvent + { + public string Instrument { get; set; } + } +} \ No newline at end of file diff --git a/MtApi/MtApi.csproj b/MtApi/MtApi.csproj index 92bc2804..c601a6f5 100755 --- a/MtApi/MtApi.csproj +++ b/MtApi/MtApi.csproj @@ -74,6 +74,7 @@ + @@ -86,14 +87,15 @@ - + - + + diff --git a/MtApi/MtApiClient.cs b/MtApi/MtApiClient.cs index c0630c66..627b264c 100755 --- a/MtApi/MtApiClient.cs +++ b/MtApi/MtApiClient.cs @@ -9,6 +9,7 @@ using MtApi.Requests; using MtApi.Responses; using Newtonsoft.Json; using System.Threading.Tasks; +using MtApi.Events; namespace MtApi { @@ -3140,6 +3141,9 @@ namespace MtApi case MtEventTypes.ChartEvent: FireOnChartEvent(e.ExpertHandle, JsonConvert.DeserializeObject(e.Payload)); break; + case MtEventTypes.OnLockTicks: + FireOnLockTicks(e.ExpertHandle, JsonConvert.DeserializeObject(e.Payload)); + break; default: throw new ArgumentOutOfRangeException(); } @@ -3155,6 +3159,11 @@ namespace MtApi OnChartEvent?.Invoke(this, new ChartEventArgs(expertHandler, chartEvent)); } + private void FireOnLockTicks(int expertHandler, OnLockTicksEvent lockTicksEvent) + { + OnLockTicks?.Invoke(this, new MtLockTicksEventArgs(expertHandler, lockTicksEvent.Instrument)); + } + private void BacktestingReady() { SendCommand(MtCommandType.BacktestingReady, null); @@ -3171,6 +3180,7 @@ namespace MtApi public event EventHandler ConnectionStateChanged; public event EventHandler OnLastTimeBar; public event EventHandler OnChartEvent; + public event EventHandler OnLockTicks; #endregion } diff --git a/MtApi/MtEventTypes.cs b/MtApi/MtEventTypes.cs deleted file mode 100644 index 735f20c4..00000000 --- a/MtApi/MtEventTypes.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace MtApi -{ - public enum MtEventTypes - { - LastTimeBar = 1, - ChartEvent = 2 - } -} diff --git a/MtApi/MtLockTicksEventArgs.cs b/MtApi/MtLockTicksEventArgs.cs new file mode 100644 index 00000000..9c5dfef5 --- /dev/null +++ b/MtApi/MtLockTicksEventArgs.cs @@ -0,0 +1,16 @@ +using System; + +namespace MtApi +{ + public class MtLockTicksEventArgs : EventArgs + { + internal MtLockTicksEventArgs(int expertHandle, string symbol) + { + ExpertHandle = expertHandle; + Symbol = symbol; + } + + public int ExpertHandle { get; } + public string Symbol { get; } + } +} \ No newline at end of file diff --git a/TestClients/TestApiClientUI/Form1.cs b/TestClients/TestApiClientUI/Form1.cs index ccb12183..a2ef3000 100644 --- a/TestClients/TestApiClientUI/Form1.cs +++ b/TestClients/TestApiClientUI/Form1.cs @@ -44,6 +44,7 @@ namespace TestApiClientUI _apiClient.ConnectionStateChanged += apiClient_ConnectionStateChanged; _apiClient.OnLastTimeBar += _apiClient_OnLastTimeBar; _apiClient.OnChartEvent += _apiClient_OnChartEvent; + _apiClient.OnLockTicks += _apiClient_OnLockTicks; InitOrderCommandsGroup(); @@ -149,6 +150,14 @@ namespace TestApiClientUI PrintLog(msg); } + private void _apiClient_OnLockTicks(object sender, MtLockTicksEventArgs e) + { + var msg = + $"OnLockTicks: ExpertHandle = {e.ExpertHandle}, Symbol = {e.Symbol}"; + Console.WriteLine(msg); + PrintLog(msg); + } + private void apiClient_QuoteUpdated(object sender, string symbol, double bid, double ask) { Console.WriteLine(@"Quote: Symbol = {0}, Bid = {1}, Ask = {2}", symbol, bid, ask); diff --git a/mq4/MtApi.ex4 b/mq4/MtApi.ex4 index 0d559c49..27c3e0bf 100755 Binary files a/mq4/MtApi.ex4 and b/mq4/MtApi.ex4 differ diff --git a/mq4/MtApi.mq4 b/mq4/MtApi.mq4 index 30b52d26..8ffead98 100755 Binary files a/mq4/MtApi.mq4 and b/mq4/MtApi.mq4 differ