mirror of
https://github.com/vdemydiuk/mtapi.git
synced 2026-07-28 02:57:56 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5c96aeb2fd | |||
| a238e5eb36 | |||
| 11fd5b7527 | |||
| cbe75cfbf6 | |||
| 9581431a9f | |||
| acf0c12531 |
@@ -994,6 +994,12 @@ namespace MtApi
|
||||
return MtApiTimeConverter.ConvertFromMtTime(commandResponse);
|
||||
}
|
||||
|
||||
public DateTime TimeGMT()
|
||||
{
|
||||
var commandResponse = SendCommand<int>(MtCommandType.TimeGMT, null);
|
||||
return MtApiTimeConverter.ConvertFromMtTime(commandResponse);
|
||||
}
|
||||
|
||||
public int TimeDay(DateTime date)
|
||||
{
|
||||
var commandParameters = new ArrayList { MtApiTimeConverter.ConvertToMtTime(date) };
|
||||
|
||||
@@ -111,6 +111,7 @@
|
||||
TimeSeconds = 86,
|
||||
TimeYear = 87,
|
||||
Year = 88,
|
||||
TimeGMT = 281,
|
||||
|
||||
//Global Variables
|
||||
GlobalVariableCheck = 89,
|
||||
|
||||
@@ -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.39.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.39.0")]
|
||||
[assembly: AssemblyVersion("1.0.40.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.40.0")]
|
||||
@@ -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.14")]
|
||||
[assembly: AssemblyFileVersion("1.0.14")]
|
||||
[assembly: AssemblyVersion("1.0.15")]
|
||||
[assembly: AssemblyFileVersion("1.0.15")]
|
||||
|
||||
@@ -259,6 +259,8 @@
|
||||
<Button Content="HistoryDealGetDouble" Command="{Binding HistoryDealGetDoubleCommand}" Height="25" HorizontalAlignment="Left" Margin="4"/>
|
||||
<Button Content="HistoryDealGetInteger" Command="{Binding HistoryDealGetIntegerCommand}" Height="25" HorizontalAlignment="Left" Margin="4"/>
|
||||
<Button Content="HistoryDealGetString" Command="{Binding HistoryDealGetStringCommand}" Height="25" HorizontalAlignment="Left" Margin="4"/>
|
||||
<Button Content="HistoryOrderGetInteger" Command="{Binding HistoryOrderGetIntegerCommand}" Height="25" HorizontalAlignment="Left" Margin="4"/>
|
||||
<Button Content="HistoryDealMethods" Command="{Binding HistoryDealMethodsCommand}" Height="25" HorizontalAlignment="Left" Margin="4"/>
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
|
||||
@@ -16,9 +16,11 @@ namespace MtApi5TestClient
|
||||
public DelegateCommand DisconnectCommand { get; private set; }
|
||||
|
||||
public DelegateCommand OrderSendCommand { get; private set; }
|
||||
public DelegateCommand HistoryOrderGetIntegerCommand { get; private set; }
|
||||
public DelegateCommand HistoryDealGetDoubleCommand { get; private set; }
|
||||
public DelegateCommand HistoryDealGetIntegerCommand { get; private set; }
|
||||
public DelegateCommand HistoryDealGetStringCommand { get; private set; }
|
||||
public DelegateCommand HistoryDealMethodsCommand { get; private set; }
|
||||
|
||||
public DelegateCommand AccountInfoDoubleCommand { get; private set; }
|
||||
public DelegateCommand AccountInfoIntegerCommand { get; private set; }
|
||||
@@ -196,9 +198,11 @@ namespace MtApi5TestClient
|
||||
DisconnectCommand = new DelegateCommand(ExecuteDisconnect, CanExecuteDisconnect);
|
||||
|
||||
OrderSendCommand = new DelegateCommand(ExecuteOrderSend);
|
||||
HistoryOrderGetIntegerCommand = new DelegateCommand(ExecuteHistoryOrderGetInteger);
|
||||
HistoryDealGetDoubleCommand = new DelegateCommand(ExecuteHistoryDealGetDouble);
|
||||
HistoryDealGetIntegerCommand = new DelegateCommand(ExecuteHistoryDealGetInteger);
|
||||
HistoryDealGetStringCommand = new DelegateCommand(ExecuteHistoryDealGetString);
|
||||
HistoryDealMethodsCommand = new DelegateCommand(ExecuteHistoryDealMethods);
|
||||
|
||||
AccountInfoDoubleCommand = new DelegateCommand(ExecuteAccountInfoDouble);
|
||||
AccountInfoIntegerCommand = new DelegateCommand(ExecuteAccountInfoInteger);
|
||||
@@ -277,6 +281,16 @@ namespace MtApi5TestClient
|
||||
AddLog(message);
|
||||
}
|
||||
|
||||
private async void ExecuteHistoryOrderGetInteger(object o)
|
||||
{
|
||||
const ulong ticket = 12345;
|
||||
const ENUM_ORDER_PROPERTY_INTEGER propertyId = ENUM_ORDER_PROPERTY_INTEGER.ORDER_POSITION_ID;
|
||||
|
||||
var retVal = await Execute(() => _mtApiClient.HistoryOrderGetInteger(ticket, propertyId));
|
||||
|
||||
AddLog($"HistoryOrderGetInteger: {retVal}");
|
||||
}
|
||||
|
||||
private async void ExecuteHistoryDealGetDouble(object o)
|
||||
{
|
||||
const ulong ticket = 12345;
|
||||
@@ -307,6 +321,26 @@ namespace MtApi5TestClient
|
||||
AddLog($"HistoryDealGetString: {retVal}");
|
||||
}
|
||||
|
||||
private async void ExecuteHistoryDealMethods(object o)
|
||||
{
|
||||
try
|
||||
{
|
||||
var posId = await Execute(() => _mtApiClient.PositionGetInteger(ENUM_POSITION_PROPERTY_INTEGER.POSITION_IDENTIFIER)); // posId = 7247951
|
||||
var history = await Execute(() => _mtApiClient.HistorySelectByPosition(posId)); // history = true
|
||||
var historyDealsTotal = await Execute(() => _mtApiClient.HistoryDealsTotal()); // historyDealsCount = 4
|
||||
var histDealTicket = await Execute(() => _mtApiClient.HistoryDealGetTicket(0)); // histDealTicket = 6632442
|
||||
var histDealPrice = await Execute(() => _mtApiClient.HistoryDealGetDouble(histDealTicket, ENUM_DEAL_PROPERTY_DOUBLE.DEAL_PRICE)); // Exception
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// ex.Messsage = "Service connection failed! Ошибка сериализации параметра http://tempuri.org/:command. Сообщение InnerException было \"Тип \"MtApi5.ENUM_DEAL_PROPERTY_DOUBLE\" с именем контракта данных \"ENUM_DEAL_PROPERTY_DOUBLE:http://schemas.datacontract.org/2004/07/MtApi5\" не ожидается. Попробуйте использовать DataContractResolver, если вы используете DataContractSerializer, или добавьте любые статически неизвестные типы в список известных типов - например, используя атрибут KnownTypeAttribute или путем их добавления в список известных типов, передаваемый в сериализатор.\". Подробнее см. InnerException."
|
||||
AddLog(ex.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
AddLog("ExecuteHistoryDealMethods: success.");
|
||||
}
|
||||
|
||||
private async void ExecuteAccountInfoDouble(object o)
|
||||
{
|
||||
var result = await Execute(() => _mtApiClient.AccountInfoDouble(AccountInfoDoublePropertyId));
|
||||
|
||||
+40
-2
@@ -143,6 +143,8 @@
|
||||
this.label23 = new System.Windows.Forms.Label();
|
||||
this.textBoxAccountInfoSymbol = new System.Windows.Forms.TextBox();
|
||||
this.tabPage4 = new System.Windows.Forms.TabPage();
|
||||
this.comboBox12 = new System.Windows.Forms.ComboBox();
|
||||
this.button72 = new System.Windows.Forms.Button();
|
||||
this.button36 = new System.Windows.Forms.Button();
|
||||
this.comboBox10 = new System.Windows.Forms.ComboBox();
|
||||
this.comboBox9 = new System.Windows.Forms.ComboBox();
|
||||
@@ -210,6 +212,7 @@
|
||||
this.button4 = new System.Windows.Forms.Button();
|
||||
this.tabPage11 = new System.Windows.Forms.TabPage();
|
||||
this.button69 = new System.Windows.Forms.Button();
|
||||
this.button73 = new System.Windows.Forms.Button();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.groupBox2.SuspendLayout();
|
||||
@@ -1427,6 +1430,8 @@
|
||||
//
|
||||
// tabPage4
|
||||
//
|
||||
this.tabPage4.Controls.Add(this.comboBox12);
|
||||
this.tabPage4.Controls.Add(this.button72);
|
||||
this.tabPage4.Controls.Add(this.button36);
|
||||
this.tabPage4.Controls.Add(this.comboBox10);
|
||||
this.tabPage4.Controls.Add(this.comboBox9);
|
||||
@@ -1450,6 +1455,25 @@
|
||||
this.tabPage4.Text = "MarketInfo";
|
||||
this.tabPage4.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// comboBox12
|
||||
//
|
||||
this.comboBox12.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBox12.FormattingEnabled = true;
|
||||
this.comboBox12.Location = new System.Drawing.Point(13, 188);
|
||||
this.comboBox12.Name = "comboBox12";
|
||||
this.comboBox12.Size = new System.Drawing.Size(186, 21);
|
||||
this.comboBox12.TabIndex = 38;
|
||||
//
|
||||
// button72
|
||||
//
|
||||
this.button72.Location = new System.Drawing.Point(208, 186);
|
||||
this.button72.Name = "button72";
|
||||
this.button72.Size = new System.Drawing.Size(111, 23);
|
||||
this.button72.TabIndex = 37;
|
||||
this.button72.Text = "TerminalInfoString";
|
||||
this.button72.UseVisualStyleBackColor = true;
|
||||
this.button72.Click += new System.EventHandler(this.button72_Click);
|
||||
//
|
||||
// button36
|
||||
//
|
||||
this.button36.Location = new System.Drawing.Point(208, 157);
|
||||
@@ -1844,6 +1868,7 @@
|
||||
//
|
||||
// tabPage6
|
||||
//
|
||||
this.tabPage6.Controls.Add(this.button73);
|
||||
this.tabPage6.Controls.Add(this.textBoxPrint);
|
||||
this.tabPage6.Controls.Add(this.button27);
|
||||
this.tabPage6.Controls.Add(this.button14);
|
||||
@@ -1858,14 +1883,14 @@
|
||||
//
|
||||
// textBoxPrint
|
||||
//
|
||||
this.textBoxPrint.Location = new System.Drawing.Point(13, 86);
|
||||
this.textBoxPrint.Location = new System.Drawing.Point(13, 108);
|
||||
this.textBoxPrint.Name = "textBoxPrint";
|
||||
this.textBoxPrint.Size = new System.Drawing.Size(386, 20);
|
||||
this.textBoxPrint.TabIndex = 3;
|
||||
//
|
||||
// button27
|
||||
//
|
||||
this.button27.Location = new System.Drawing.Point(405, 84);
|
||||
this.button27.Location = new System.Drawing.Point(405, 106);
|
||||
this.button27.Name = "button27";
|
||||
this.button27.Size = new System.Drawing.Size(75, 23);
|
||||
this.button27.TabIndex = 2;
|
||||
@@ -2146,6 +2171,16 @@
|
||||
this.button69.UseVisualStyleBackColor = true;
|
||||
this.button69.Click += new System.EventHandler(this.button69_Click);
|
||||
//
|
||||
// button73
|
||||
//
|
||||
this.button73.Location = new System.Drawing.Point(13, 74);
|
||||
this.button73.Name = "button73";
|
||||
this.button73.Size = new System.Drawing.Size(75, 23);
|
||||
this.button73.TabIndex = 4;
|
||||
this.button73.Text = "TimeGMT";
|
||||
this.button73.UseVisualStyleBackColor = true;
|
||||
this.button73.Click += new System.EventHandler(this.button73_Click);
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
@@ -2379,6 +2414,9 @@
|
||||
private System.Windows.Forms.TextBox textBoxAccountLogin;
|
||||
private System.Windows.Forms.Button button70;
|
||||
private System.Windows.Forms.Button button71;
|
||||
private System.Windows.Forms.ComboBox comboBox12;
|
||||
private System.Windows.Forms.Button button72;
|
||||
private System.Windows.Forms.Button button73;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ namespace TestApiClientUI
|
||||
comboBox9.DataSource = Enum.GetNames(typeof(EnumTerminalInfoInteger));
|
||||
comboBox10.DataSource = Enum.GetNames(typeof(EnumTerminalInfoDouble));
|
||||
comboBox11.DataSource = Enum.GetNames(typeof(EnumObject));
|
||||
comboBox12.DataSource = Enum.GetNames(typeof(ENUM_TERMINAL_INFO_STRING));
|
||||
comboBoxAccountInfoCmd.DataSource = Enum.GetNames(typeof(TradeOperation));
|
||||
|
||||
_apiClient.QuoteUpdated += apiClient_QuoteUpdated;
|
||||
@@ -615,18 +616,28 @@ namespace TestApiClientUI
|
||||
listBoxProceHistory.DataSource = items;
|
||||
}
|
||||
|
||||
//TimeCurrent
|
||||
private void button13_Click(object sender, EventArgs e)
|
||||
{
|
||||
var retVal = _apiClient.TimeCurrent();
|
||||
PrintLog($"TimeCurrent result: {retVal}");
|
||||
}
|
||||
|
||||
//TimeLocal
|
||||
private void button14_Click(object sender, EventArgs e)
|
||||
{
|
||||
var retVal = _apiClient.TimeLocal();
|
||||
PrintLog($"TimeLocal result: {retVal}");
|
||||
}
|
||||
|
||||
//TimeGMT
|
||||
private void button73_Click(object sender, EventArgs e)
|
||||
{
|
||||
var retVal = _apiClient.TimeGMT();
|
||||
PrintLog($"TimeGMT result: {retVal}");
|
||||
}
|
||||
|
||||
//RefreshRates
|
||||
private void buttonRefreshRates_Click(object sender, EventArgs e)
|
||||
{
|
||||
var retVal = _apiClient.RefreshRates();
|
||||
@@ -1129,6 +1140,16 @@ namespace TestApiClientUI
|
||||
PrintLog($"TerminalInfoDouble: result = {result}");
|
||||
}
|
||||
|
||||
//TerminalInfoString
|
||||
private async void button72_Click(object sender, EventArgs e)
|
||||
{
|
||||
ENUM_TERMINAL_INFO_STRING propId;
|
||||
Enum.TryParse(comboBox12.Text, out propId);
|
||||
|
||||
var result = await Execute(() => _apiClient.TerminalInfoString(propId));
|
||||
PrintLog($"TerminalInfoString: result = {result}");
|
||||
}
|
||||
|
||||
private void checkBox2_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
var checkbox = sender as CheckBox;
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
+12
-2
@@ -1,7 +1,7 @@
|
||||
#property copyright "Vyacheslav Demidyuk"
|
||||
#property link ""
|
||||
|
||||
#property version "1.3"
|
||||
#property version "1.4"
|
||||
#property description "MtApi (MT5) connection expert"
|
||||
|
||||
#include <json.mqh>
|
||||
@@ -39,6 +39,8 @@
|
||||
bool getBooleanValue(int expertHandle, int paramIndex, bool& res, string& err);
|
||||
#import
|
||||
|
||||
//#define __DEBUG_LOG__
|
||||
|
||||
input int Port = 8228;
|
||||
|
||||
int ExpertHandle;
|
||||
@@ -92,7 +94,9 @@ bool IsDemo()
|
||||
bool IsTesting()
|
||||
{
|
||||
bool isTesting = MQLInfoInteger(MQL_TESTER);
|
||||
#ifdef __DEBUG_LOG__
|
||||
PrintFormat("IsTesting: %s", isTesting ? "true" : "false");
|
||||
#endif
|
||||
return isTesting;
|
||||
}
|
||||
|
||||
@@ -141,7 +145,9 @@ int init()
|
||||
return (1);
|
||||
}
|
||||
|
||||
#ifdef __DEBUG_LOG__
|
||||
PrintFormat("Expert Handle = %d", ExpertHandle);
|
||||
#endif
|
||||
|
||||
//--- Backtesting mode
|
||||
if (IsTesting())
|
||||
@@ -219,10 +225,12 @@ int executeCommand()
|
||||
return (0);
|
||||
}
|
||||
|
||||
#ifdef __DEBUG_LOG__
|
||||
if (commandType > 0)
|
||||
{
|
||||
Print("executeCommand: commnad type = ", commandType);
|
||||
}
|
||||
#endif
|
||||
|
||||
switch (commandType)
|
||||
{
|
||||
@@ -681,7 +689,9 @@ void Execute_Request()
|
||||
string response = "";
|
||||
if (request != "")
|
||||
{
|
||||
#ifdef __DEBUG_LOG__
|
||||
Print("Execute_Request: incoming request = ", request);
|
||||
#endif
|
||||
response = OnRequest(request);
|
||||
}
|
||||
|
||||
@@ -1151,7 +1161,7 @@ void Execute_HistoryOrderGetInteger()
|
||||
return;
|
||||
}
|
||||
|
||||
if (!sendULongResponse(ExpertHandle, HistoryOrderGetInteger(ticket_number, (ENUM_ORDER_PROPERTY_INTEGER)property_id), _response_error))
|
||||
if (!sendLongResponse(ExpertHandle, HistoryOrderGetInteger(ticket_number, (ENUM_ORDER_PROPERTY_INTEGER)property_id), _response_error))
|
||||
{
|
||||
PrintResponseError("HistoryOrderGetInteger", _response_error);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user