Compare commits

..
12 changed files with 101 additions and 49 deletions
+24 -24
View File
@@ -107,7 +107,7 @@ int _stdcall initExpert(int expertHandle, int port, wchar_t* symbol, double bid,
try try
{ {
MT5Handler^ mtHander = gcnew MT5Handler(); MT5Handler^ mtHander = gcnew MT5Handler();
MtServerInstance::GetInstance()->InitExpert(expertHandle, port, gcnew String(symbol), bid, ask, mtHander); MtAdapter::GetInstance()->InitExpert(expertHandle, port, gcnew String(symbol), bid, ask, mtHander);
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -123,7 +123,7 @@ int _stdcall deinitExpert(int expertHandle, wchar_t* err)
{ {
try try
{ {
MtServerInstance::GetInstance()->DeinitExpert(expertHandle); MtAdapter::GetInstance()->DeinitExpert(expertHandle);
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -139,7 +139,7 @@ int _stdcall updateQuote(int expertHandle, wchar_t* symbol, double bid, double a
{ {
try try
{ {
MtServerInstance::GetInstance()->SendQuote(expertHandle, gcnew String(symbol), bid, ask); MtAdapter::GetInstance()->SendQuote(expertHandle, gcnew String(symbol), bid, ask);
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -155,7 +155,7 @@ int _stdcall sendIntResponse(int expertHandle, int response)
{ {
try try
{ {
MtServerInstance::GetInstance()->SendResponse(expertHandle, gcnew MtResponseInt(response)); MtAdapter::GetInstance()->SendResponse(expertHandle, gcnew MtResponseInt(response));
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -169,7 +169,7 @@ int _stdcall sendLongResponse(int expertHandle, __int64 response)
{ {
try try
{ {
MtServerInstance::GetInstance()->SendResponse(expertHandle, gcnew MtResponseLong(response)); MtAdapter::GetInstance()->SendResponse(expertHandle, gcnew MtResponseLong(response));
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -183,7 +183,7 @@ int _stdcall sendULongResponse(int expertHandle, unsigned __int64 response)
{ {
try try
{ {
MtServerInstance::GetInstance()->SendResponse(expertHandle, gcnew MtResponseULong(response)); MtAdapter::GetInstance()->SendResponse(expertHandle, gcnew MtResponseULong(response));
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -199,7 +199,7 @@ int _stdcall sendBooleanResponse(int expertHandle, int response)
{ {
bool value = (response != 0) ? true : false; bool value = (response != 0) ? true : false;
MtServerInstance::GetInstance()->SendResponse(expertHandle, gcnew MtResponseBool(value)); MtAdapter::GetInstance()->SendResponse(expertHandle, gcnew MtResponseBool(value));
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -213,7 +213,7 @@ int _stdcall sendDoubleResponse(int expertHandle, double response)
{ {
try try
{ {
MtServerInstance::GetInstance()->SendResponse(expertHandle, gcnew MtResponseDouble(response)); MtAdapter::GetInstance()->SendResponse(expertHandle, gcnew MtResponseDouble(response));
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -227,7 +227,7 @@ int _stdcall sendStringResponse(int expertHandle, wchar_t* response)
{ {
try try
{ {
MtServerInstance::GetInstance()->SendResponse(expertHandle, gcnew MtResponseString(gcnew String(response))); MtAdapter::GetInstance()->SendResponse(expertHandle, gcnew MtResponseString(gcnew String(response)));
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -241,7 +241,7 @@ int _stdcall sendVoidResponse(int expertHandle)
{ {
try try
{ {
MtServerInstance::GetInstance()->SendResponse(expertHandle, nullptr); MtAdapter::GetInstance()->SendResponse(expertHandle, nullptr);
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -262,7 +262,7 @@ int _stdcall sendDoubleArrayResponse(int expertHandle, double* values, int size)
list[i] = values[i]; list[i] = values[i];
} }
MtServerInstance::GetInstance()->SendResponse(expertHandle, gcnew MtResponseDoubleArray(list)); MtAdapter::GetInstance()->SendResponse(expertHandle, gcnew MtResponseDoubleArray(list));
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -283,7 +283,7 @@ int _stdcall sendIntArrayResponse(int expertHandle, int* values, int size)
list[i] = values[i]; list[i] = values[i];
} }
MtServerInstance::GetInstance()->SendResponse(expertHandle, gcnew MtResponseIntArray(list)); MtAdapter::GetInstance()->SendResponse(expertHandle, gcnew MtResponseIntArray(list));
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -304,7 +304,7 @@ int _stdcall sendLongArrayResponse(int expertHandle, __int64* values, int size)
list[i] = values[i]; list[i] = values[i];
} }
MtServerInstance::GetInstance()->SendResponse(expertHandle, gcnew MtResponseLongArray(list)); MtAdapter::GetInstance()->SendResponse(expertHandle, gcnew MtResponseLongArray(list));
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -335,7 +335,7 @@ int _stdcall sendMqlRatesArrayResponse(int expertHandle, CMqlRates values[], int
list[i] = rates; list[i] = rates;
} }
MtServerInstance::GetInstance()->SendResponse(expertHandle, gcnew MtResponseMqlRatesArray(list)); MtAdapter::GetInstance()->SendResponse(expertHandle, gcnew MtResponseMqlRatesArray(list));
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -357,7 +357,7 @@ int _stdcall sendMqlTickResponse(int expertHandle, CMqlTick* response, int size)
mtResponse->last = response->last; mtResponse->last = response->last;
mtResponse->volume = response->volume; mtResponse->volume = response->volume;
MtServerInstance::GetInstance()->SendResponse(expertHandle, gcnew MtResponseMqlTick(mtResponse)); MtAdapter::GetInstance()->SendResponse(expertHandle, gcnew MtResponseMqlTick(mtResponse));
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -384,7 +384,7 @@ int _stdcall sendMqlBookInfoArrayResponse(int expertHandle, CMqlBookInfo values[
list[i] = info; list[i] = info;
} }
MtServerInstance::GetInstance()->SendResponse(expertHandle, gcnew MtResponseMqlBookInfoArray(list)); MtAdapter::GetInstance()->SendResponse(expertHandle, gcnew MtResponseMqlBookInfoArray(list));
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -400,7 +400,7 @@ int _stdcall getCommandType(int expertHandle, int* res)
{ {
try try
{ {
*res = MtServerInstance::GetInstance()->GetCommandType(expertHandle); *res = MtAdapter::GetInstance()->GetCommandType(expertHandle);
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -414,7 +414,7 @@ int _stdcall getIntValue(int expertHandle, int paramIndex, int* res)
{ {
try try
{ {
*res = (int)MtServerInstance::GetInstance()->GetCommandParameter(expertHandle, paramIndex); *res = (int)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex);
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -428,7 +428,7 @@ int _stdcall getDoubleValue(int expertHandle, int paramIndex, double* res)
{ {
try try
{ {
*res = (double)MtServerInstance::GetInstance()->GetCommandParameter(expertHandle, paramIndex); *res = (double)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex);
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -442,7 +442,7 @@ int _stdcall getStringValue(int expertHandle, int paramIndex, wchar_t* res)
{ {
try try
{ {
convertSystemString(res, (String^)MtServerInstance::GetInstance()->GetCommandParameter(expertHandle, paramIndex)); convertSystemString(res, (String^)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex));
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -456,7 +456,7 @@ int _stdcall getULongValue(int expertHandle, int paramIndex, unsigned __int64* r
{ {
try try
{ {
*res = (unsigned long)MtServerInstance::GetInstance()->GetCommandParameter(expertHandle, paramIndex); *res = (unsigned long)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex);
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -470,7 +470,7 @@ int _stdcall getLongValue(int expertHandle, int paramIndex, __int64* res)
{ {
try try
{ {
*res = (long)MtServerInstance::GetInstance()->GetCommandParameter(expertHandle, paramIndex); *res = (long)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex);
} }
catch (Exception^ e) catch (Exception^ e)
{ {
@@ -484,7 +484,7 @@ int _stdcall getBooleanValue(int expertHandle, int paramIndex, int* res)
{ {
try try
{ {
bool val = (bool)MtServerInstance::GetInstance()->GetCommandParameter(expertHandle, paramIndex); bool val = (bool)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex);
*res = val == true ? 1 : 0; *res = val == true ? 1 : 0;
} }
catch (Exception^ e) catch (Exception^ e)
@@ -499,7 +499,7 @@ int _stdcall getUIntValue(int expertHandle, int paramIndex, unsigned int* res)
{ {
try try
{ {
*res = (unsigned int)MtServerInstance::GetInstance()->GetCommandParameter(expertHandle, paramIndex); *res = (unsigned int)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex);
} }
catch (Exception^ e) catch (Exception^ e)
{ {
+1 -1
View File
@@ -29,7 +29,7 @@ namespace MTApiService
var roller = new RollingFileAppender var roller = new RollingFileAppender
{ {
AppendToFile = false, AppendToFile = true,
File = $@"{System.IO.Path.GetTempPath()}{profileName}\Logs\{filename}", File = $@"{System.IO.Path.GetTempPath()}{profileName}\Logs\{filename}",
Layout = patternLayout, Layout = patternLayout,
PreserveLogFileNameExtension = true, PreserveLogFileNameExtension = true,
+11 -3
View File
@@ -62,13 +62,21 @@ namespace MTApiService
} }
//init local pipe host //init local pipe host
var localUrl = CreateConnectionAddress(null, port, true); var localPipeUrl = CreateConnectionAddress(null, port, true);
var localServiceHost = CreateServiceHost(localUrl, true); var localPipeServiceHost = CreateServiceHost(localPipeUrl, true);
if (localPipeServiceHost != null)
{
_hosts.Add(localPipeServiceHost);
}
//init localhost
var localUrl = CreateConnectionAddress("localhost", port, false);
var localServiceHost = CreateServiceHost(localUrl, false);
if (localServiceHost != null) if (localServiceHost != null)
{ {
_hosts.Add(localServiceHost); _hosts.Add(localServiceHost);
} }
//init network hosts //init network hosts
var dnsHostName = Dns.GetHostName(); var dnsHostName = Dns.GetHostName();
var ips = Dns.GetHostEntry(dnsHostName); var ips = Dns.GetHostEntry(dnsHostName);
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.25.0")] [assembly: AssemblyVersion("1.0.27.0")]
[assembly: AssemblyFileVersion("1.0.25.0")] [assembly: AssemblyFileVersion("1.0.27.0")]
+9
View File
@@ -2186,6 +2186,15 @@ namespace MtApi
#endregion #endregion
#region Backtesting functions
public void UnlockTicks()
{
SendCommand<object>(MtCommandType.UnlockTicks, null);
}
#endregion
#region Private Methods #region Private Methods
private MtClient Client private MtClient Client
{ {
+3 -1
View File
@@ -227,6 +227,8 @@
ObjectSet = 231, ObjectSet = 231,
ObjectSetFiboDescription = 232, ObjectSetFiboDescription = 232,
ObjectSetText = 233, ObjectSetText = 233,
ObjectType = 234 ObjectType = 234,
UnlockTicks = 235
} }
} }
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.33.0")] [assembly: AssemblyVersion("1.0.35.0")]
[assembly: AssemblyFileVersion("1.0.33.0")] [assembly: AssemblyFileVersion("1.0.35.0")]
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.11.1")] [assembly: AssemblyVersion("1.0.12")]
[assembly: AssemblyFileVersion("1.0.11.1")] [assembly: AssemblyFileVersion("1.0.12")]
+41 -13
View File
@@ -197,9 +197,11 @@
this.button38 = new System.Windows.Forms.Button(); this.button38 = new System.Windows.Forms.Button();
this.button37 = new System.Windows.Forms.Button(); this.button37 = new System.Windows.Forms.Button();
this.tabPage10 = new System.Windows.Forms.TabPage(); this.tabPage10 = new System.Windows.Forms.TabPage();
this.button68 = new System.Windows.Forms.Button();
this.comboBox11 = new System.Windows.Forms.ComboBox(); this.comboBox11 = new System.Windows.Forms.ComboBox();
this.button4 = new System.Windows.Forms.Button(); this.button4 = new System.Windows.Forms.Button();
this.button68 = new System.Windows.Forms.Button(); this.tabPage11 = new System.Windows.Forms.TabPage();
this.button69 = new System.Windows.Forms.Button();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
this.statusStrip1.SuspendLayout(); this.statusStrip1.SuspendLayout();
this.groupBox2.SuspendLayout(); this.groupBox2.SuspendLayout();
@@ -218,6 +220,7 @@
this.tabPage8.SuspendLayout(); this.tabPage8.SuspendLayout();
this.tabPage9.SuspendLayout(); this.tabPage9.SuspendLayout();
this.tabPage10.SuspendLayout(); this.tabPage10.SuspendLayout();
this.tabPage11.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// textBoxServerName // textBoxServerName
@@ -400,6 +403,7 @@
this.tabControl1.Controls.Add(this.tabPage8); this.tabControl1.Controls.Add(this.tabPage8);
this.tabControl1.Controls.Add(this.tabPage9); this.tabControl1.Controls.Add(this.tabPage9);
this.tabControl1.Controls.Add(this.tabPage10); this.tabControl1.Controls.Add(this.tabPage10);
this.tabControl1.Controls.Add(this.tabPage11);
this.tabControl1.Location = new System.Drawing.Point(324, 12); this.tabControl1.Location = new System.Drawing.Point(324, 12);
this.tabControl1.Multiline = true; this.tabControl1.Multiline = true;
this.tabControl1.Name = "tabControl1"; this.tabControl1.Name = "tabControl1";
@@ -1771,10 +1775,10 @@
this.tabPage6.Controls.Add(this.button27); this.tabPage6.Controls.Add(this.button27);
this.tabPage6.Controls.Add(this.button14); this.tabPage6.Controls.Add(this.button14);
this.tabPage6.Controls.Add(this.button13); this.tabPage6.Controls.Add(this.button13);
this.tabPage6.Location = new System.Drawing.Point(4, 40); this.tabPage6.Location = new System.Drawing.Point(4, 22);
this.tabPage6.Name = "tabPage6"; this.tabPage6.Name = "tabPage6";
this.tabPage6.Padding = new System.Windows.Forms.Padding(3); this.tabPage6.Padding = new System.Windows.Forms.Padding(3);
this.tabPage6.Size = new System.Drawing.Size(638, 383); this.tabPage6.Size = new System.Drawing.Size(638, 401);
this.tabPage6.TabIndex = 6; this.tabPage6.TabIndex = 6;
this.tabPage6.Text = "Client Terminal"; this.tabPage6.Text = "Client Terminal";
this.tabPage6.UseVisualStyleBackColor = true; this.tabPage6.UseVisualStyleBackColor = true;
@@ -1820,10 +1824,10 @@
// //
this.tabPage7.Controls.Add(this.button23); this.tabPage7.Controls.Add(this.button23);
this.tabPage7.Controls.Add(this.iCustomBtn); this.tabPage7.Controls.Add(this.iCustomBtn);
this.tabPage7.Location = new System.Drawing.Point(4, 40); this.tabPage7.Location = new System.Drawing.Point(4, 22);
this.tabPage7.Name = "tabPage7"; this.tabPage7.Name = "tabPage7";
this.tabPage7.Padding = new System.Windows.Forms.Padding(3); this.tabPage7.Padding = new System.Windows.Forms.Padding(3);
this.tabPage7.Size = new System.Drawing.Size(638, 383); this.tabPage7.Size = new System.Drawing.Size(638, 401);
this.tabPage7.TabIndex = 7; this.tabPage7.TabIndex = 7;
this.tabPage7.Text = "Technical Indicators"; this.tabPage7.Text = "Technical Indicators";
this.tabPage7.UseVisualStyleBackColor = true; this.tabPage7.UseVisualStyleBackColor = true;
@@ -2008,6 +2012,16 @@
this.tabPage10.Text = "Object Functions"; this.tabPage10.Text = "Object Functions";
this.tabPage10.UseVisualStyleBackColor = true; this.tabPage10.UseVisualStyleBackColor = true;
// //
// button68
//
this.button68.Location = new System.Drawing.Point(6, 39);
this.button68.Name = "button68";
this.button68.Size = new System.Drawing.Size(75, 23);
this.button68.TabIndex = 2;
this.button68.Text = "ObjectName";
this.button68.UseVisualStyleBackColor = true;
this.button68.Click += new System.EventHandler(this.button68_Click);
//
// comboBox11 // comboBox11
// //
this.comboBox11.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboBox11.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
@@ -2027,15 +2041,26 @@
this.button4.UseVisualStyleBackColor = true; this.button4.UseVisualStyleBackColor = true;
this.button4.Click += new System.EventHandler(this.button4_Click); this.button4.Click += new System.EventHandler(this.button4_Click);
// //
// button68 // tabPage11
// //
this.button68.Location = new System.Drawing.Point(6, 39); this.tabPage11.Controls.Add(this.button69);
this.button68.Name = "button68"; this.tabPage11.Location = new System.Drawing.Point(4, 40);
this.button68.Size = new System.Drawing.Size(75, 23); this.tabPage11.Name = "tabPage11";
this.button68.TabIndex = 2; this.tabPage11.Padding = new System.Windows.Forms.Padding(3);
this.button68.Text = "ObjectName"; this.tabPage11.Size = new System.Drawing.Size(638, 383);
this.button68.UseVisualStyleBackColor = true; this.tabPage11.TabIndex = 11;
this.button68.Click += new System.EventHandler(this.button68_Click); this.tabPage11.Text = "Backtesting";
this.tabPage11.UseVisualStyleBackColor = true;
//
// button69
//
this.button69.Location = new System.Drawing.Point(6, 6);
this.button69.Name = "button69";
this.button69.Size = new System.Drawing.Size(75, 23);
this.button69.TabIndex = 4;
this.button69.Text = "UnlockTicks";
this.button69.UseVisualStyleBackColor = true;
this.button69.Click += new System.EventHandler(this.button69_Click);
// //
// Form1 // Form1
// //
@@ -2081,6 +2106,7 @@
this.tabPage9.ResumeLayout(false); this.tabPage9.ResumeLayout(false);
this.tabPage9.PerformLayout(); this.tabPage9.PerformLayout();
this.tabPage10.ResumeLayout(false); this.tabPage10.ResumeLayout(false);
this.tabPage11.ResumeLayout(false);
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@@ -2259,6 +2285,8 @@
private System.Windows.Forms.ComboBox comboBox11; private System.Windows.Forms.ComboBox comboBox11;
private System.Windows.Forms.TextBox textBoxChartId; private System.Windows.Forms.TextBox textBoxChartId;
private System.Windows.Forms.Button button68; private System.Windows.Forms.Button button68;
private System.Windows.Forms.TabPage tabPage11;
private System.Windows.Forms.Button button69;
} }
} }
+6 -1
View File
@@ -141,7 +141,7 @@ namespace TestApiClientUI
private void apiClient_QuoteUpdated(object sender, string symbol, double bid, double ask) private void apiClient_QuoteUpdated(object sender, string symbol, double bid, double ask)
{ {
Console.WriteLine(@"Quote: Symbol = {0}, Bid = {1}, Ask = {2}", symbol, bid, ask); Console.WriteLine(@"Quote: Symbol = {0}, Bid = {1}, Ask = {2}", symbol, bid, ask);
} }
private void _apiClient_QuoteUpdate(object sender, MtQuoteEventArgs e) private void _apiClient_QuoteUpdate(object sender, MtQuoteEventArgs e)
@@ -1402,5 +1402,10 @@ namespace TestApiClientUI
var result = await Execute(() => _apiClient.ObjectName(chartId, objectIndex)); var result = await Execute(() => _apiClient.ObjectName(chartId, objectIndex));
PrintLog($"ObjectName result: {result}"); PrintLog($"ObjectName result: {result}");
} }
private void button69_Click(object sender, EventArgs e)
{
_apiClient.UnlockTicks();
}
} }
} }
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.