mirror of
https://github.com/vdemydiuk/mtapi.git
synced 2026-08-09 00:47:51 +00:00
Added OrderCloseByRequest. Changed functions OrderCloseBy to use request pattern
This commit is contained in:
@@ -78,6 +78,7 @@
|
||||
<Compile Include="OrderSelectSource.cs" />
|
||||
<Compile Include="Requests\GetOrderRequest.cs" />
|
||||
<Compile Include="Requests\GetOrdersRequest.cs" />
|
||||
<Compile Include="Requests\OrderCloseByRequest.cs" />
|
||||
<Compile Include="Requests\OrderCloseRequest.cs" />
|
||||
<Compile Include="Requests\OrderSendRequest.cs" />
|
||||
<Compile Include="Requests\RequestBase.cs" />
|
||||
|
||||
+92
-52
@@ -1,11 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using MTApiService;
|
||||
using System.Drawing;
|
||||
using System.Collections;
|
||||
using System.Net;
|
||||
using System.ServiceModel;
|
||||
using MtApi.Requests;
|
||||
using MtApi.Responses;
|
||||
@@ -99,7 +97,21 @@ namespace MtApi
|
||||
public int OrderSend(string symbol, TradeOperation cmd, double volume, double price, int slippage, double stoploss, double takeprofit
|
||||
, string comment, int magic, DateTime expiration, Color arrowColor)
|
||||
{
|
||||
return InternalOrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrowColor);
|
||||
var response = SendRequest<OrderSendResponse>(new OrderSendRequest
|
||||
{
|
||||
Symbol = symbol,
|
||||
Cmd = (int)cmd,
|
||||
Volume = volume,
|
||||
Price = price,
|
||||
Slippage = slippage,
|
||||
Stoploss = stoploss,
|
||||
Takeprofit = takeprofit,
|
||||
Comment = comment,
|
||||
Magic = magic,
|
||||
Expiration = MtApiTimeConverter.ConvertToMtTime(expiration),
|
||||
ArrowColor = MtApiColorConverter.ConvertToMtColor(arrowColor)
|
||||
});
|
||||
return response != null ? response.Ticket : -1;
|
||||
}
|
||||
|
||||
public int OrderSend(string symbol, TradeOperation cmd, double volume, double price, int slippage, double stoploss, double takeprofit
|
||||
@@ -154,51 +166,107 @@ namespace MtApi
|
||||
|
||||
public int OrderSendBuy(string symbol, double volume, int slippage, double stoploss, double takeprofit, string comment, int magic)
|
||||
{
|
||||
return InternalOrderSend(symbol, TradeOperation.OP_BUY, volume, null, slippage, stoploss, takeprofit, comment,
|
||||
magic, null, null);
|
||||
var response = SendRequest<OrderSendResponse>(new OrderSendRequest
|
||||
{
|
||||
Symbol = symbol,
|
||||
Cmd = (int)TradeOperation.OP_BUY,
|
||||
Volume = volume,
|
||||
Slippage = slippage,
|
||||
Stoploss = stoploss,
|
||||
Takeprofit = takeprofit,
|
||||
Comment = comment,
|
||||
Magic = magic,
|
||||
});
|
||||
return response != null ? response.Ticket : -1;
|
||||
}
|
||||
|
||||
public int OrderSendSell(string symbol, double volume, int slippage, double stoploss, double takeprofit, string comment, int magic)
|
||||
{
|
||||
return InternalOrderSend(symbol, TradeOperation.OP_SELL, volume, null, slippage, stoploss, takeprofit, comment,
|
||||
magic, null, null);
|
||||
var response = SendRequest<OrderSendResponse>(new OrderSendRequest
|
||||
{
|
||||
Symbol = symbol,
|
||||
Cmd = (int)TradeOperation.OP_SELL,
|
||||
Volume = volume,
|
||||
Slippage = slippage,
|
||||
Stoploss = stoploss,
|
||||
Takeprofit = takeprofit,
|
||||
Comment = comment,
|
||||
Magic = magic,
|
||||
});
|
||||
return response != null ? response.Ticket : -1;
|
||||
}
|
||||
|
||||
public bool OrderClose(int ticket, double lots, double price, int slippage, Color color)
|
||||
{
|
||||
return InternalOrderClose(ticket, lots, price, slippage, color);
|
||||
var response = SendRequest<ResponseBase>(new OrderCloseRequest
|
||||
{
|
||||
Ticket = ticket,
|
||||
Lots = lots,
|
||||
Price = price,
|
||||
Slippage = slippage,
|
||||
ArrowColor = MtApiColorConverter.ConvertToMtColor(color)
|
||||
});
|
||||
return response != null;
|
||||
}
|
||||
|
||||
public bool OrderClose(int ticket, double lots, double price, int slippage)
|
||||
{
|
||||
return InternalOrderClose(ticket, lots, price, slippage, null);
|
||||
var response = SendRequest<ResponseBase>(new OrderCloseRequest
|
||||
{
|
||||
Ticket = ticket,
|
||||
Lots = lots,
|
||||
Price = price,
|
||||
Slippage = slippage,
|
||||
});
|
||||
return response != null;
|
||||
}
|
||||
|
||||
public bool OrderClose(int ticket, double lots, int slippage)
|
||||
{
|
||||
return InternalOrderClose(ticket, lots, null, slippage, null);
|
||||
var response = SendRequest<ResponseBase>(new OrderCloseRequest
|
||||
{
|
||||
Ticket = ticket,
|
||||
Lots = lots,
|
||||
Slippage = slippage,
|
||||
});
|
||||
return response != null;
|
||||
}
|
||||
|
||||
public bool OrderClose(int ticket, int slippage)
|
||||
{
|
||||
return InternalOrderClose(ticket, null, null, slippage, null);
|
||||
var response = SendRequest<ResponseBase>(new OrderCloseRequest
|
||||
{
|
||||
Ticket = ticket,
|
||||
Slippage = slippage,
|
||||
});
|
||||
return response != null;
|
||||
}
|
||||
|
||||
[Obsolete("OrderCloseByCurrentPrice is deprecated, please use OrderClose instead.")]
|
||||
public bool OrderCloseByCurrentPrice(int ticket, int slippage)
|
||||
{
|
||||
return InternalOrderClose(ticket, null, null, slippage, null);
|
||||
return OrderClose(ticket, slippage);
|
||||
}
|
||||
|
||||
public bool OrderCloseBy(int ticket, int opposite, Color color)
|
||||
{
|
||||
var commandParameters = new ArrayList { ticket, opposite, MtApiColorConverter.ConvertToMtColor(color) };
|
||||
return SendCommand<bool>(MtCommandType.OrderCloseBy, commandParameters);
|
||||
var response = SendRequest<ResponseBase>(new OrderCloseByRequest
|
||||
{
|
||||
Ticket = ticket,
|
||||
Opposite = opposite,
|
||||
ArrowColor = MtApiColorConverter.ConvertToMtColor(color)
|
||||
});
|
||||
return response != null;
|
||||
}
|
||||
|
||||
public bool OrderCloseBy(int ticket, int opposite)
|
||||
{
|
||||
return OrderCloseBy(ticket, opposite, Color.Empty);
|
||||
var response = SendRequest<ResponseBase>(new OrderCloseByRequest
|
||||
{
|
||||
Ticket = ticket,
|
||||
Opposite = opposite,
|
||||
});
|
||||
return response != null;
|
||||
}
|
||||
|
||||
public double OrderClosePrice()
|
||||
@@ -1302,45 +1370,17 @@ namespace MtApi
|
||||
ConnectionStateChanged.FireEvent(this, new MtConnectionEventArgs(MtConnectionState.Disconnected, "Disconnected"));
|
||||
}
|
||||
|
||||
private int InternalOrderSend(string symbol, TradeOperation cmd, double volume, double? price,
|
||||
int? slippage, double? stoploss, double? takeprofit, string comment, int? magic, DateTime? expiration, Color? arrowColor)
|
||||
{
|
||||
var response = SendRequest<OrderSendResponse>(new OrderSendRequest
|
||||
{
|
||||
Symbol = symbol,
|
||||
Cmd = (int)cmd,
|
||||
Volume = volume,
|
||||
Price = price,
|
||||
Slippage = slippage,
|
||||
Stoploss = stoploss,
|
||||
Takeprofit = takeprofit,
|
||||
Comment = comment,
|
||||
Magic = magic,
|
||||
Expiration = expiration.HasValue ? MtApiTimeConverter.ConvertToMtTime(expiration.Value) : default(int?),
|
||||
ArrowColor = arrowColor.HasValue ? MtApiColorConverter.ConvertToMtColor(arrowColor.Value) : default(int?)
|
||||
});
|
||||
return response != null ? response.Ticket : -1;
|
||||
}
|
||||
|
||||
public bool InternalOrderClose(int ticket, double? lots, double? price, int? slippage, Color? color)
|
||||
{
|
||||
//var commandParameters = new ArrayList { ticket, lots, price, slippage, MtApiColorConverter.ConvertToMtColor(color) };
|
||||
//return SendCommand<bool>(MtCommandType.OrderClose, commandParameters);
|
||||
|
||||
var response = SendRequest<ResponseBase>(new OrderCloseRequest
|
||||
{
|
||||
Ticket = ticket,
|
||||
Lots = lots,
|
||||
Price = price,
|
||||
Slippage = slippage,
|
||||
ArrowColor = color.HasValue ? MtApiColorConverter.ConvertToMtColor(color.Value) : default(int?)
|
||||
});
|
||||
return response != null;
|
||||
}
|
||||
|
||||
private T SendCommand<T>(MtCommandType commandType, ArrayList commandParameters)
|
||||
{
|
||||
var response = mClient.SendCommand((int)commandType, commandParameters);
|
||||
MtResponse response;
|
||||
try
|
||||
{
|
||||
response = mClient.SendCommand((int)commandType, commandParameters);
|
||||
}
|
||||
catch (CommunicationException ex)
|
||||
{
|
||||
throw new MtConnectionException(ex.Message, ex);
|
||||
}
|
||||
|
||||
T result = default(T);
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace MtApi
|
||||
// OrderClose = 2,
|
||||
// OrderCloseByCurrentPrice = 152,
|
||||
|
||||
OrderCloseBy = 3,
|
||||
// OrderCloseBy = 3,
|
||||
OrderClosePrice = 4,
|
||||
OrderClosePriceByTicket = 1004,
|
||||
OrderCloseTime = 5,
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace MtApi.Requests
|
||||
{
|
||||
public class OrderCloseByRequest: RequestBase
|
||||
{
|
||||
public int Ticket { get; set; }
|
||||
public int Opposite { get; set; }
|
||||
|
||||
public int? ArrowColor { get; set; }
|
||||
|
||||
public override RequestType RequestType
|
||||
{
|
||||
get { return RequestType.OrderCloseBy; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,5 +7,6 @@
|
||||
GetOrders = 2,
|
||||
OrderSend = 3,
|
||||
OrderClose = 4,
|
||||
OrderCloseBy = 5
|
||||
}
|
||||
}
|
||||
Generated
+50
-14
@@ -48,6 +48,7 @@
|
||||
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.button20 = new System.Windows.Forms.Button();
|
||||
this.button17 = new System.Windows.Forms.Button();
|
||||
this.comboBox2 = new System.Windows.Forms.ComboBox();
|
||||
@@ -123,7 +124,9 @@
|
||||
this.tabPage6 = new System.Windows.Forms.TabPage();
|
||||
this.button14 = new System.Windows.Forms.Button();
|
||||
this.button13 = new System.Windows.Forms.Button();
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.button15 = new System.Windows.Forms.Button();
|
||||
this.textBoxOppositeTicket = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.groupBox2.SuspendLayout();
|
||||
@@ -304,6 +307,9 @@
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Controls.Add(this.label3);
|
||||
this.tabPage2.Controls.Add(this.textBoxOppositeTicket);
|
||||
this.tabPage2.Controls.Add(this.button15);
|
||||
this.tabPage2.Controls.Add(this.checkBox1);
|
||||
this.tabPage2.Controls.Add(this.button20);
|
||||
this.tabPage2.Controls.Add(this.button17);
|
||||
@@ -327,19 +333,29 @@
|
||||
this.tabPage2.Text = "Trade Operations";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
this.checkBox1.AutoSize = true;
|
||||
this.checkBox1.Location = new System.Drawing.Point(297, 208);
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.Size = new System.Drawing.Size(205, 17);
|
||||
this.checkBox1.TabIndex = 14;
|
||||
this.checkBox1.Text = "Close order by current price on market";
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button20
|
||||
//
|
||||
this.button20.Location = new System.Drawing.Point(216, 185);
|
||||
this.button20.Location = new System.Drawing.Point(216, 202);
|
||||
this.button20.Name = "button20";
|
||||
this.button20.Size = new System.Drawing.Size(75, 23);
|
||||
this.button20.TabIndex = 13;
|
||||
this.button20.Text = "CloseOrder";
|
||||
this.button20.Text = "OrderClose";
|
||||
this.button20.UseVisualStyleBackColor = true;
|
||||
this.button20.Click += new System.EventHandler(this.button20_Click);
|
||||
//
|
||||
// button17
|
||||
//
|
||||
this.button17.Location = new System.Drawing.Point(601, 158);
|
||||
this.button17.Location = new System.Drawing.Point(558, 158);
|
||||
this.button17.Name = "button17";
|
||||
this.button17.Size = new System.Drawing.Size(75, 23);
|
||||
this.button17.TabIndex = 12;
|
||||
@@ -386,9 +402,9 @@
|
||||
this.label21.AutoSize = true;
|
||||
this.label21.Location = new System.Drawing.Point(213, 135);
|
||||
this.label21.Name = "label21";
|
||||
this.label21.Size = new System.Drawing.Size(71, 13);
|
||||
this.label21.Size = new System.Drawing.Size(68, 13);
|
||||
this.label21.TabIndex = 8;
|
||||
this.label21.Text = "Index/Ticket:";
|
||||
this.label21.Text = "Index/Ticket";
|
||||
//
|
||||
// textBoxIndexTicket
|
||||
//
|
||||
@@ -1173,15 +1189,32 @@
|
||||
this.button13.UseVisualStyleBackColor = true;
|
||||
this.button13.Click += new System.EventHandler(this.button13_Click);
|
||||
//
|
||||
// checkBox1
|
||||
// button15
|
||||
//
|
||||
this.checkBox1.AutoSize = true;
|
||||
this.checkBox1.Location = new System.Drawing.Point(297, 191);
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.Size = new System.Drawing.Size(205, 17);
|
||||
this.checkBox1.TabIndex = 14;
|
||||
this.checkBox1.Text = "Close order by current price on market";
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
this.button15.Location = new System.Drawing.Point(410, 237);
|
||||
this.button15.Name = "button15";
|
||||
this.button15.Size = new System.Drawing.Size(92, 23);
|
||||
this.button15.TabIndex = 15;
|
||||
this.button15.Text = "OrderCloseBy";
|
||||
this.button15.UseVisualStyleBackColor = true;
|
||||
this.button15.Click += new System.EventHandler(this.button15_Click);
|
||||
//
|
||||
// textBoxOppositeTicket
|
||||
//
|
||||
this.textBoxOppositeTicket.Location = new System.Drawing.Point(303, 239);
|
||||
this.textBoxOppositeTicket.Name = "textBoxOppositeTicket";
|
||||
this.textBoxOppositeTicket.Size = new System.Drawing.Size(100, 20);
|
||||
this.textBoxOppositeTicket.TabIndex = 16;
|
||||
this.textBoxOppositeTicket.Text = "0";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(219, 242);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(78, 13);
|
||||
this.label3.TabIndex = 17;
|
||||
this.label3.Text = "Opposite ticket";
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
@@ -1319,6 +1352,9 @@
|
||||
private System.Windows.Forms.Button button18;
|
||||
private System.Windows.Forms.Button button20;
|
||||
private System.Windows.Forms.CheckBox checkBox1;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox textBoxOppositeTicket;
|
||||
private System.Windows.Forms.Button button15;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+160
-181
@@ -1,16 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Security.Cryptography;
|
||||
using System.IO;
|
||||
using MtApi;
|
||||
using System.Net;
|
||||
using System.Diagnostics;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace TestApiClientUI
|
||||
@@ -78,22 +70,20 @@ namespace TestApiClientUI
|
||||
switch (e.Status)
|
||||
{
|
||||
case MtConnectionState.Connected:
|
||||
RunOnUiThread(onConnected);
|
||||
RunOnUiThread(OnConnected);
|
||||
break;
|
||||
case MtConnectionState.Disconnected:
|
||||
case MtConnectionState.Failed:
|
||||
RunOnUiThread(onDisconnected);
|
||||
RunOnUiThread(OnDisconnected);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void apiClient_QuoteRemoved(object sender, MtQuoteEventArgs e)
|
||||
{
|
||||
string instrument = e.Quote.Instrument;
|
||||
|
||||
RunOnUiThread(() =>
|
||||
{
|
||||
removeQuote(e.Quote);
|
||||
RemoveQuote(e.Quote);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -101,7 +91,7 @@ namespace TestApiClientUI
|
||||
{
|
||||
RunOnUiThread(() =>
|
||||
{
|
||||
addNewQuote(e.Quote);
|
||||
AddNewQuote(e.Quote);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -109,11 +99,11 @@ namespace TestApiClientUI
|
||||
{
|
||||
this.BeginInvoke((Action)(() =>
|
||||
{
|
||||
changeQuote(symbol, bid, ask);
|
||||
ChangeQuote(symbol, bid, ask);
|
||||
}));
|
||||
}
|
||||
|
||||
private void addNewQuote(MtQuote quote)
|
||||
private void AddNewQuote(MtQuote quote)
|
||||
{
|
||||
if (quote != null
|
||||
&& string.IsNullOrEmpty(quote.Instrument) == false
|
||||
@@ -136,7 +126,7 @@ namespace TestApiClientUI
|
||||
}
|
||||
}
|
||||
|
||||
private void removeQuote(MtQuote quote)
|
||||
private void RemoveQuote(MtQuote quote)
|
||||
{
|
||||
if (quote != null
|
||||
&& string.IsNullOrEmpty(quote.Instrument) == false
|
||||
@@ -157,7 +147,7 @@ namespace TestApiClientUI
|
||||
}
|
||||
}
|
||||
|
||||
private void changeQuote(string symbol, double bid, double ask)
|
||||
private void ChangeQuote(string symbol, double bid, double ask)
|
||||
{
|
||||
if (string.IsNullOrEmpty(symbol) == false)
|
||||
{
|
||||
@@ -170,7 +160,7 @@ namespace TestApiClientUI
|
||||
}
|
||||
}
|
||||
|
||||
private void onConnected()
|
||||
private void OnConnected()
|
||||
{
|
||||
var quotes = _apiClient.GetQuotes();
|
||||
|
||||
@@ -178,12 +168,12 @@ namespace TestApiClientUI
|
||||
{
|
||||
foreach (var quote in quotes)
|
||||
{
|
||||
addNewQuote(quote);
|
||||
AddNewQuote(quote);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void onDisconnected()
|
||||
private void OnDisconnected()
|
||||
{
|
||||
listViewQuotes.Items.Clear();
|
||||
}
|
||||
@@ -200,7 +190,7 @@ namespace TestApiClientUI
|
||||
else
|
||||
_apiClient.BeginConnect(serverName, port);
|
||||
|
||||
onConnected();
|
||||
OnConnected();
|
||||
}
|
||||
|
||||
private void buttonDisconnect_Click(object sender, EventArgs e)
|
||||
@@ -213,78 +203,6 @@ namespace TestApiClientUI
|
||||
_apiClient.BeginDisconnect();
|
||||
}
|
||||
|
||||
private void sendOrder(string symbol, TradeOperation command, double volume, double price, int slippage, double stoploss, double takeprofit
|
||||
, string comment, int magic, DateTime expiration, Color arrow_color)
|
||||
{
|
||||
|
||||
int ticket = 0;
|
||||
try
|
||||
{
|
||||
ticket = _apiClient.OrderSend(symbol, command, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color);
|
||||
}
|
||||
catch (MtConnectionException ex)
|
||||
{
|
||||
addToLog("MtExecutionException: " + ex.Message);
|
||||
return;
|
||||
}
|
||||
catch (MtExecutionException ex)
|
||||
{
|
||||
addToLog("MtExecutionException: " + ex.Message + "; ErrorCode = " + ex.ErrorCode);
|
||||
return;
|
||||
}
|
||||
|
||||
addToLog(string.Format("Sended order result: ticketId = {0}, symbol = {1}, volume = {2}, slippage = {3}",
|
||||
ticket, symbol, volume, slippage));
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
string symbol = textBoxOrderSymbol.Text;
|
||||
|
||||
var op_command = (TradeOperation)(comboBoxOrderCommand.SelectedIndex);
|
||||
|
||||
double volume;
|
||||
double.TryParse(textBoxOrderVolume.Text, out volume);
|
||||
|
||||
double price;
|
||||
double.TryParse(textBoxOrderPrice.Text, out price);
|
||||
|
||||
int slippage = (int)numericOrderSlippage.Value;
|
||||
|
||||
double stoploss;
|
||||
double.TryParse(textBoxOrderStoploss.Text, out stoploss);
|
||||
|
||||
double takeprofit;
|
||||
double.TryParse(textBoxOrderProffit.Text, out takeprofit);
|
||||
|
||||
string comment = textBoxOrderComment.Text;
|
||||
|
||||
int magic;
|
||||
int.TryParse(textBoxOrderMagic.Text, out magic);
|
||||
|
||||
DateTime expiration = DateTime.Now;
|
||||
|
||||
Color arrow_color = new Color();
|
||||
switch (comboBoxOrderColor.SelectedIndex)
|
||||
{
|
||||
case 0:
|
||||
arrow_color = Color.Green;
|
||||
break;
|
||||
case 1:
|
||||
arrow_color = Color.Blue;
|
||||
break;
|
||||
case 2:
|
||||
arrow_color = Color.Red;
|
||||
break;
|
||||
}
|
||||
|
||||
Action a = () =>
|
||||
{
|
||||
sendOrder(symbol, op_command, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color);
|
||||
};
|
||||
a.BeginInvoke(null, null);
|
||||
}
|
||||
|
||||
private void listViewQuotes_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (listViewQuotes.SelectedItems.Count > 0)
|
||||
@@ -319,7 +237,7 @@ namespace TestApiClientUI
|
||||
sendedOrders.Add(orderId);
|
||||
}
|
||||
|
||||
addToLog(string.Format("Closed order result: {0}, ticketId = {1}, volume - {2}, slippage {3}", result, orderId, volume, slippage));
|
||||
AddToLog(string.Format("Closed order result: {0}, ticketId = {1}, volume - {2}, slippage {3}", result, orderId, volume, slippage));
|
||||
}
|
||||
|
||||
foreach (var orderId in sendedOrders)
|
||||
@@ -353,7 +271,7 @@ namespace TestApiClientUI
|
||||
|
||||
var result = _apiClient.OrderCloseBy(ticket, opposite, color);
|
||||
|
||||
addToLog(string.Format("ClosedBy order result: {0}, ticketId = {1}, opposite {2}", result, ticket, opposite));
|
||||
AddToLog(string.Format("ClosedBy order result: {0}, ticketId = {1}, opposite {2}", result, ticket, opposite));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -361,26 +279,26 @@ namespace TestApiClientUI
|
||||
{
|
||||
var result = _apiClient.OrderClosePrice();
|
||||
textBoxOrderPrice.Text = result.ToString();
|
||||
addToLog(string.Format("OrderClosePrice result: {0}", result));
|
||||
AddToLog(string.Format("OrderClosePrice result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderCloseTime()
|
||||
{
|
||||
var result = _apiClient.OrderCloseTime();
|
||||
addToLog(string.Format("OrderCloseTime result: {0}", result));
|
||||
AddToLog(string.Format("OrderCloseTime result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderComment()
|
||||
{
|
||||
var result = _apiClient.OrderComment();
|
||||
textBoxOrderComment.Text = result.ToString();
|
||||
addToLog(string.Format("OrderComment result: {0}", result));
|
||||
AddToLog(string.Format("OrderComment result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderCommission()
|
||||
{
|
||||
var result = _apiClient.OrderCommission();
|
||||
addToLog(string.Format("OrderCommission result: {0}", result));
|
||||
AddToLog(string.Format("OrderCommission result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderDelete()
|
||||
@@ -391,26 +309,26 @@ namespace TestApiClientUI
|
||||
|
||||
var result = _apiClient.OrderDelete(ticket);
|
||||
|
||||
addToLog(string.Format("Delete order result: {0}, ticketId = {1}", result, ticket));
|
||||
AddToLog(string.Format("Delete order result: {0}, ticketId = {1}", result, ticket));
|
||||
}
|
||||
}
|
||||
|
||||
private void orderExpiration()
|
||||
{
|
||||
var result = _apiClient.OrderExpiration();
|
||||
addToLog(string.Format("Expiration order result: {0}", result));
|
||||
AddToLog(string.Format("Expiration order result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderLots()
|
||||
{
|
||||
var result = _apiClient.OrderLots();
|
||||
addToLog(string.Format("Lots order result: {0}", result));
|
||||
AddToLog(string.Format("Lots order result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderMagicNumber()
|
||||
{
|
||||
var result = _apiClient.OrderMagicNumber();
|
||||
addToLog(string.Format("MagicNumber order result: {0}", result));
|
||||
AddToLog(string.Format("MagicNumber order result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderModify()
|
||||
@@ -446,20 +364,20 @@ namespace TestApiClientUI
|
||||
|
||||
var result = _apiClient.OrderModify(ticket, price, stoploss, takeprofit, expiration, arrow_color);
|
||||
|
||||
addToLog(string.Format("OrderModify result: {0}", result));
|
||||
AddToLog(string.Format("OrderModify result: {0}", result));
|
||||
}
|
||||
}
|
||||
|
||||
private void orderOpenPrice()
|
||||
{
|
||||
var result = _apiClient.OrderOpenPrice();
|
||||
addToLog(string.Format("OrderOpenPrice result: {0}", result));
|
||||
AddToLog(string.Format("OrderOpenPrice result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderOpenTime()
|
||||
{
|
||||
var result = _apiClient.OrderOpenTime();
|
||||
addToLog(string.Format("OpenTime order result: {0}", result));
|
||||
AddToLog(string.Format("OpenTime order result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderPrint()
|
||||
@@ -470,7 +388,7 @@ namespace TestApiClientUI
|
||||
private void orderProfit()
|
||||
{
|
||||
var result = _apiClient.OrderProfit();
|
||||
addToLog(string.Format("Profit order result: {0}", result));
|
||||
AddToLog(string.Format("Profit order result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderSelect()
|
||||
@@ -488,60 +406,60 @@ namespace TestApiClientUI
|
||||
{
|
||||
var result = _apiClient.OrderSelect(ticket, OrderSelectMode.SELECT_BY_POS);
|
||||
|
||||
addToLog(string.Format("OrderSelect result: {0}", result));
|
||||
AddToLog(string.Format("OrderSelect result: {0}", result));
|
||||
}
|
||||
}
|
||||
|
||||
private void ordersHistoryTotal()
|
||||
{
|
||||
var result = _apiClient.OrdersHistoryTotal();
|
||||
addToLog(string.Format("OrdersHistoryTotal result: {0}", result));
|
||||
AddToLog(string.Format("OrdersHistoryTotal result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderStopLoss()
|
||||
{
|
||||
var result = _apiClient.OrderStopLoss();
|
||||
textBoxOrderStoploss.Text = result.ToString();
|
||||
addToLog(string.Format("OrderStopLoss result: {0}", result));
|
||||
AddToLog(string.Format("OrderStopLoss result: {0}", result));
|
||||
}
|
||||
|
||||
private void ordersTotal()
|
||||
{
|
||||
var result = _apiClient.OrdersTotal();
|
||||
addToLog(string.Format("OrdersTotal result: {0}", result));
|
||||
AddToLog(string.Format("OrdersTotal result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderSwap()
|
||||
{
|
||||
var result = _apiClient.OrderSwap();
|
||||
addToLog(string.Format("OrderSwap result: {0}", result));
|
||||
AddToLog(string.Format("OrderSwap result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderSymbol()
|
||||
{
|
||||
var result = _apiClient.OrderSymbol();
|
||||
textBoxOrderSymbol.Text = result;
|
||||
addToLog(string.Format("OrderSymbol result: {0}", result));
|
||||
AddToLog(string.Format("OrderSymbol result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderTakeProfit()
|
||||
{
|
||||
var result = _apiClient.OrderTakeProfit();
|
||||
textBoxOrderProffit.Text = result.ToString();
|
||||
addToLog(string.Format("OrderTakeProfit result: {0}", result));
|
||||
AddToLog(string.Format("OrderTakeProfit result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderTicket()
|
||||
{
|
||||
var result = _apiClient.OrderTicket();
|
||||
addToLog(string.Format("OrderTicket result: {0}", result));
|
||||
AddToLog(string.Format("OrderTicket result: {0}", result));
|
||||
}
|
||||
|
||||
private void orderType()
|
||||
{
|
||||
var result = _apiClient.OrderType();
|
||||
comboBoxOrderCommand.SelectedIndex = (int)result;
|
||||
addToLog(string.Format("OrderType result: {0}", result));
|
||||
AddToLog(string.Format("OrderType result: {0}", result));
|
||||
}
|
||||
|
||||
private void button2_Click(object sender, EventArgs e)
|
||||
@@ -549,7 +467,7 @@ namespace TestApiClientUI
|
||||
_groupOrderCommands[comboBoxSelectedCommand.SelectedIndex]();
|
||||
}
|
||||
|
||||
private void addToLog(string msg)
|
||||
private void AddToLog(string msg)
|
||||
{
|
||||
RunOnUiThread(() =>
|
||||
{
|
||||
@@ -566,79 +484,79 @@ namespace TestApiClientUI
|
||||
case 0:
|
||||
{
|
||||
var result = _apiClient.GetLastError();
|
||||
addToLog(string.Format("GetLastError result: {0}", result));
|
||||
AddToLog(string.Format("GetLastError result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
{
|
||||
var result = _apiClient.IsConnected();
|
||||
addToLog(string.Format("IsConnected result: {0}", result));
|
||||
AddToLog(string.Format("IsConnected result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
var result = _apiClient.IsDemo();
|
||||
addToLog(string.Format("IsDemo result: {0}", result));
|
||||
AddToLog(string.Format("IsDemo result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
{
|
||||
var result = _apiClient.IsDllsAllowed();
|
||||
addToLog(string.Format("IsDllsAllowed result: {0}", result));
|
||||
AddToLog(string.Format("IsDllsAllowed result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
var result = _apiClient.IsExpertEnabled();
|
||||
addToLog(string.Format("IsExpertEnabled result: {0}", result));
|
||||
AddToLog(string.Format("IsExpertEnabled result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
{
|
||||
var result = _apiClient.IsLibrariesAllowed();
|
||||
addToLog(string.Format("IsLibrariesAllowed result: {0}", result));
|
||||
AddToLog(string.Format("IsLibrariesAllowed result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
{
|
||||
var result = _apiClient.IsOptimization();
|
||||
addToLog(string.Format("IsOptimization result: {0}", result));
|
||||
AddToLog(string.Format("IsOptimization result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
{
|
||||
var result = _apiClient.IsStopped();
|
||||
addToLog(string.Format("IsStopped result: {0}", result));
|
||||
AddToLog(string.Format("IsStopped result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
{
|
||||
var result = _apiClient.IsTesting();
|
||||
addToLog(string.Format("IsTesting result: {0}", result));
|
||||
AddToLog(string.Format("IsTesting result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
{
|
||||
var result = _apiClient.IsTradeAllowed();
|
||||
addToLog(string.Format("IsTradeAllowed result: {0}", result));
|
||||
AddToLog(string.Format("IsTradeAllowed result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
{
|
||||
var result = _apiClient.IsTradeContextBusy();
|
||||
addToLog(string.Format("IsTradeContextBusy result: {0}", result));
|
||||
AddToLog(string.Format("IsTradeContextBusy result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
{
|
||||
var result = _apiClient.IsVisualMode();
|
||||
addToLog(string.Format("IsVisualMode result: {0}", result));
|
||||
AddToLog(string.Format("IsVisualMode result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
{
|
||||
var result = _apiClient.UninitializeReason();
|
||||
addToLog(string.Format("UninitializeReason result: {0}", result));
|
||||
AddToLog(string.Format("UninitializeReason result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
@@ -646,7 +564,7 @@ namespace TestApiClientUI
|
||||
int errorCode = -1;
|
||||
int.TryParse(textBoxErrorCode.Text, out errorCode);
|
||||
var result = _apiClient.ErrorDescription(errorCode);
|
||||
addToLog(string.Format("ErrorDescription result: {0}", result));
|
||||
AddToLog(string.Format("ErrorDescription result: {0}", result));
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -659,97 +577,97 @@ namespace TestApiClientUI
|
||||
case 0:
|
||||
{
|
||||
var result = _apiClient.AccountBalance();
|
||||
addToLog(string.Format("AccountBalance result: {0}", result));
|
||||
AddToLog(string.Format("AccountBalance result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
{
|
||||
var result = _apiClient.AccountCredit();
|
||||
addToLog(string.Format("AccountCredit result: {0}", result));
|
||||
AddToLog(string.Format("AccountCredit result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
var result = _apiClient.AccountCompany();
|
||||
addToLog(string.Format("AccountCompany result: {0}", result));
|
||||
AddToLog(string.Format("AccountCompany result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
{
|
||||
var result = _apiClient.AccountCurrency();
|
||||
addToLog(string.Format("AccountCurrency result: {0}", result));
|
||||
AddToLog(string.Format("AccountCurrency result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
var result = _apiClient.AccountEquity();
|
||||
addToLog(string.Format("AccountEquity result: {0}", result));
|
||||
AddToLog(string.Format("AccountEquity result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
{
|
||||
var result = _apiClient.AccountFreeMargin();
|
||||
addToLog(string.Format("AccountFreeMargin result: {0}", result));
|
||||
AddToLog(string.Format("AccountFreeMargin result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
{
|
||||
var result = _apiClient.AccountFreeMarginCheck(textBoxAccountInfoSymbol.Text, (TradeOperation)comboBoxAccountInfoCmd.SelectedIndex, int.Parse(textBoxAccountInfoVolume.Text));
|
||||
addToLog(string.Format("AccountFreeMarginCheck result: {0}", result));
|
||||
AddToLog(string.Format("AccountFreeMarginCheck result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
{
|
||||
var result = _apiClient.AccountFreeMarginMode();
|
||||
addToLog(string.Format("AccountFreeMarginMode result: {0}", result));
|
||||
AddToLog(string.Format("AccountFreeMarginMode result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
{
|
||||
var result = _apiClient.AccountLeverage();
|
||||
addToLog(string.Format("AccountLeverage result: {0}", result));
|
||||
AddToLog(string.Format("AccountLeverage result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
{
|
||||
var result = _apiClient.AccountMargin();
|
||||
addToLog(string.Format("AccountMargin result: {0}", result));
|
||||
AddToLog(string.Format("AccountMargin result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
{
|
||||
var result = _apiClient.AccountName();
|
||||
addToLog(string.Format("AccountName result: {0}", result));
|
||||
AddToLog(string.Format("AccountName result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
{
|
||||
var result = _apiClient.AccountNumber();
|
||||
addToLog(string.Format("AccountNumber result: {0}", result));
|
||||
AddToLog(string.Format("AccountNumber result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
{
|
||||
var result = _apiClient.AccountProfit();
|
||||
addToLog(string.Format("AccountProfit result: {0}", result));
|
||||
AddToLog(string.Format("AccountProfit result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
{
|
||||
var result = _apiClient.AccountServer();
|
||||
addToLog(string.Format("AccountServer result: {0}", result));
|
||||
AddToLog(string.Format("AccountServer result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
{
|
||||
var result = _apiClient.AccountStopoutLevel();
|
||||
addToLog(string.Format("AccountStopoutLevel result: {0}", result));
|
||||
AddToLog(string.Format("AccountStopoutLevel result: {0}", result));
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
{
|
||||
var result = _apiClient.AccountStopoutMode();
|
||||
addToLog(string.Format("AccountStopoutMode result: {0}", result));
|
||||
AddToLog(string.Format("AccountStopoutMode result: {0}", result));
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -761,7 +679,7 @@ namespace TestApiClientUI
|
||||
return;
|
||||
|
||||
var result = _apiClient.MarketInfo(txtMarketInfoSymbol.Text, (MarketInfoModeType)listBoxMarketInfo.SelectedIndex);
|
||||
addToLog(string.Format("MarketInfo result: {0}", result));
|
||||
AddToLog(string.Format("MarketInfo result: {0}", result));
|
||||
}
|
||||
|
||||
private void button6_Click(object sender, EventArgs e)
|
||||
@@ -849,25 +767,25 @@ namespace TestApiClientUI
|
||||
string symbol = textBoxSelectedSymbol.Text;
|
||||
int[] param = {11, 12, 13};
|
||||
var retVal = _apiClient.iCustom(symbol, (int)ChartPeriod.PERIOD_H1, "Zigzag", param, 1, 0);
|
||||
addToLog(string.Format("ICustom result: {0}", retVal));
|
||||
AddToLog(string.Format("ICustom result: {0}", retVal));
|
||||
}
|
||||
|
||||
private void button13_Click(object sender, EventArgs e)
|
||||
{
|
||||
var retVal = _apiClient.TimeCurrent();
|
||||
addToLog(string.Format("TimeCurrent result: {0}", retVal));
|
||||
AddToLog(string.Format("TimeCurrent result: {0}", retVal));
|
||||
}
|
||||
|
||||
private void button14_Click(object sender, EventArgs e)
|
||||
{
|
||||
var retVal = _apiClient.TimeLocal();
|
||||
addToLog(string.Format("TimeLocal result: {0}", retVal));
|
||||
AddToLog(string.Format("TimeLocal result: {0}", retVal));
|
||||
}
|
||||
|
||||
private void buttonRefreshRates_Click(object sender, EventArgs e)
|
||||
{
|
||||
var retVal = _apiClient.RefreshRates();
|
||||
addToLog(string.Format("RefreshRates result: {0}", retVal));
|
||||
AddToLog(string.Format("RefreshRates result: {0}", retVal));
|
||||
}
|
||||
|
||||
private void listBoxEventLog_MouseDoubleClick(object sender, MouseEventArgs e)
|
||||
@@ -875,33 +793,83 @@ namespace TestApiClientUI
|
||||
listBoxEventLog.Items.Clear();
|
||||
}
|
||||
|
||||
private TResult Execute<TResult>(Func<TResult> func)
|
||||
private async Task<TResult> Execute<TResult>(Func<TResult> func)
|
||||
{
|
||||
var result = default(TResult);
|
||||
try
|
||||
return await Task.Factory.StartNew(() =>
|
||||
{
|
||||
result = func();
|
||||
}
|
||||
catch (MtConnectionException ex)
|
||||
var result = default(TResult);
|
||||
try
|
||||
{
|
||||
result = func();
|
||||
}
|
||||
catch (MtConnectionException ex)
|
||||
{
|
||||
AddToLog("MtExecutionException: " + ex.Message);
|
||||
}
|
||||
catch (MtExecutionException ex)
|
||||
{
|
||||
AddToLog("MtExecutionException: " + ex.Message + "; ErrorCode = " + ex.ErrorCode);
|
||||
}
|
||||
|
||||
return result;
|
||||
});
|
||||
}
|
||||
|
||||
//OrderSend
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
var symbol = textBoxOrderSymbol.Text;
|
||||
|
||||
var cmd = (TradeOperation)(comboBoxOrderCommand.SelectedIndex);
|
||||
|
||||
double volume;
|
||||
double.TryParse(textBoxOrderVolume.Text, out volume);
|
||||
|
||||
double price;
|
||||
double.TryParse(textBoxOrderPrice.Text, out price);
|
||||
|
||||
var slippage = (int)numericOrderSlippage.Value;
|
||||
|
||||
double stoploss;
|
||||
double.TryParse(textBoxOrderStoploss.Text, out stoploss);
|
||||
|
||||
double takeprofit;
|
||||
double.TryParse(textBoxOrderProffit.Text, out takeprofit);
|
||||
|
||||
var comment = textBoxOrderComment.Text;
|
||||
|
||||
int magic;
|
||||
int.TryParse(textBoxOrderMagic.Text, out magic);
|
||||
|
||||
var expiration = DateTime.Now;
|
||||
|
||||
var arrowColor = new Color();
|
||||
switch (comboBoxOrderColor.SelectedIndex)
|
||||
{
|
||||
addToLog("MtExecutionException: " + ex.Message);
|
||||
}
|
||||
catch (MtExecutionException ex)
|
||||
{
|
||||
addToLog("MtExecutionException: " + ex.Message + "; ErrorCode = " + ex.ErrorCode);
|
||||
case 0:
|
||||
arrowColor = Color.Green;
|
||||
break;
|
||||
case 1:
|
||||
arrowColor = Color.Blue;
|
||||
break;
|
||||
case 2:
|
||||
arrowColor = Color.Red;
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
var ticket = Execute(() => _apiClient.OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrowColor));
|
||||
|
||||
AddToLog(string.Format("Sended order result: ticket = {0}", ticket));
|
||||
}
|
||||
|
||||
//GetOrder
|
||||
private void button16_Click(object sender, EventArgs e)
|
||||
private async void button16_Click(object sender, EventArgs e)
|
||||
{
|
||||
var ticket = int.Parse(textBoxIndexTicket.Text);
|
||||
var selectMode = (OrderSelectMode) comboBox1.SelectedIndex;
|
||||
var selectSource = (OrderSelectSource) comboBox2.SelectedIndex;
|
||||
|
||||
var order = Execute(() => _apiClient.GetOrder(ticket, selectMode, selectSource));
|
||||
var order = await Execute(() => _apiClient.GetOrder(ticket, selectMode, selectSource));
|
||||
|
||||
if (order != null)
|
||||
{
|
||||
@@ -909,17 +877,17 @@ namespace TestApiClientUI
|
||||
string.Format(
|
||||
"Order: Ticket = {0}, Symbol = {1}, Operation = {2}, OpenPrice = {3}, ClosePrice = {4}, Lots = {5}, Profit = {6}, Comment = {7}, Commission = {8}, MagicNumber = {9}, OpenTime = {10}, CloseTime = {11}",
|
||||
order.Ticket, order.Symbol, order.Operation, order.OpenPrice, order.ClosePrice, order.Lots, order.Profit, order.Comment, order.Commission, order.MagicNumber, order.OpenTime, order.CloseTime);
|
||||
addToLog(result);
|
||||
AddToLog(result);
|
||||
}
|
||||
}
|
||||
|
||||
//GetOrders
|
||||
private void button17_Click(object sender, EventArgs e)
|
||||
private async void button17_Click(object sender, EventArgs e)
|
||||
{
|
||||
var selectSource = (OrderSelectSource)comboBox2.SelectedIndex;
|
||||
|
||||
|
||||
var orders = Execute(() => _apiClient.GetOrders(selectSource)); ;
|
||||
var orders = await Execute(() => _apiClient.GetOrders(selectSource)); ;
|
||||
|
||||
if (orders != null)
|
||||
{
|
||||
@@ -929,13 +897,13 @@ namespace TestApiClientUI
|
||||
string.Format(
|
||||
"Order: Ticket = {0}, Symbol = {1}, Operation = {2}, OpenPrice = {3}, ClosePrice = {4}, Lots = {5}, Profit = {6}, Comment = {7}, Commission = {8}, MagicNumber = {9}, OpenTime = {10}, CloseTime = {11}",
|
||||
order.Ticket, order.Symbol, order.Operation, order.OpenPrice, order.ClosePrice, order.Lots, order.Profit, order.Comment, order.Commission, order.MagicNumber, order.OpenTime, order.CloseTime);
|
||||
addToLog(result);
|
||||
AddToLog(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//OrderSendBuy
|
||||
private void button18_Click(object sender, EventArgs e)
|
||||
private async void button18_Click(object sender, EventArgs e)
|
||||
{
|
||||
var symbol = textBoxOrderSymbol.Text;
|
||||
|
||||
@@ -944,14 +912,14 @@ namespace TestApiClientUI
|
||||
|
||||
var slippage = (int)numericOrderSlippage.Value;
|
||||
|
||||
var ticket = Execute(() => _apiClient.OrderSendBuy(symbol, volume, slippage));
|
||||
var ticket = await Execute(() => _apiClient.OrderSendBuy(symbol, volume, slippage));
|
||||
|
||||
addToLog(string.Format("Sended order result: ticketId = {0}, symbol = {1}, volume = {2}, slippage = {3}",
|
||||
AddToLog(string.Format("Sended order result: ticketId = {0}, symbol = {1}, volume = {2}, slippage = {3}",
|
||||
ticket, symbol, volume, slippage));
|
||||
}
|
||||
|
||||
//OrderSendSell
|
||||
private void button19_Click(object sender, EventArgs e)
|
||||
private async void button19_Click(object sender, EventArgs e)
|
||||
{
|
||||
var symbol = textBoxOrderSymbol.Text;
|
||||
|
||||
@@ -960,14 +928,14 @@ namespace TestApiClientUI
|
||||
|
||||
var slippage = (int)numericOrderSlippage.Value;
|
||||
|
||||
var ticket = Execute(() => _apiClient.OrderSendSell(symbol, volume, slippage));
|
||||
var ticket = await Execute(() => _apiClient.OrderSendSell(symbol, volume, slippage));
|
||||
|
||||
addToLog(string.Format("Sended order result: ticketId = {0}, symbol = {1}, volume = {2}, slippage = {3}",
|
||||
AddToLog(string.Format("Sended order result: ticketId = {0}, symbol = {1}, volume = {2}, slippage = {3}",
|
||||
ticket, symbol, volume, slippage));
|
||||
}
|
||||
|
||||
//OrderClose
|
||||
private void button20_Click(object sender, EventArgs e)
|
||||
private async void button20_Click(object sender, EventArgs e)
|
||||
{
|
||||
var ticket = int.Parse(textBoxIndexTicket.Text);
|
||||
var slippage = (int)numericOrderSlippage.Value;
|
||||
@@ -976,7 +944,7 @@ namespace TestApiClientUI
|
||||
|
||||
if (checkBox1.Checked)
|
||||
{
|
||||
closed = Execute(() => _apiClient.OrderClose(ticket, slippage));
|
||||
closed = await Execute(() => _apiClient.OrderClose(ticket, slippage));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -985,10 +953,21 @@ namespace TestApiClientUI
|
||||
|
||||
double price;
|
||||
double.TryParse(textBoxOrderPrice.Text, out price);
|
||||
closed = Execute(() => _apiClient.OrderClose(ticket, volume, price, slippage));
|
||||
closed = await Execute(() => _apiClient.OrderClose(ticket, volume, price, slippage));
|
||||
}
|
||||
|
||||
addToLog(string.Format("Close order result: {0}, ticket = {1}", closed, ticket));
|
||||
AddToLog(string.Format("Close order result: {0}, ticket = {1}", closed, ticket));
|
||||
}
|
||||
|
||||
//OrderCloseBy
|
||||
private async void button15_Click(object sender, EventArgs e)
|
||||
{
|
||||
var ticket = int.Parse(textBoxIndexTicket.Text);
|
||||
var opposite = int.Parse(textBoxOppositeTicket.Text);
|
||||
|
||||
var closed = await Execute(() => _apiClient.OrderCloseBy(ticket, opposite)); ;
|
||||
|
||||
AddToLog(string.Format("Close order result: {0}, ticket = {1}", closed, ticket));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -3419,6 +3419,9 @@ string OnRequest(string json)
|
||||
case 4: //OrderClose
|
||||
response = ExecuteRequestOrderClose(jo);
|
||||
break;
|
||||
case 5: //OrderCloseBy
|
||||
response = ExecuteRequestOrderCloseBy(jo);
|
||||
break;
|
||||
default:
|
||||
Print("OnRequest [WARNING]: Unknown request type ", requestType);
|
||||
response = CreateErrorResponse(-1, "Unknown request type");
|
||||
@@ -3624,4 +3627,22 @@ string ExecuteRequestOrderClose(JSONObject *jo)
|
||||
if (!OrderClose(ticket, lots, price, slippage, arrowcolor))
|
||||
return CreateErrorResponse(GetLastError(), "OrderClose failed");
|
||||
return CreateSuccessResponse("", NULL);
|
||||
}
|
||||
|
||||
string ExecuteRequestOrderCloseBy(JSONObject *jo)
|
||||
{
|
||||
if (jo.getValue("Ticket") == NULL)
|
||||
return CreateErrorResponse(-1, "Undefinded mandatory parameter Ticket");
|
||||
if (jo.getValue("Opposite") == NULL)
|
||||
return CreateErrorResponse(-1, "Undefinded mandatory parameter Opposite");
|
||||
|
||||
int ticket = jo.getInt("Ticket");
|
||||
int opposite = jo.getInt("Opposite");
|
||||
|
||||
JSONValue *jvArrowColor = jo.getValue("ArrowColor");
|
||||
int arrowcolor = (jvArrowColor != NULL) ? jvArrowColor.getInt() : CLR_NONE;
|
||||
|
||||
if (!OrderCloseBy(ticket, opposite, arrowcolor))
|
||||
return CreateErrorResponse(GetLastError(), "OrderCloseBy failed");
|
||||
return CreateSuccessResponse("", NULL);
|
||||
}
|
||||
Reference in New Issue
Block a user