mirror of
https://github.com/vdemydiuk/mtapi.git
synced 2026-08-12 18:28:07 +00:00
Compare commits
73
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
52ca4fae1e | ||
|
|
6b327e017a | ||
|
|
10a758bd93 | ||
|
|
4a9642b60c | ||
|
|
6ba6496e46 | ||
|
|
1ffbba5ee3 | ||
|
|
8cdfd6fb91 | ||
|
|
7c3ddbabac | ||
|
|
83e0145a3a | ||
|
|
f17c7cd554 | ||
|
|
4aefdd554b | ||
|
|
820ed9a631 | ||
|
|
95c55e90be | ||
|
|
486a1979a6 | ||
|
|
faef5f7d18 | ||
|
|
bd45c45fa1 | ||
|
|
29be184136 | ||
|
|
9bfda95cf7 | ||
|
|
24b881d8a0 | ||
|
|
07dd83f890 | ||
|
|
9afd30e463 | ||
|
|
16f454ca61 | ||
|
|
f3a3a582fd | ||
|
|
93aaae86ed | ||
|
|
bce68fd168 | ||
|
|
0812229538 | ||
|
|
d0fa4af1d0 | ||
|
|
8eb4bcfabe | ||
|
|
9ea58354be | ||
|
|
02774d7328 | ||
|
|
cbff71f8d0 | ||
|
|
951a91976c | ||
|
|
6a37826486 | ||
|
|
cab2de6d24 | ||
|
|
ec6c71607b | ||
|
|
0a39b69b15 | ||
|
|
fe94ec21de | ||
|
|
34c78c73c0 | ||
|
|
d7b8ef894c | ||
|
|
7f33cebce1 | ||
|
|
84740787d5 | ||
|
|
ad6bad5187 | ||
|
|
0086b02bc8 | ||
|
|
f7e06c1570 | ||
|
|
c86a3a3752 | ||
|
|
be8a17c0fd | ||
|
|
5c6751de9b | ||
|
|
83776f8b7a | ||
|
|
f1c1df1e00 | ||
|
|
d6640300f5 | ||
|
|
c9c188f697 | ||
|
|
3a4f561836 | ||
|
|
bdb30edee3 | ||
|
|
29f501b055 | ||
|
|
521d7ea2c0 | ||
|
|
0e5bb40a6f | ||
|
|
14079dc3c1 | ||
|
|
3600a86971 | ||
|
|
83e62fbff7 | ||
|
|
5c96aeb2fd | ||
|
|
a238e5eb36 | ||
|
|
11fd5b7527 | ||
|
|
cbe75cfbf6 | ||
|
|
9581431a9f | ||
|
|
acf0c12531 | ||
|
|
1eccda9b2c | ||
|
|
fd4aac7c32 | ||
|
|
36c90c8481 | ||
|
|
fefa451371 | ||
|
|
1c57f88cb1 | ||
|
|
08ba45c65f | ||
|
|
b8314e9ed7 | ||
|
|
9587b10c8c |
@@ -104,6 +104,14 @@ _DLLAPI int _stdcall updateQuote(int expertHandle, wchar_t* symbol, double bid,
|
|||||||
}, err, 0);
|
}, err, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_DLLAPI bool _stdcall sendEvent(int expertHandle, int eventType, wchar_t* payload, wchar_t* err)
|
||||||
|
{
|
||||||
|
return Execute<bool>([&expertHandle, &eventType, payload]() {
|
||||||
|
MtAdapter::GetInstance()->SendEvent(expertHandle, eventType, gcnew String(payload));
|
||||||
|
return true;
|
||||||
|
}, err, false);
|
||||||
|
}
|
||||||
|
|
||||||
_DLLAPI int _stdcall sendIntResponse(int expertHandle, int response, wchar_t* err)
|
_DLLAPI int _stdcall sendIntResponse(int expertHandle, int response, wchar_t* err)
|
||||||
{
|
{
|
||||||
return Execute<int>([&expertHandle, &response]() {
|
return Execute<int>([&expertHandle, &response]() {
|
||||||
@@ -156,7 +164,7 @@ _DLLAPI int _stdcall sendStringResponse(int expertHandle, wchar_t* response, wch
|
|||||||
_DLLAPI int _stdcall sendVoidResponse(int expertHandle, wchar_t* err)
|
_DLLAPI int _stdcall sendVoidResponse(int expertHandle, wchar_t* err)
|
||||||
{
|
{
|
||||||
return Execute<int>([&expertHandle]() {
|
return Execute<int>([&expertHandle]() {
|
||||||
MtAdapter::GetInstance()->SendResponse(expertHandle, nullptr);
|
MtAdapter::GetInstance()->SendResponse(expertHandle, gcnew MtResponseObject(nullptr));
|
||||||
return 1;
|
return 1;
|
||||||
}, err, 0);
|
}, err, 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,50 @@ using log4net.Repository.Hierarchy;
|
|||||||
|
|
||||||
namespace MTApiService
|
namespace MTApiService
|
||||||
{
|
{
|
||||||
|
public class MtLog
|
||||||
|
{
|
||||||
|
#region ctor
|
||||||
|
internal MtLog(Type type)
|
||||||
|
{
|
||||||
|
_log = LogManager.GetLogger(type);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Public
|
||||||
|
|
||||||
|
public void Debug(object message)
|
||||||
|
{
|
||||||
|
_log.Debug(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Error(object message)
|
||||||
|
{
|
||||||
|
_log.Error(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Fatal(object message)
|
||||||
|
{
|
||||||
|
_log.Fatal(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Info(object message)
|
||||||
|
{
|
||||||
|
_log.Info(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Warn(object message)
|
||||||
|
{
|
||||||
|
_log.Warn(message);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Private
|
||||||
|
|
||||||
|
private readonly ILog _log;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
public class LogConfigurator
|
public class LogConfigurator
|
||||||
{
|
{
|
||||||
private const string LogFileNameExtension = "txt";
|
private const string LogFileNameExtension = "txt";
|
||||||
@@ -48,5 +92,13 @@ namespace MTApiService
|
|||||||
#endif
|
#endif
|
||||||
hierarchy.Configured = true;
|
hierarchy.Configured = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static MtLog GetLogger(Type type)
|
||||||
|
{
|
||||||
|
if (type == null)
|
||||||
|
throw new ArgumentNullException(nameof(type));
|
||||||
|
|
||||||
|
return new MtLog(type);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.28.0")]
|
[assembly: AssemblyVersion("1.0.29.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.28.0")]
|
[assembly: AssemblyFileVersion("1.0.29.0")]
|
||||||
@@ -994,6 +994,12 @@ namespace MtApi
|
|||||||
return MtApiTimeConverter.ConvertFromMtTime(commandResponse);
|
return MtApiTimeConverter.ConvertFromMtTime(commandResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DateTime TimeGMT()
|
||||||
|
{
|
||||||
|
var commandResponse = SendCommand<int>(MtCommandType.TimeGMT, null);
|
||||||
|
return MtApiTimeConverter.ConvertFromMtTime(commandResponse);
|
||||||
|
}
|
||||||
|
|
||||||
public int TimeDay(DateTime date)
|
public int TimeDay(DateTime date)
|
||||||
{
|
{
|
||||||
var commandParameters = new ArrayList { MtApiTimeConverter.ConvertToMtTime(date) };
|
var commandParameters = new ArrayList { MtApiTimeConverter.ConvertToMtTime(date) };
|
||||||
|
|||||||
@@ -111,6 +111,7 @@
|
|||||||
TimeSeconds = 86,
|
TimeSeconds = 86,
|
||||||
TimeYear = 87,
|
TimeYear = 87,
|
||||||
Year = 88,
|
Year = 88,
|
||||||
|
TimeGMT = 281,
|
||||||
|
|
||||||
//Global Variables
|
//Global Variables
|
||||||
GlobalVariableCheck = 89,
|
GlobalVariableCheck = 89,
|
||||||
|
|||||||
+3
-1
@@ -1,4 +1,6 @@
|
|||||||
namespace MtApi
|
// ReSharper disable InconsistentNaming
|
||||||
|
|
||||||
|
namespace MtApi
|
||||||
{
|
{
|
||||||
public enum ENUM_TERMINAL_INFO_STRING
|
public enum ENUM_TERMINAL_INFO_STRING
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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.38.0")]
|
[assembly: AssemblyVersion("1.0.40.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.38.0")]
|
[assembly: AssemblyFileVersion("1.0.40.0")]
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
namespace MtApi5.Events
|
||||||
|
{
|
||||||
|
internal enum Mt5EventTypes
|
||||||
|
{
|
||||||
|
OnTradeTransaction = 1,
|
||||||
|
OnBookEvent = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
namespace MtApi5.Events
|
||||||
|
{
|
||||||
|
internal class OnBookEvent
|
||||||
|
{
|
||||||
|
public string Symbol { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
namespace MtApi5.Events
|
||||||
|
{
|
||||||
|
internal class OnTradeTransactionEvent
|
||||||
|
{
|
||||||
|
public MqlTradeTransaction Trans { get; set; }
|
||||||
|
public MqlTradeRequest Request { get; set; }
|
||||||
|
public MqlTradeResult Result { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
+12
-8
@@ -1,8 +1,4 @@
|
|||||||
using System;
|
// ReSharper disable InconsistentNaming
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace MtApi5
|
namespace MtApi5
|
||||||
{
|
{
|
||||||
public class MqlBookInfo
|
public class MqlBookInfo
|
||||||
@@ -14,8 +10,16 @@ namespace MtApi5
|
|||||||
this.volume = volume;
|
this.volume = volume;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ENUM_BOOK_TYPE type { get; private set; } // Order type from ENUM_BOOK_TYPE enumeration
|
public MqlBookInfo()
|
||||||
public double price { get; private set; } // Price
|
{ }
|
||||||
public long volume { get; private set; } // Volume
|
|
||||||
|
public ENUM_BOOK_TYPE type { get; set; } // Order type from ENUM_BOOK_TYPE enumeration
|
||||||
|
public double price { get; set; } // Price
|
||||||
|
public long volume { get; set; } // Volume
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return $"type = {type}; price = {price}; volume = {volume}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
namespace MtApi5
|
||||||
|
{
|
||||||
|
public class MqlParam
|
||||||
|
{
|
||||||
|
public ENUM_DATATYPE DataType { get; set; }
|
||||||
|
public long? IntegerValue { get; set; }
|
||||||
|
public double? DoubleValue { get; set; }
|
||||||
|
public string StringValue { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-1
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
// ReSharper disable InconsistentNaming
|
||||||
|
using System;
|
||||||
|
|
||||||
namespace MtApi5
|
namespace MtApi5
|
||||||
{
|
{
|
||||||
|
|||||||
+2
-1
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
// ReSharper disable InconsistentNaming
|
||||||
|
using System;
|
||||||
|
|
||||||
namespace MtApi5
|
namespace MtApi5
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,15 +1,17 @@
|
|||||||
namespace MtApi5
|
// ReSharper disable InconsistentNaming
|
||||||
|
|
||||||
|
namespace MtApi5
|
||||||
{
|
{
|
||||||
public class MqlTradeCheckResult
|
public class MqlTradeCheckResult
|
||||||
{
|
{
|
||||||
public uint Retcode { get; private set; } // Reply code
|
public uint Retcode { get; set; } // Reply code
|
||||||
public double Balance { get; private set; } // Balance after the execution of the deal
|
public double Balance { get; set; } // Balance after the execution of the deal
|
||||||
public double Equity { get; private set; } // Equity after the execution of the deal
|
public double Equity { get; set; } // Equity after the execution of the deal
|
||||||
public double Profit { get; private set; } // Floating profit
|
public double Profit { get; set; } // Floating profit
|
||||||
public double Margin { get; private set; } // Margin requirements
|
public double Margin { get; set; } // Margin requirements
|
||||||
public double Margin_free { get; private set; } // Free margin
|
public double Margin_free { get; set; } // Free margin
|
||||||
public double Margin_level { get; private set; } // Margin level
|
public double Margin_level { get; set; } // Margin level
|
||||||
public string Comment { get; private set; } // Comment to the reply code (description of the error)
|
public string Comment { get; set; } // Comment to the reply code (description of the error)
|
||||||
|
|
||||||
public MqlTradeCheckResult(uint retcode
|
public MqlTradeCheckResult(uint retcode
|
||||||
, double balance
|
, double balance
|
||||||
@@ -29,5 +31,13 @@
|
|||||||
Margin_level = margin_level;
|
Margin_level = margin_level;
|
||||||
Comment = comment;
|
Comment = comment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MqlTradeCheckResult()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return $"Retcode={Retcode}; Comment={Comment}; Balance={Balance}; Equity={Equity}; Profit={Profit}; Margin={Margin}; Margin_free={Margin_free}; Margin_level={Margin_level}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
using System;
|
// ReSharper disable InconsistentNaming
|
||||||
|
using System;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace MtApi5
|
namespace MtApi5
|
||||||
{
|
{
|
||||||
@@ -17,9 +19,23 @@ namespace MtApi5
|
|||||||
public ENUM_ORDER_TYPE Type { get; set; } // Order type
|
public ENUM_ORDER_TYPE Type { get; set; } // Order type
|
||||||
public ENUM_ORDER_TYPE_FILLING Type_filling { get; set; } // Order execution type
|
public ENUM_ORDER_TYPE_FILLING Type_filling { get; set; } // Order execution type
|
||||||
public ENUM_ORDER_TYPE_TIME Type_time { get; set; } // Order expiration type
|
public ENUM_ORDER_TYPE_TIME Type_time { get; set; } // Order expiration type
|
||||||
public DateTime Expiration { get; set; } // Order expiration time (for the orders of ORDER_TIME_SPECIFIED type)
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public DateTime Expiration // Order expiration time (for the orders of ORDER_TIME_SPECIFIED type)
|
||||||
|
{
|
||||||
|
get { return Mt5TimeConverter.ConvertFromMtTime(MtExpiration); }
|
||||||
|
set { MtExpiration = Mt5TimeConverter.ConvertToMtTime(value); }
|
||||||
|
}
|
||||||
|
|
||||||
public string Comment { get; set; } // Order comment
|
public string Comment { get; set; } // Order comment
|
||||||
public ulong Position { get; set; } // Position ticket
|
public ulong Position { get; set; } // Position ticket
|
||||||
public ulong PositionBy { get; set; } // The ticket of an opposite position
|
public ulong PositionBy { get; set; } // The ticket of an opposite position
|
||||||
|
|
||||||
|
public int MtExpiration { get; private set; }
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return $"Action={Action}; Magic={Magic}; Order={Order}; Symbol={Symbol}; Volume={Volume}; Price={Price}; Stoplimit={Stoplimit}; Sl={Sl}; Tp={Tp}; Deviation={Deviation}; Type={Type}; Type_filling={Type_filling}; Type_time={Type_time}; Expiration={Expiration}; Comment={Comment}; Position={Position}; PositionBy={PositionBy}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+26
-11
@@ -1,4 +1,6 @@
|
|||||||
namespace MtApi5
|
// ReSharper disable InconsistentNaming
|
||||||
|
|
||||||
|
namespace MtApi5
|
||||||
{
|
{
|
||||||
public class MqlTradeResult
|
public class MqlTradeResult
|
||||||
{
|
{
|
||||||
@@ -15,19 +17,32 @@
|
|||||||
Request_id = request_id;
|
Request_id = request_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint Retcode { get; private set; } // Operation return code
|
internal MqlTradeResult(MqlTradeResult o)
|
||||||
public ulong Deal { get; private set; } // Deal ticket, if it is performed
|
{
|
||||||
public ulong Order { get; private set; } // Order ticket, if it is placed
|
Retcode = o.Retcode;
|
||||||
public double Volume { get; private set; } // Deal volume, confirmed by broker
|
Deal = o.Deal;
|
||||||
public double Price { get; private set; } // Deal price, confirmed by broker
|
Order = o.Order;
|
||||||
public double Bid { get; private set; } // Current Bid price
|
Volume = o.Volume;
|
||||||
public double Ask { get; private set; } // Current Ask price
|
Price = o.Price;
|
||||||
public string Comment { get; private set; } // Broker comment to operation (by default it is filled by the operation description)
|
Bid = o.Bid;
|
||||||
public uint Request_id { get; private set; } // Request ID set by the terminal during the dispatch
|
Ask = o.Ask;
|
||||||
|
Comment = o.Comment;
|
||||||
|
Request_id = o.Request_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint Retcode { get; } // Operation return code
|
||||||
|
public ulong Deal { get; } // Deal ticket, if it is performed
|
||||||
|
public ulong Order { get; } // Order ticket, if it is placed
|
||||||
|
public double Volume { get; } // Deal volume, confirmed by broker
|
||||||
|
public double Price { get; } // Deal price, confirmed by broker
|
||||||
|
public double Bid { get; } // Current Bid price
|
||||||
|
public double Ask { get; } // Current Ask price
|
||||||
|
public string Comment { get; } // Broker comment to operation (by default it is filled by the operation description)
|
||||||
|
public uint Request_id { get; } // Request ID set by the terminal during the dispatch
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
return $"Retcode={Retcode}; Deal={Deal}; Order={Order}; Volume={Volume}; Price={Price}; Bid={Bid}; Ask={Ask}; Comment={Comment}; Request_id={Request_id}";
|
return $"Retcode={Retcode}; Comment={Comment}; Deal={Deal}; Order={Order}; Volume={Volume}; Price={Price}; Bid={Bid}; Ask={Ask}; Request_id={Request_id}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
using System;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace MtApi5
|
||||||
|
{
|
||||||
|
public class MqlTradeTransaction
|
||||||
|
{
|
||||||
|
public ulong Deal { get; set; } // Deal ticket
|
||||||
|
public ulong Order { get; set; } // Order ticket
|
||||||
|
public string Symbol { get; set; } // Trade symbol name
|
||||||
|
public ENUM_TRADE_TRANSACTION_TYPE Type { get; set; } // Trade transaction type
|
||||||
|
public ENUM_ORDER_TYPE OrderType { get; set; } // Order type
|
||||||
|
public ENUM_ORDER_STATE OrderState { get; set; } // Order state
|
||||||
|
public ENUM_DEAL_TYPE DealType { get; set; } // Deal type
|
||||||
|
public ENUM_ORDER_TYPE_TIME TimeType { get; set; } // Order type by action period
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public DateTime TimeExpiration // Order expiration time
|
||||||
|
{
|
||||||
|
get { return Mt5TimeConverter.ConvertFromMtTime(MtTimeExpiration); }
|
||||||
|
set { MtTimeExpiration = Mt5TimeConverter.ConvertToMtTime(value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public double Price { get; set; } // Price
|
||||||
|
public double PriceTrigger { get; set; } // Stop limit order activation price
|
||||||
|
public double PriceSl { get; set; } // Stop Loss level
|
||||||
|
public double PriceTp { get; set; } // Take Profit level
|
||||||
|
public double Volume { get; set; } // Volume in lots
|
||||||
|
public ulong Position { get; set; } // Position ticket
|
||||||
|
public ulong PositionBy { get; set; } // Ticket of an opposite position
|
||||||
|
|
||||||
|
public int MtTimeExpiration { get; private set; }
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return $"Deal={Deal}; Order={Order}; Symbol={Symbol}; Type={Type}; OrderType={OrderType}; OrderState={OrderState}; DealType={DealType}; TimeType={TimeType}; TimeExpiration={TimeExpiration}; Price={Price}; PriceTrigger{PriceTrigger}; PriceSl={PriceSl}; PriceTp={PriceTp}; Volume={Volume}; Position={Position}; PositionBy={PositionBy}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace MtApi5
|
||||||
|
{
|
||||||
|
public class Mt5BookEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
public int ExpertHandle { get; set; }
|
||||||
|
public string Symbol { get; set; } //Symbol of OnBookEvent event.
|
||||||
|
}
|
||||||
|
}
|
||||||
+113
-8
@@ -1,14 +1,14 @@
|
|||||||
namespace MtApi5
|
// ReSharper disable InconsistentNaming
|
||||||
|
namespace MtApi5
|
||||||
{
|
{
|
||||||
internal enum Mt5CommandType
|
internal enum Mt5CommandType
|
||||||
{
|
{
|
||||||
//NoCommand = 0
|
//NoCommand = 0
|
||||||
|
|
||||||
//trade operations
|
//trade operations
|
||||||
OrderSend = 1,
|
//OrderSend = 1,
|
||||||
OrderCalcMargin = 2,
|
OrderCalcMargin = 2,
|
||||||
OrderCalcProfit = 3,
|
OrderCalcProfit = 3,
|
||||||
OrderCheck = 4,
|
|
||||||
//OrderSendAsync = 5,
|
//OrderSendAsync = 5,
|
||||||
PositionsTotal = 6,
|
PositionsTotal = 6,
|
||||||
PositionGetSymbol = 7,
|
PositionGetSymbol = 7,
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
PositionGetDouble = 9,
|
PositionGetDouble = 9,
|
||||||
PositionGetInteger = 10,
|
PositionGetInteger = 10,
|
||||||
PositionGetString = 11,
|
PositionGetString = 11,
|
||||||
|
PositionGetTicket = 4,
|
||||||
OrdersTotal = 12,
|
OrdersTotal = 12,
|
||||||
OrderGetTicket = 13,
|
OrderGetTicket = 13,
|
||||||
OrderSelect = 14,
|
OrderSelect = 14,
|
||||||
@@ -94,20 +95,18 @@
|
|||||||
SymbolInfoSessionTrade = 59,
|
SymbolInfoSessionTrade = 59,
|
||||||
MarketBookAdd = 60,
|
MarketBookAdd = 60,
|
||||||
MarketBookRelease = 61,
|
MarketBookRelease = 61,
|
||||||
MarketBookGet = 62,
|
//MarketBookGet = 62,
|
||||||
OrderCloseAll = 63,
|
OrderCloseAll = 63,
|
||||||
|
|
||||||
//CTrade
|
//CTrade
|
||||||
PositionClose = 64,
|
PositionClose = 64,
|
||||||
PositionOpen = 65,
|
PositionOpen = 65,
|
||||||
PositionOpenWithResult = 1065,
|
//PositionOpenWithResult = 1065,
|
||||||
|
|
||||||
//Backtesting
|
//Backtesting
|
||||||
BacktestingReady = 66,
|
BacktestingReady = 66,
|
||||||
IsTesting = 67,
|
IsTesting = 67,
|
||||||
|
|
||||||
Print = 68,
|
|
||||||
|
|
||||||
//Requests
|
//Requests
|
||||||
MtRequest = 155,
|
MtRequest = 155,
|
||||||
|
|
||||||
@@ -130,6 +129,112 @@
|
|||||||
ObjectSetString = 84,
|
ObjectSetString = 84,
|
||||||
//TextSetFont = 85,
|
//TextSetFont = 85,
|
||||||
//TextOut = 86,
|
//TextOut = 86,
|
||||||
//TextGetSize = 87
|
//TextGetSize = 87,
|
||||||
|
|
||||||
|
iAC = 88,
|
||||||
|
iAD = 89,
|
||||||
|
iADX = 90,
|
||||||
|
iADXWilder = 91,
|
||||||
|
iAlligator = 92,
|
||||||
|
iAMA = 93,
|
||||||
|
iAO = 94,
|
||||||
|
iATR = 95,
|
||||||
|
iBearsPower = 96,
|
||||||
|
iBands = 97,
|
||||||
|
iBullsPower = 98,
|
||||||
|
iCCI = 99,
|
||||||
|
iChaikin = 100,
|
||||||
|
//iCustom = 101,
|
||||||
|
iDEMA = 102,
|
||||||
|
iDeMarker = 103,
|
||||||
|
iEnvelopes = 104,
|
||||||
|
iForce = 105,
|
||||||
|
iFractals = 106,
|
||||||
|
iFrAMA = 107,
|
||||||
|
iGator = 108,
|
||||||
|
iIchimoku = 109,
|
||||||
|
iBWMFI = 110,
|
||||||
|
iMomentum = 111,
|
||||||
|
iMFI = 112,
|
||||||
|
iMA = 113,
|
||||||
|
iOsMA = 114,
|
||||||
|
iMACD = 115,
|
||||||
|
iOBV = 116,
|
||||||
|
iSAR = 117,
|
||||||
|
iRSI = 118,
|
||||||
|
iRVI = 119,
|
||||||
|
iStdDev = 120,
|
||||||
|
iStochastic = 121,
|
||||||
|
iTEMA = 122,
|
||||||
|
iTriX = 123,
|
||||||
|
iWPR = 124,
|
||||||
|
iVIDyA = 125,
|
||||||
|
iVolumes = 126,
|
||||||
|
|
||||||
|
//Date and Time
|
||||||
|
TimeCurrent = 127,
|
||||||
|
TimeTradeServer = 128,
|
||||||
|
TimeLocal = 129,
|
||||||
|
TimeGMT = 130,
|
||||||
|
|
||||||
|
IndicatorRelease = 131,
|
||||||
|
|
||||||
|
//Chart Operations
|
||||||
|
ChartId = 206,
|
||||||
|
ChartRedraw = 207,
|
||||||
|
ChartApplyTemplate = 236,
|
||||||
|
ChartSaveTemplate = 237,
|
||||||
|
ChartWindowFind = 238,
|
||||||
|
//ChartTimePriceToXY = 239,
|
||||||
|
//ChartXYToTimePrice = 240,
|
||||||
|
ChartOpen = 241,
|
||||||
|
ChartFirst = 242,
|
||||||
|
ChartNext = 243,
|
||||||
|
ChartClose = 244,
|
||||||
|
ChartSymbol = 245,
|
||||||
|
ChartPeriod = 246,
|
||||||
|
ChartSetDouble = 247,
|
||||||
|
ChartSetInteger = 248,
|
||||||
|
ChartSetString = 249,
|
||||||
|
ChartGetDouble = 250,
|
||||||
|
ChartGetInteger = 251,
|
||||||
|
ChartGetString = 252,
|
||||||
|
ChartNavigate = 253,
|
||||||
|
ChartIndicatorDelete = 254,
|
||||||
|
ChartIndicatorName = 255,
|
||||||
|
ChartIndicatorsTotal = 256,
|
||||||
|
ChartWindowOnDropped = 257,
|
||||||
|
ChartPriceOnDropped = 258,
|
||||||
|
ChartTimeOnDropped = 259,
|
||||||
|
ChartXOnDropped = 260,
|
||||||
|
ChartYOnDropped = 261,
|
||||||
|
ChartSetSymbolPeriod = 262,
|
||||||
|
ChartScreenShot = 263,
|
||||||
|
ChartIndicatorAdd = 280,
|
||||||
|
ChartIndicatorGet = 281,
|
||||||
|
|
||||||
|
// Terminal Operations
|
||||||
|
TerminalCompany = 68,
|
||||||
|
TerminalName = 69,
|
||||||
|
TerminalPath = 70,
|
||||||
|
|
||||||
|
//Checkup
|
||||||
|
GetLastError = 132,
|
||||||
|
TerminalInfoString = 153,
|
||||||
|
TerminalInfoInteger = 204,
|
||||||
|
TerminalInfoDouble = 205,
|
||||||
|
|
||||||
|
//Common Functions
|
||||||
|
Alert = 136,
|
||||||
|
Comment = 137, //TODO
|
||||||
|
GetTickCount = 138, //TODO
|
||||||
|
GetMicrosecondCount = 139, //TODO
|
||||||
|
MessageBox = 140, //TODO
|
||||||
|
PeriodSeconds = 141, //TODO
|
||||||
|
PlaySound = 142, //TODO
|
||||||
|
Print = 68,
|
||||||
|
ResetLastError = 143,
|
||||||
|
SendNotification = 144, //TODO
|
||||||
|
SendMail = 145 //TODO
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ namespace MtApi5
|
|||||||
{
|
{
|
||||||
public class Mt5ConnectionEventArgs: EventArgs
|
public class Mt5ConnectionEventArgs: EventArgs
|
||||||
{
|
{
|
||||||
public Mt5ConnectionState Status { get; private set; }
|
public Mt5ConnectionState Status { get; }
|
||||||
public string ConnectionMessage { get; private set; }
|
public string ConnectionMessage { get; }
|
||||||
|
|
||||||
public Mt5ConnectionEventArgs(Mt5ConnectionState status, string message)
|
public Mt5ConnectionEventArgs(Mt5ConnectionState status, string message)
|
||||||
{
|
{
|
||||||
|
|||||||
+206
-11
@@ -1,4 +1,6 @@
|
|||||||
namespace MtApi5
|
// ReSharper disable InconsistentNaming
|
||||||
|
|
||||||
|
namespace MtApi5
|
||||||
{
|
{
|
||||||
|
|
||||||
// Chart Constants:
|
// Chart Constants:
|
||||||
@@ -34,6 +36,96 @@
|
|||||||
#endregion //Chart Timeframes
|
#endregion //Chart Timeframes
|
||||||
|
|
||||||
|
|
||||||
|
#region Charts Properties
|
||||||
|
|
||||||
|
public enum ENUM_CHART_PROPERTY_DOUBLE
|
||||||
|
{
|
||||||
|
CHART_SHIFT_SIZE = 3,
|
||||||
|
CHART_FIXED_POSITION = 41,
|
||||||
|
CHART_FIXED_MAX = 8,
|
||||||
|
CHART_FIXED_MIN = 9,
|
||||||
|
CHART_POINTS_PER_BAR = 11,
|
||||||
|
CHART_PRICE_MIN = 108,
|
||||||
|
CHART_PRICE_MAX = 109
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ENUM_CHART_PROPERTY_INTEGER
|
||||||
|
{
|
||||||
|
CHART_SHOW = 46,
|
||||||
|
CHART_IS_OBJECT = 111,
|
||||||
|
CHART_BRING_TO_TOP = 35,
|
||||||
|
CHART_CONTEXT_MENU = 50,
|
||||||
|
CHART_CROSSHAIR_TOOL = 49,
|
||||||
|
CHART_MOUSE_SCROLL = 42,
|
||||||
|
CHART_EVENT_MOUSE_WHEEL = 48,
|
||||||
|
CHART_EVENT_MOUSE_MOVE = 40,
|
||||||
|
CHART_EVENT_OBJECT_CREATE = 38,
|
||||||
|
CHART_EVENT_OBJECT_DELETE = 39,
|
||||||
|
CHART_MODE = 0,
|
||||||
|
CHART_FOREGROUND = 1,
|
||||||
|
CHART_SHIFT = 2,
|
||||||
|
CHART_AUTOSCROLL = 4,
|
||||||
|
CHART_KEYBOARD_CONTROL = 47,
|
||||||
|
CHART_QUICK_NAVIGATION = 45,
|
||||||
|
CHART_SCALE = 5,
|
||||||
|
CHART_SCALEFIX = 6,
|
||||||
|
CHART_SCALEFIX_11 = 7,
|
||||||
|
CHART_SCALE_PT_PER_BAR = 10,
|
||||||
|
CHART_SHOW_OHLC = 12,
|
||||||
|
CHART_SHOW_BID_LINE = 13,
|
||||||
|
CHART_SHOW_ASK_LINE = 14,
|
||||||
|
CHART_SHOW_LAST_LINE = 15,
|
||||||
|
CHART_SHOW_PERIOD_SEP = 16,
|
||||||
|
CHART_SHOW_GRID = 17,
|
||||||
|
CHART_SHOW_VOLUMES = 18,
|
||||||
|
CHART_SHOW_OBJECT_DESCR = 19,
|
||||||
|
CHART_VISIBLE_BARS = 100,
|
||||||
|
CHART_WINDOWS_TOTAL = 101,
|
||||||
|
CHART_WINDOW_IS_VISIBLE = 102,
|
||||||
|
CHART_WINDOW_HANDLE = 103,
|
||||||
|
CHART_WINDOW_YDISTANCE = 110,
|
||||||
|
CHART_FIRST_VISIBLE_BAR = 104,
|
||||||
|
CHART_WIDTH_IN_BARS = 105,
|
||||||
|
CHART_WIDTH_IN_PIXELS = 106,
|
||||||
|
CHART_HEIGHT_IN_PIXELS = 107,
|
||||||
|
CHART_COLOR_BACKGROUND = 21,
|
||||||
|
CHART_COLOR_FOREGROUND = 22,
|
||||||
|
CHART_COLOR_GRID = 23,
|
||||||
|
CHART_COLOR_VOLUME = 24,
|
||||||
|
CHART_COLOR_CHART_UP = 25,
|
||||||
|
CHART_COLOR_CHART_DOWN = 26,
|
||||||
|
CHART_COLOR_CHART_LINE = 27,
|
||||||
|
CHART_COLOR_CANDLE_BULL = 28,
|
||||||
|
CHART_COLOR_CANDLE_BEAR = 29,
|
||||||
|
CHART_COLOR_BID = 30,
|
||||||
|
CHART_COLOR_ASK = 31,
|
||||||
|
CHART_COLOR_LAST = 32,
|
||||||
|
CHART_COLOR_STOP_LEVEL = 33,
|
||||||
|
CHART_SHOW_TRADE_LEVELS = 34,
|
||||||
|
CHART_DRAG_TRADE_LEVELS = 43,
|
||||||
|
CHART_SHOW_DATE_SCALE = 36,
|
||||||
|
CHART_SHOW_PRICE_SCALE = 37,
|
||||||
|
CHART_SHOW_ONE_CLICK = 44,
|
||||||
|
CHART_IS_MAXIMIZED = 115,
|
||||||
|
CHART_IS_MINIMIZED = 116
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ENUM_CHART_PROPERTY_STRING
|
||||||
|
{
|
||||||
|
CHART_COMMENT = 20,
|
||||||
|
CHART_EXPERT_NAME = 113,
|
||||||
|
CHART_SCRIPT_NAME = 114
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ENUM_CHART_POSITION
|
||||||
|
{
|
||||||
|
CHART_BEGIN = 0, // Chart beginning (the oldest prices)
|
||||||
|
CHART_CURRENT_POS = 1, // Current position
|
||||||
|
CHART_END = 2 // Chart end (the latest prices)
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
// Environment State:
|
// Environment State:
|
||||||
|
|
||||||
#region Client Terminal Properties
|
#region Client Terminal Properties
|
||||||
@@ -580,16 +672,16 @@
|
|||||||
public enum ENUM_TRADE_TRANSACTION_TYPE
|
public enum ENUM_TRADE_TRANSACTION_TYPE
|
||||||
{
|
{
|
||||||
TRADE_TRANSACTION_ORDER_ADD = 0, //Adding a new open order
|
TRADE_TRANSACTION_ORDER_ADD = 0, //Adding a new open order
|
||||||
TRADE_TRANSACTION_ORDER_UPDATE = 1, //Updating an open order
|
TRADE_TRANSACTION_ORDER_UPDATE = 1, //Updating an open order. The updates include not only evident changes from the client terminal or a trade server sides but also changes of an order state when setting it (for example, transition from ORDER_STATE_STARTED to ORDER_STATE_PLACED or from ORDER_STATE_PLACED to ORDER_STATE_PARTIAL, etc.).
|
||||||
TRADE_TRANSACTION_ORDER_DELETE = 2, //Removing an order from the list of the open ones
|
TRADE_TRANSACTION_ORDER_DELETE = 2, //Removing an order from the list of the open ones. An order can be deleted from the open ones as a result of setting an appropriate request or execution (filling) and moving to the history.
|
||||||
TRADE_TRANSACTION_DEAL_ADD = 6, //Adding a deal to the history
|
TRADE_TRANSACTION_DEAL_ADD = 6, //Adding a deal to the history. The action is performed as a result of an order execution or performing operations with an account balance.
|
||||||
TRADE_TRANSACTION_DEAL_UPDATE = 7, //Updating a deal in the history
|
TRADE_TRANSACTION_DEAL_UPDATE = 7, //Updating a deal in the history. There may be cases when a previously executed deal is changed on a server. For example, a deal has been changed in an external trading system (exchange) where it was previously transferred by a broker.
|
||||||
TRADE_TRANSACTION_DEAL_DELETE = 8, //Deleting a deal from the history
|
TRADE_TRANSACTION_DEAL_DELETE = 8, //Deleting a deal from the history. There may be cases when a previously executed deal is deleted from a server. For example, a deal has been deleted in an external trading system (exchange) where it was previously transferred by a broker.
|
||||||
TRADE_TRANSACTION_HISTORY_ADD = 3, //Adding an order to the history as a result of execution or cancellation
|
TRADE_TRANSACTION_HISTORY_ADD = 3, //Adding an order to the history as a result of execution or cancellation.
|
||||||
TRADE_TRANSACTION_HISTORY_UPDATE = 4, //Changing an order located in the orders history
|
TRADE_TRANSACTION_HISTORY_UPDATE = 4, //Changing an order located in the orders history. This type is provided for enhancing functionality on a trade server side.
|
||||||
TRADE_TRANSACTION_HISTORY_DELETE = 5, //Deleting an order from the orders history
|
TRADE_TRANSACTION_HISTORY_DELETE = 5, //Deleting an order from the orders history. This type is provided for enhancing functionality on a trade server side.
|
||||||
TRADE_TRANSACTION_POSITION = 9, //Changing a position not related to a deal execution
|
TRADE_TRANSACTION_POSITION = 9, //Changing a position not related to a deal execution. This type of transaction shows that a position has been changed on a trade server side. Position volume, open price, Stop Loss and Take Profit levels can be changed. Data on changes are submitted in MqlTradeTransaction structure via OnTradeTransaction handler. Position change (adding, changing or closing), as a result of a deal execution, does not lead to the occurrence of TRADE_TRANSACTION_POSITION transaction.
|
||||||
TRADE_TRANSACTION_REQUEST = 10 //Notification of the fact that a trade request has been processed by a server and processing result has been received
|
TRADE_TRANSACTION_REQUEST = 10 //Notification of the fact that a trade request has been processed by a server and processing result has been received. Only type field (trade transaction type) must be analyzed for such transactions in MqlTradeTransaction structure. The second and third parameters of OnTradeTransaction (request and result) must be analyzed for additional data.
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion //Trade Transaction Types
|
#endregion //Trade Transaction Types
|
||||||
@@ -742,5 +834,108 @@
|
|||||||
ALIGN_CENTER = 2, // Centered (only for the Edit object)
|
ALIGN_CENTER = 2, // Centered (only for the Edit object)
|
||||||
ALIGN_RIGHT = 0, // Right alignment
|
ALIGN_RIGHT = 0, // Right alignment
|
||||||
}
|
}
|
||||||
|
#endregion //Object Properties
|
||||||
|
|
||||||
|
#region Price Constants
|
||||||
|
|
||||||
|
public enum ENUM_APPLIED_PRICE
|
||||||
|
{
|
||||||
|
PRICE_CLOSE = 1, //Close price
|
||||||
|
PRICE_OPEN = 2, //Open price
|
||||||
|
PRICE_HIGH = 3, //The maximum price for the period
|
||||||
|
PRICE_LOW = 4, //The minimum price for the period
|
||||||
|
PRICE_MEDIAN = 5, //Median price, (high + low)/2
|
||||||
|
PRICE_TYPICAL = 6, //Typical price, (high + low + close)/3
|
||||||
|
PRICE_WEIGHTED = 7 //Average price, (high + low + close + close)/4
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ENUM_APPLIED_VOLUME
|
||||||
|
{
|
||||||
|
VOLUME_TICK = 0, //Tick volume
|
||||||
|
VOLUME_REAL = 1 //Trade volume
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ENUM_STO_PRICE
|
||||||
|
{
|
||||||
|
STO_LOWHIGH = 0, //Calculation is based on Low/High prices
|
||||||
|
STO_CLOSECLOSE = 1 //Calculation is based on Close/Close prices
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion //Price Constants
|
||||||
|
|
||||||
|
#region Smoothing Methods
|
||||||
|
|
||||||
|
public enum ENUM_MA_METHOD
|
||||||
|
{
|
||||||
|
MODE_SMA = 0, //Simple averaging
|
||||||
|
MODE_EMA = 1, //Exponential averaging
|
||||||
|
MODE_SMMA = 2, //Smoothed averaging
|
||||||
|
MODE_LWMA = 3 //Linear-weighted averaging
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion //Smoothing Methods
|
||||||
|
|
||||||
|
#region Indicator constants
|
||||||
|
|
||||||
|
public enum ENUM_INDICATOR
|
||||||
|
{
|
||||||
|
IND_AC = 5, // Accelerator Oscillator
|
||||||
|
IND_AD = 6, // Accumulation/Distribution
|
||||||
|
IND_ADX = 8, // Average Directional Index
|
||||||
|
IND_ADXW = 9, // ADX by Welles Wilder
|
||||||
|
IND_ALLIGATOR = 7, // Alligator
|
||||||
|
IND_AMA = 40, // Adaptive Moving Average
|
||||||
|
IND_AO = 11, // Awesome Oscillator
|
||||||
|
IND_ATR = 10, // Average True Range
|
||||||
|
IND_BANDS = 13, // Bollinger Bands®
|
||||||
|
IND_BEARS = 12, // Bears Power
|
||||||
|
IND_BULLS = 14, // Bulls Power
|
||||||
|
IND_BWMFI = 22, // Market Facilitation Index
|
||||||
|
IND_CCI = 15, // Commodity Channel Index
|
||||||
|
IND_CHAIKIN = 41, // Chaikin Oscillator
|
||||||
|
IND_CUSTOM = 43, // Custom indicator
|
||||||
|
IND_DEMA = 36, // Double Exponential Moving Average
|
||||||
|
IND_DEMARKER = 16, // DeMarker
|
||||||
|
IND_ENVELOPES = 17, // Envelopes
|
||||||
|
IND_FORCE = 18, // Force Index
|
||||||
|
IND_FRACTALS = 19, // Fractals
|
||||||
|
IND_FRAMA = 39, // Fractal Adaptive Moving Average
|
||||||
|
IND_GATOR = 20, // Gator Oscillator
|
||||||
|
IND_ICHIMOKU = 21, // Ichimoku Kinko Hyo
|
||||||
|
IND_MA = 26, // Moving Average
|
||||||
|
IND_MACD = 23, // MACD
|
||||||
|
IND_MFI = 25, // Money Flow Index
|
||||||
|
IND_MOMENTUM = 24, // Momentum
|
||||||
|
IND_OBV = 28, // On Balance Volume
|
||||||
|
IND_OSMA = 27, // OsMA
|
||||||
|
IND_RSI = 30, // Relative Strength Index
|
||||||
|
IND_RVI = 31, // Relative Vigor Index
|
||||||
|
IND_SAR = 29, // Parabolic SAR
|
||||||
|
IND_STDDEV = 32, // Standard Deviation
|
||||||
|
IND_STOCHASTIC = 33, // Stochastic Oscillator
|
||||||
|
IND_TEMA = 37, // Triple Exponential Moving Average
|
||||||
|
IND_TRIX = 38, // Triple Exponential Moving Averages Oscillator
|
||||||
|
IND_VIDYA = 42, // Variable Index Dynamic Average
|
||||||
|
IND_VOLUMES = 34, // Volumes
|
||||||
|
IND_WPR = 35 // Williams' Percent Ranges
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ENUM_DATATYPE
|
||||||
|
{
|
||||||
|
TYPE_BOOL = 1,
|
||||||
|
TYPE_CHAR = 2,
|
||||||
|
TYPE_UCHAR = 3,
|
||||||
|
TYPE_SHORT = 4,
|
||||||
|
TYPE_USHORT = 5,
|
||||||
|
TYPE_COLOR = 6,
|
||||||
|
TYPE_INT = 7,
|
||||||
|
TYPE_UINT = 8,
|
||||||
|
TYPE_DATETIME = 9,
|
||||||
|
TYPE_LONG = 10,
|
||||||
|
TYPE_ULONG = 11,
|
||||||
|
TYPE_FLOAT = 12,
|
||||||
|
TYPE_DOUBLE = 13,
|
||||||
|
TYPE_STRING = 14
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-8
@@ -1,21 +1,25 @@
|
|||||||
using System;
|
using MTApiService;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace MtApi5
|
namespace MtApi5
|
||||||
{
|
{
|
||||||
public class Mt5Quote
|
public class Mt5Quote
|
||||||
{
|
{
|
||||||
public string Instrument { get; private set; }
|
public string Instrument { get; }
|
||||||
public double Bid { get; private set; }
|
public double Bid { get; }
|
||||||
public double Ask { get; private set; }
|
public double Ask { get; }
|
||||||
|
public int ExpertHandle { get; set; }
|
||||||
|
|
||||||
public Mt5Quote(string instrument, double bid, double ask)
|
private Mt5Quote(string instrument, double bid, double ask)
|
||||||
{
|
{
|
||||||
Instrument = instrument;
|
Instrument = instrument;
|
||||||
Bid = bid;
|
Bid = bid;
|
||||||
Ask = ask;
|
Ask = ask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal Mt5Quote(MtQuote quote)
|
||||||
|
:this(quote.Instrument, quote.Bid, quote.Ask)
|
||||||
|
{
|
||||||
|
ExpertHandle = quote.ExpertHandle;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace MtApi5
|
namespace MtApi5
|
||||||
{
|
{
|
||||||
public class Mt5QuoteEventArgs: EventArgs
|
public class Mt5QuoteEventArgs: EventArgs
|
||||||
{
|
{
|
||||||
public Mt5Quote Quote { get; private set; }
|
public Mt5Quote Quote { get; }
|
||||||
|
|
||||||
public Mt5QuoteEventArgs(Mt5Quote quote)
|
public Mt5QuoteEventArgs(Mt5Quote quote)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,32 +1,28 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace MtApi5
|
namespace MtApi5
|
||||||
{
|
{
|
||||||
class Mt5TimeConverter
|
internal class Mt5TimeConverter
|
||||||
{
|
{
|
||||||
public static DateTime ConvertFromMtTime(int time)
|
public static DateTime ConvertFromMtTime(int time)
|
||||||
{
|
{
|
||||||
DateTime tmpTime = new DateTime(1970, 1, 1);
|
var tmpTime = new DateTime(1970, 1, 1);
|
||||||
return new DateTime(tmpTime.Ticks + (time * 0x989680L));
|
return new DateTime(tmpTime.Ticks + (time * 0x989680L));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DateTime ConvertFromMtTime(long time)
|
public static DateTime ConvertFromMtTime(long time)
|
||||||
{
|
{
|
||||||
DateTime tmpTime = new DateTime(1970, 1, 1);
|
var tmpTime = new DateTime(1970, 1, 1);
|
||||||
return new DateTime(tmpTime.Ticks + (time * 0x989680L));
|
return new DateTime(tmpTime.Ticks + (time * 0x989680L));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int ConvertToMtTime(DateTime time)
|
public static int ConvertToMtTime(DateTime? time)
|
||||||
{
|
{
|
||||||
int result = 0;
|
var result = 0;
|
||||||
if (time != DateTime.MinValue)
|
if (time == null || time == DateTime.MinValue)
|
||||||
{
|
return result;
|
||||||
DateTime tmpTime = new DateTime(1970, 1, 1);
|
var tmpTime = new DateTime(1970, 1, 1);
|
||||||
result = (int)((time.Ticks - tmpTime.Ticks) / 0x989680L);
|
result = (int)((time.Value.Ticks - tmpTime.Ticks) / 0x989680L);
|
||||||
}
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace MtApi5
|
||||||
|
{
|
||||||
|
public class Mt5TradeTransactionEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
public int ExpertHandle { get; set; }
|
||||||
|
public MqlTradeTransaction Trans { get; set; } // trade transaction structure
|
||||||
|
public MqlTradeRequest Request { get; set; } // request structure
|
||||||
|
public MqlTradeResult Result { get; set; } // result structure
|
||||||
|
}
|
||||||
|
}
|
||||||
+23
-2
@@ -48,10 +48,15 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="CopyTicksFlag.cs" />
|
<Compile Include="CopyTicksFlag.cs" />
|
||||||
|
<Compile Include="Events\OnBookEvent.cs" />
|
||||||
|
<Compile Include="Events\OnTradeTransactionEvent.cs" />
|
||||||
<Compile Include="MqlBookInfo.cs" />
|
<Compile Include="MqlBookInfo.cs" />
|
||||||
|
<Compile Include="MqlParam.cs" />
|
||||||
<Compile Include="MqlRates.cs" />
|
<Compile Include="MqlRates.cs" />
|
||||||
<Compile Include="MqlTick.cs" />
|
<Compile Include="MqlTick.cs" />
|
||||||
<Compile Include="MqlTradeCheckResult.cs" />
|
<Compile Include="MqlTradeCheckResult.cs" />
|
||||||
|
<Compile Include="MqlTradeTransaction.cs" />
|
||||||
|
<Compile Include="Mt5BookEventArgs.cs" />
|
||||||
<Compile Include="Mt5TimeConverter.cs" />
|
<Compile Include="Mt5TimeConverter.cs" />
|
||||||
<Compile Include="Mt5Enums.cs" />
|
<Compile Include="Mt5Enums.cs" />
|
||||||
<Compile Include="Mt5ConnectionEventArgs.cs" />
|
<Compile Include="Mt5ConnectionEventArgs.cs" />
|
||||||
@@ -59,18 +64,33 @@
|
|||||||
<Compile Include="MqlTradeRequest.cs" />
|
<Compile Include="MqlTradeRequest.cs" />
|
||||||
<Compile Include="MqlTradeResult.cs" />
|
<Compile Include="MqlTradeResult.cs" />
|
||||||
<Compile Include="Mt5QuoteEventArgs.cs" />
|
<Compile Include="Mt5QuoteEventArgs.cs" />
|
||||||
|
<Compile Include="Mt5TradeTransactionEventArgs.cs" />
|
||||||
<Compile Include="MtApi5Client.cs" />
|
<Compile Include="MtApi5Client.cs" />
|
||||||
<Compile Include="Mt5CommandType.cs" />
|
<Compile Include="Mt5CommandType.cs" />
|
||||||
<Compile Include="MtConverters.cs" />
|
<Compile Include="MtConverters.cs" />
|
||||||
<Compile Include="ErrorCode.cs" />
|
<Compile Include="ErrorCode.cs" />
|
||||||
<Compile Include="ExecutionException.cs" />
|
<Compile Include="ExecutionException.cs" />
|
||||||
|
<Compile Include="Events\Mt5EventTypes.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Mt5Quote.cs" />
|
<Compile Include="Mt5Quote.cs" />
|
||||||
|
<Compile Include="Requests\ChartTimePriceToXyRequest.cs" />
|
||||||
|
<Compile Include="Requests\ChartTimePriceToXyResult.cs" />
|
||||||
|
<Compile Include="Requests\ChartXyToTimePriceRequest.cs" />
|
||||||
|
<Compile Include="Requests\ChartXyToTimePriceResult.cs" />
|
||||||
<Compile Include="Requests\CopyTicksRequest.cs" />
|
<Compile Include="Requests\CopyTicksRequest.cs" />
|
||||||
|
<Compile Include="Requests\ICustomRequest.cs" />
|
||||||
|
<Compile Include="Requests\IndicatorCreateRequest.cs" />
|
||||||
|
<Compile Include="Requests\MarketBookGetRequest.cs" />
|
||||||
|
<Compile Include="Requests\OrderCheckRequest.cs" />
|
||||||
|
<Compile Include="Requests\OrderCheckResult.cs" />
|
||||||
|
<Compile Include="Requests\OrderSendRequest.cs" />
|
||||||
|
<Compile Include="Requests\PositionOpenRequest.cs" />
|
||||||
<Compile Include="Requests\RequestBase.cs" />
|
<Compile Include="Requests\RequestBase.cs" />
|
||||||
<Compile Include="Requests\RequestType.cs" />
|
<Compile Include="Requests\RequestType.cs" />
|
||||||
<Compile Include="Responses\CopyTicksResponse.cs" />
|
<Compile Include="Requests\OrderSendResult.cs" />
|
||||||
<Compile Include="Responses\ResponseBase.cs" />
|
<Compile Include="Requests\Response.cs" />
|
||||||
|
<Compile Include="Requests\SymbolInfoStringRequest.cs" />
|
||||||
|
<Compile Include="Requests\SymbolInfoStringResult.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\MTApiService\MTApiService.csproj">
|
<ProjectReference Include="..\MTApiService\MTApiService.csproj">
|
||||||
@@ -81,6 +101,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup />
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
|||||||
+1355
-58
File diff suppressed because it is too large
Load Diff
+18
-76
@@ -6,84 +6,14 @@ namespace MtApi5
|
|||||||
{
|
{
|
||||||
internal static class MtConverters
|
internal static class MtConverters
|
||||||
{
|
{
|
||||||
|
private static readonly MtLog Log = LogConfigurator.GetLogger(typeof(MtConverters));
|
||||||
|
|
||||||
#region Values Converters
|
#region Values Converters
|
||||||
public static Mt5Quote Parse(this MtQuote quote)
|
|
||||||
{
|
|
||||||
return (quote != null) ? new Mt5Quote(quote.Instrument, quote.Bid, quote.Ask) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool ParseResult(this string inputString, char separator, out MqlTradeResult result)
|
|
||||||
{
|
|
||||||
var retVal = false;
|
|
||||||
result = null;
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(inputString) == false)
|
|
||||||
{
|
|
||||||
var values = inputString.Split(separator);
|
|
||||||
if (values.Length == 10)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
retVal = int.Parse(values[0]) != 0;
|
|
||||||
|
|
||||||
var retcode = uint.Parse(values[1]);
|
|
||||||
var deal = ulong.Parse(values[2]);
|
|
||||||
var order = ulong.Parse(values[3]);
|
|
||||||
var volume = double.Parse(values[4]);
|
|
||||||
var price = double.Parse(values[5]);
|
|
||||||
var bid = double.Parse(values[6]);
|
|
||||||
var ask = double.Parse(values[7]);
|
|
||||||
var comment = values[8];
|
|
||||||
var requestId = uint.Parse(values[9]);
|
|
||||||
|
|
||||||
result = new MqlTradeResult(retcode, deal, order, volume, price, bid, ask, comment, requestId);
|
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool ParseResult(this string inputString, char separator, out MqlTradeCheckResult result)
|
|
||||||
{
|
|
||||||
var retVal = false;
|
|
||||||
result = null;
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(inputString) == false)
|
|
||||||
{
|
|
||||||
var values = inputString.Split(separator);
|
|
||||||
if (values.Length == 10)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
retVal = int.Parse(values[0]) != 0;
|
|
||||||
|
|
||||||
var retcode = uint.Parse(values[1]);
|
|
||||||
var balance = double.Parse(values[2]);
|
|
||||||
var equity = double.Parse(values[3]);
|
|
||||||
var profit = double.Parse(values[4]);
|
|
||||||
var margin = double.Parse(values[5]);
|
|
||||||
var marginFree = double.Parse(values[6]);
|
|
||||||
var marginLevel = double.Parse(values[7]);
|
|
||||||
var comment = values[8];
|
|
||||||
|
|
||||||
result = new MqlTradeCheckResult(retcode, balance, equity, profit, margin, marginFree, marginLevel, comment);
|
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
retVal = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool ParseResult(this string inputString, char separator, out double result)
|
public static bool ParseResult(this string inputString, char separator, out double result)
|
||||||
{
|
{
|
||||||
|
Log.Debug($"ParseResult: inputString = {inputString}, separator = {separator}");
|
||||||
|
|
||||||
var retVal = false;
|
var retVal = false;
|
||||||
result = 0;
|
result = 0;
|
||||||
|
|
||||||
@@ -98,18 +28,25 @@ namespace MtApi5
|
|||||||
|
|
||||||
result = double.Parse(values[1]);
|
result = double.Parse(values[1]);
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
retVal = false;
|
retVal = false;
|
||||||
|
Log.Error($"ParseResult: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Log.Warn("ParseResult: input srting is null or empty!");
|
||||||
|
}
|
||||||
|
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool ParseResult(this string inputString, char separator, out DateTime from, out DateTime to)
|
public static bool ParseResult(this string inputString, char separator, out DateTime from, out DateTime to)
|
||||||
{
|
{
|
||||||
|
Log.Debug($"ParseResult: inputString = {inputString}, separator = {separator}");
|
||||||
|
|
||||||
var retVal = false;
|
var retVal = false;
|
||||||
|
|
||||||
from = new DateTime();
|
from = new DateTime();
|
||||||
@@ -130,12 +67,17 @@ namespace MtApi5
|
|||||||
var iTo= int.Parse(values[2]);
|
var iTo= int.Parse(values[2]);
|
||||||
to = Mt5TimeConverter.ConvertFromMtTime(iTo);
|
to = Mt5TimeConverter.ConvertFromMtTime(iTo);
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
retVal = false;
|
retVal = false;
|
||||||
|
Log.Error($"ParseResult: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Log.Warn("ParseResult: input srting is null or empty!");
|
||||||
|
}
|
||||||
|
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.13")]
|
[assembly: AssemblyVersion("1.0.18")]
|
||||||
[assembly: AssemblyFileVersion("1.0.13")]
|
[assembly: AssemblyFileVersion("1.0.18")]
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace MtApi5.Requests
|
||||||
|
{
|
||||||
|
internal class ChartTimePriceToXyRequest : RequestBase
|
||||||
|
{
|
||||||
|
public override RequestType RequestType => RequestType.ChartTimePriceToXY;
|
||||||
|
|
||||||
|
public long ChartId { get; set; }
|
||||||
|
public int SubWindow { get; set; }
|
||||||
|
public DateTime? Time { get; set; }
|
||||||
|
public double Price { get; set; }
|
||||||
|
|
||||||
|
public int MtTime => Mt5TimeConverter.ConvertToMtTime(Time);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
namespace MtApi5.Requests
|
||||||
|
{
|
||||||
|
internal class ChartTimePriceToXyResult
|
||||||
|
{
|
||||||
|
public bool RetVal { get; set; }
|
||||||
|
public int X { get; set; }
|
||||||
|
public int Y { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace MtApi5.Requests
|
||||||
|
{
|
||||||
|
internal class ChartXyToTimePriceRequest : RequestBase
|
||||||
|
{
|
||||||
|
public override RequestType RequestType => RequestType.ChartXYToTimePrice;
|
||||||
|
|
||||||
|
public long ChartId { get; set; }
|
||||||
|
public int X { get; set; }
|
||||||
|
public int Y { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace MtApi5.Requests
|
||||||
|
{
|
||||||
|
internal class ChartXyToTimePriceResult
|
||||||
|
{
|
||||||
|
public bool RetVal { get; set; }
|
||||||
|
public int SubWindow { get; set; }
|
||||||
|
public DateTime? Time => Mt5TimeConverter.ConvertFromMtTime(MtTime);
|
||||||
|
public double Price { get; set; }
|
||||||
|
|
||||||
|
public int MtTime { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
using System.Collections;
|
||||||
|
|
||||||
|
namespace MtApi5.Requests
|
||||||
|
{
|
||||||
|
internal class ICustomRequest : RequestBase
|
||||||
|
{
|
||||||
|
public enum ParametersType
|
||||||
|
{
|
||||||
|
Int = 0,
|
||||||
|
Double = 1,
|
||||||
|
String = 2,
|
||||||
|
Boolean = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Symbol { get; set; }
|
||||||
|
public int Timeframe { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
public ArrayList Params { get; set; }
|
||||||
|
public ParametersType ParamsType { get; set; }
|
||||||
|
|
||||||
|
public override RequestType RequestType => RequestType.iCustom;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace MtApi5.Requests
|
||||||
|
{
|
||||||
|
internal class IndicatorCreateRequest: RequestBase
|
||||||
|
{
|
||||||
|
public override RequestType RequestType => RequestType.IndicatorCreate;
|
||||||
|
|
||||||
|
public string Symbol { get; set; }
|
||||||
|
public ENUM_TIMEFRAMES Period { get; set; }
|
||||||
|
public ENUM_INDICATOR IndicatorType { get; set; }
|
||||||
|
public List<MqlParam> Parameters { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
namespace MtApi5.Requests
|
||||||
|
{
|
||||||
|
internal class MarketBookGetRequest: RequestBase
|
||||||
|
{
|
||||||
|
public override RequestType RequestType => RequestType.MarketBookGet;
|
||||||
|
|
||||||
|
public string Symbol { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
namespace MtApi5.Requests
|
||||||
|
{
|
||||||
|
internal class OrderCheckRequest: RequestBase
|
||||||
|
{
|
||||||
|
public override RequestType RequestType => RequestType.OrderCheck;
|
||||||
|
|
||||||
|
public MqlTradeRequest TradeRequest { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
namespace MtApi5.Requests
|
||||||
|
{
|
||||||
|
public class OrderCheckResult
|
||||||
|
{
|
||||||
|
public bool RetVal { get; set; }
|
||||||
|
public MqlTradeCheckResult TradeCheckResult { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
namespace MtApi5.Requests
|
||||||
|
{
|
||||||
|
internal class OrderSendRequest: RequestBase
|
||||||
|
{
|
||||||
|
public override RequestType RequestType => RequestType.OrderSend;
|
||||||
|
|
||||||
|
public MqlTradeRequest TradeRequest { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
namespace MtApi5.Requests
|
||||||
|
{
|
||||||
|
internal class OrderSendResult
|
||||||
|
{
|
||||||
|
public bool RetVal { get; set; }
|
||||||
|
public MqlTradeResult TradeResult { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
namespace MtApi5.Requests
|
||||||
|
{
|
||||||
|
internal class PositionOpenRequest: RequestBase
|
||||||
|
{
|
||||||
|
public override RequestType RequestType => RequestType.PositionOpen;
|
||||||
|
|
||||||
|
public string Symbol { get; set; }
|
||||||
|
public ENUM_ORDER_TYPE OrderType { get; set; }
|
||||||
|
public double Volume { get; set; }
|
||||||
|
public double Price { get; set; }
|
||||||
|
public double Sl { get; set; }
|
||||||
|
public double Tp { get; set; }
|
||||||
|
public string Comment { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,19 @@
|
|||||||
namespace MtApi5.Requests
|
// ReSharper disable InconsistentNaming
|
||||||
|
|
||||||
|
namespace MtApi5.Requests
|
||||||
{
|
{
|
||||||
internal enum RequestType
|
internal enum RequestType
|
||||||
{
|
{
|
||||||
Unknown = 0,
|
Unknown = 0,
|
||||||
CopyTicks = 1
|
CopyTicks = 1,
|
||||||
|
iCustom = 2,
|
||||||
|
OrderSend = 3,
|
||||||
|
PositionOpen = 4,
|
||||||
|
OrderCheck = 5,
|
||||||
|
MarketBookGet = 6,
|
||||||
|
IndicatorCreate = 7,
|
||||||
|
SymbolInfoString = 8,
|
||||||
|
ChartTimePriceToXY = 9,
|
||||||
|
ChartXYToTimePrice = 10
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Executable → Regular
+4
-2
@@ -1,8 +1,10 @@
|
|||||||
namespace MtApi5.Responses
|
namespace MtApi5.Requests
|
||||||
{
|
{
|
||||||
internal class ResponseBase
|
internal class Response<T>
|
||||||
{
|
{
|
||||||
public int ErrorCode { get; set; }
|
public int ErrorCode { get; set; }
|
||||||
public string ErrorMessage { get; set; }
|
public string ErrorMessage { get; set; }
|
||||||
|
|
||||||
|
public T Value { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
namespace MtApi5.Requests
|
||||||
|
{
|
||||||
|
internal class SymbolInfoStringRequest : RequestBase
|
||||||
|
{
|
||||||
|
public override RequestType RequestType => RequestType.SymbolInfoString;
|
||||||
|
|
||||||
|
public string SymbolName { get; set; }
|
||||||
|
public ENUM_SYMBOL_INFO_STRING PropId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
namespace MtApi5.Requests
|
||||||
|
{
|
||||||
|
internal class SymbolInfoStringResult
|
||||||
|
{
|
||||||
|
public bool RetVal { get; set; }
|
||||||
|
public string StringVar { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace MtApi5.Responses
|
|
||||||
{
|
|
||||||
internal class CopyTicksResponse: ResponseBase
|
|
||||||
{
|
|
||||||
public List<MqlTick> Ticks { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
xmlns:mtapi5="clr-namespace:MtApi5;assembly=MtApi5"
|
xmlns:mtapi5="clr-namespace:MtApi5;assembly=MtApi5"
|
||||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||||
xmlns:mtApi5TestClient="clr-namespace:MtApi5TestClient"
|
xmlns:mtApi5TestClient="clr-namespace:MtApi5TestClient"
|
||||||
Title="MainWindow" Height="700" Width="650"
|
Title="MainWindow" Height="700" Width="900"
|
||||||
Closing="Window_Closing">
|
Closing="Window_Closing">
|
||||||
<Window.Resources>
|
<Window.Resources>
|
||||||
<DataTemplate x:Key="ConnectionTextBlockTemplate" DataType="{x:Type mtapi5:Mt5ConnectionState}">
|
<DataTemplate x:Key="ConnectionTextBlockTemplate" DataType="{x:Type mtapi5:Mt5ConnectionState}">
|
||||||
@@ -78,19 +78,48 @@
|
|||||||
</ObjectDataProvider.MethodParameters>
|
</ObjectDataProvider.MethodParameters>
|
||||||
</ObjectDataProvider>
|
</ObjectDataProvider>
|
||||||
|
|
||||||
|
<ObjectDataProvider x:Key="ENUM_TERMINAL_INFO_INTEGER_Key" MethodName="GetValues"
|
||||||
|
ObjectType="{x:Type sys:Enum}">
|
||||||
|
<ObjectDataProvider.MethodParameters>
|
||||||
|
<x:Type TypeName="mtapi5:ENUM_TERMINAL_INFO_INTEGER"/>
|
||||||
|
</ObjectDataProvider.MethodParameters>
|
||||||
|
</ObjectDataProvider>
|
||||||
|
|
||||||
|
<ObjectDataProvider x:Key="ENUM_TERMINAL_INFO_STRING_Key" MethodName="GetValues"
|
||||||
|
ObjectType="{x:Type sys:Enum}">
|
||||||
|
<ObjectDataProvider.MethodParameters>
|
||||||
|
<x:Type TypeName="mtapi5:ENUM_TERMINAL_INFO_STRING"/>
|
||||||
|
</ObjectDataProvider.MethodParameters>
|
||||||
|
</ObjectDataProvider>
|
||||||
|
|
||||||
|
<ObjectDataProvider x:Key="ENUM_TERMINAL_INFO_DOUBLE_Key" MethodName="GetValues"
|
||||||
|
ObjectType="{x:Type sys:Enum}">
|
||||||
|
<ObjectDataProvider.MethodParameters>
|
||||||
|
<x:Type TypeName="mtapi5:ENUM_TERMINAL_INFO_DOUBLE"/>
|
||||||
|
</ObjectDataProvider.MethodParameters>
|
||||||
|
</ObjectDataProvider>
|
||||||
|
|
||||||
|
|
||||||
<ObjectDataProvider x:Key="ENUM_TIMEFRAMES_Key" MethodName="GetValues"
|
<ObjectDataProvider x:Key="ENUM_TIMEFRAMES_Key" MethodName="GetValues"
|
||||||
ObjectType="{x:Type sys:Enum}">
|
ObjectType="{x:Type sys:Enum}">
|
||||||
<ObjectDataProvider.MethodParameters>
|
<ObjectDataProvider.MethodParameters>
|
||||||
<x:Type TypeName="mtapi5:ENUM_TIMEFRAMES"/>
|
<x:Type TypeName="mtapi5:ENUM_TIMEFRAMES"/>
|
||||||
</ObjectDataProvider.MethodParameters>
|
</ObjectDataProvider.MethodParameters>
|
||||||
</ObjectDataProvider>
|
</ObjectDataProvider>
|
||||||
|
|
||||||
|
<ObjectDataProvider x:Key="ENUM_INDICATOR_Key" MethodName="GetValues"
|
||||||
|
ObjectType="{x:Type sys:Enum}">
|
||||||
|
<ObjectDataProvider.MethodParameters>
|
||||||
|
<x:Type TypeName="mtapi5:ENUM_INDICATOR"/>
|
||||||
|
</ObjectDataProvider.MethodParameters>
|
||||||
|
</ObjectDataProvider>
|
||||||
</Window.Resources>
|
</Window.Resources>
|
||||||
|
|
||||||
<Grid x:Name="_MainLayout">
|
<Grid x:Name="_MainLayout">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="0.65*"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="*"/>
|
<RowDefinition Height="0.35*"/>
|
||||||
<RowDefinition Height="Auto"/>
|
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
@@ -100,308 +129,480 @@
|
|||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
<Expander ExpandDirection="Right" IsExpanded="True"
|
<Grid>
|
||||||
Grid.Row="0" Grid.Column="0" Margin="5">
|
<Grid.RowDefinitions>
|
||||||
<Expander.Header>
|
<RowDefinition Height="Auto"/>
|
||||||
<TextBlock Text="Connection" RenderTransformOrigin="0.5,0.5" Margin="0,0,0,0" Width="Auto">
|
<RowDefinition Height="Auto"/>
|
||||||
<TextBlock.LayoutTransform>
|
<RowDefinition Height="Auto"/>
|
||||||
<TransformGroup>
|
<RowDefinition Height="*"/>
|
||||||
<ScaleTransform ScaleX="1" ScaleY="1"/>
|
</Grid.RowDefinitions>
|
||||||
<SkewTransform AngleX="0" AngleY="0"/>
|
|
||||||
<RotateTransform Angle="-90"/>
|
<Border Grid.Row="0" Margin="2" Visibility="Visible" BorderThickness="1" BorderBrush="DarkBlue">
|
||||||
<TranslateTransform X="0" Y="0"/>
|
<StackPanel>
|
||||||
</TransformGroup>
|
<Grid>
|
||||||
</TextBlock.LayoutTransform>
|
<Grid.RowDefinitions>
|
||||||
<TextBlock.RenderTransform>
|
<RowDefinition Height="Auto"/>
|
||||||
<TransformGroup>
|
<RowDefinition Height="Auto"/>
|
||||||
<ScaleTransform ScaleX="1" ScaleY="1"/>
|
</Grid.RowDefinitions>
|
||||||
<SkewTransform AngleX="0" AngleY="0"/>
|
<Grid.ColumnDefinitions>
|
||||||
<RotateTransform Angle="0"/>
|
<ColumnDefinition Width="Auto"/>
|
||||||
<TranslateTransform X="0" Y="0"/>
|
<ColumnDefinition Width="*"/>
|
||||||
</TransformGroup>
|
</Grid.ColumnDefinitions>
|
||||||
</TextBlock.RenderTransform>
|
|
||||||
</TextBlock>
|
<TextBlock Grid.Row="0" Grid.Column="0" Text="Host" Margin="5,2,2,2" VerticalAlignment="Center"/>
|
||||||
</Expander.Header>
|
<TextBox Grid.Row="0" Grid.Column="1" Margin="2" Text="{Binding Host, UpdateSourceTrigger=PropertyChanged}"/>
|
||||||
<Expander.Content>
|
<TextBlock Grid.Row="1" Grid.Column="0" Text="Port" Margin="5,2,2,2" VerticalAlignment="Center"/>
|
||||||
<Grid Margin="10">
|
<TextBox Grid.Row="1" Grid.Column="1" Margin="2" Width="70" HorizontalAlignment="Left" Text="{Binding Port, UpdateSourceTrigger=PropertyChanged}"/>
|
||||||
|
</Grid>
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="30,5,0,10" >
|
||||||
|
<Button Content="Connect" Width="70" Command="{Binding ConnectCommand}" />
|
||||||
|
<Button Margin="10,0,0,0" Width="70" Content="Disconnect" Command="{Binding DisconnectCommand}" />
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border Grid.Row="3" Margin="2" Visibility="Visible" BorderThickness="1" BorderBrush="DarkBlue">
|
||||||
|
<Grid Margin="3">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="*"/>
|
||||||
<RowDefinition Height="Auto"/>
|
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
|
<Label Grid.Row="0" Content="Quotes" Background="LightYellow" />
|
||||||
<Grid.ColumnDefinitions>
|
<ListView Grid.Row="1" Margin="2"
|
||||||
<ColumnDefinition Width="Auto"/>
|
ItemsSource="{Binding Quotes}"
|
||||||
<ColumnDefinition Width="150"/>
|
SelectedItem="{Binding SelectedQuote}"
|
||||||
</Grid.ColumnDefinitions>
|
SelectionMode="Single">
|
||||||
|
<ListView.View>
|
||||||
<TextBlock Grid.Row="0" Grid.Column="0" Text="Host"/>
|
<GridView>
|
||||||
<TextBox Grid.Row="0" Grid.Column="1"
|
<GridViewColumn Width="100" Header="Instrument" DisplayMemberBinding="{Binding Instrument}" />
|
||||||
Margin="5,0,0,0"
|
<GridViewColumn Width="70" Header="Bid" DisplayMemberBinding="{Binding Bid}" />
|
||||||
Text="{Binding Host, UpdateSourceTrigger=PropertyChanged}"/>
|
<GridViewColumn Width="70" Header="Ask" DisplayMemberBinding="{Binding Ask}" />
|
||||||
|
<GridViewColumn Width="80" Header="ExpertHandle" DisplayMemberBinding="{Binding ExpertHandle}" />
|
||||||
<TextBlock Grid.Row="1" Grid.Column="0" Text="Port"/>
|
</GridView>
|
||||||
<TextBox Grid.Row="1" Grid.Column="1"
|
</ListView.View>
|
||||||
Margin="5,0,0,0"
|
</ListView>
|
||||||
Text="{Binding Port, UpdateSourceTrigger=PropertyChanged}"/>
|
|
||||||
|
|
||||||
<StackPanel Grid.Row="2" Grid.ColumnSpan="2" Margin="5" Orientation="Horizontal">
|
|
||||||
<Button Content="Connect" Width="70" Command="{Binding ConnectCommand}" />
|
|
||||||
<Button Margin="5,0,0,0" Width="70" Content="Disconnect" Command="{Binding DisconnectCommand}" />
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Expander.Content>
|
</Border>
|
||||||
</Expander>
|
</Grid>
|
||||||
|
|
||||||
<ListView Grid.Row="0" Grid.Column="1"
|
<TabControl Grid.Column="1" Margin="2">
|
||||||
ItemsSource="{Binding Quotes}"
|
<TabItem Header="Trade Functions">
|
||||||
SelectedItem="{Binding SelectedQuote}"
|
<ScrollViewer>
|
||||||
SelectionMode="Single">
|
<Grid>
|
||||||
<ListView.View>
|
<Grid.RowDefinitions>
|
||||||
<GridView>
|
<RowDefinition Height="Auto"/>
|
||||||
<GridViewColumn Width="140" Header="Instrument" DisplayMemberBinding="{Binding Instrument}" />
|
<RowDefinition Height="Auto"/>
|
||||||
<GridViewColumn Width="80" Header="Bid" DisplayMemberBinding="{Binding Bid}" />
|
</Grid.RowDefinitions>
|
||||||
<GridViewColumn Width="80" Header="Ask" DisplayMemberBinding="{Binding Ask}" />
|
|
||||||
<GridViewColumn Width="80" Header="Feeds Count" DisplayMemberBinding="{Binding FeedCount}" />
|
|
||||||
</GridView>
|
|
||||||
</ListView.View>
|
|
||||||
</ListView>
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<TabControl Grid.Row="1" >
|
<Expander Header="MqlTradeRequest" Margin="10" IsExpanded="True">
|
||||||
<TabItem Header="Trade Functions">
|
<Grid Margin="0,10,0,0">
|
||||||
<ScrollViewer>
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="Auto"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="Auto"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="0" Grid.Row="0" Text="Action"/>
|
||||||
|
<ComboBox Grid.Column="1" Grid.Row="0" ItemsSource="{Binding Source={StaticResource ENUM_TRADE_REQUEST_ACTIONS_Key}}"
|
||||||
|
SelectedItem="{Binding TradeRequest.Action}" Margin="5,0,0,0"/>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="2" Grid.Row="0" Text="Magic" Margin="10,0,0,0"/>
|
||||||
|
<TextBox Grid.Column="3" Grid.Row="0" Text="{Binding TradeRequest.Magic}" Margin="5,0,0,0"/>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="0" Grid.Row="1" Text="Order"/>
|
||||||
|
<TextBox Grid.Column="1" Grid.Row="1" Text="{Binding TradeRequest.Order}" Margin="5,0,0,0"/>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="2" Grid.Row="1" Text="Symbol" Margin="10,0,0,0"/>
|
||||||
|
<TextBox Grid.Column="3" Grid.Row="1" Text="{Binding TradeRequest.Symbol}" Margin="5,0,0,0"/>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="0" Grid.Row="2" Text="Volume"/>
|
||||||
|
<TextBox Grid.Column="1" Grid.Row="2" Text="{Binding TradeRequest.Volume}" Margin="5,0,0,0"/>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="2" Grid.Row="2" Text="Price" Margin="10,0,0,0"/>
|
||||||
|
<TextBox Grid.Column="3" Grid.Row="2" Text="{Binding TradeRequest.Price}" Margin="5,0,0,0"/>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="0" Grid.Row="3" Text="Stoplimit"/>
|
||||||
|
<TextBox Grid.Column="1" Grid.Row="3" Text="{Binding TradeRequest.Stoplimit}" Margin="5,0,0,0"/>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="2" Grid.Row="3" Text="Sl" Margin="10,0,0,0"/>
|
||||||
|
<TextBox Grid.Column="3" Grid.Row="3" Text="{Binding TradeRequest.Sl}" Margin="5,0,0,0"/>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="0" Grid.Row="4" Text="Tp"/>
|
||||||
|
<TextBox Grid.Column="1" Grid.Row="4" Text="{Binding TradeRequest.Tp}" Margin="5,0,0,0"/>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="2" Grid.Row="4" Text="Deviation" Margin="10,0,0,0"/>
|
||||||
|
<TextBox Grid.Column="3" Grid.Row="4" Text="{Binding TradeRequest.Deviation}" Margin="5,0,0,0"/>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="0" Grid.Row="5" Text="Type"/>
|
||||||
|
<ComboBox Grid.Column="1" Grid.Row="5" ItemsSource="{Binding Source={StaticResource ENUM_ORDER_TYPE_Key}}"
|
||||||
|
SelectedItem="{Binding TradeRequest.Type}" Margin="5,0,0,0"/>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="2" Grid.Row="5" Text="Type_filling" Margin="10,0,0,0"/>
|
||||||
|
<ComboBox Grid.Column="3" Grid.Row="5" ItemsSource="{Binding Source={StaticResource ENUM_ORDER_TYPE_FILLING_Key}}"
|
||||||
|
SelectedItem="{Binding TradeRequest.Type_filling}" Margin="5,0,0,0"/>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="0" Grid.Row="6" Text="Type_time"/>
|
||||||
|
<ComboBox Grid.Column="1" Grid.Row="6" ItemsSource="{Binding Source={StaticResource ENUM_ORDER_TYPE_TIME_Key}}"
|
||||||
|
SelectedItem="{Binding TradeRequest.Type_time}" Margin="5,0,0,0"/>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="2" Grid.Row="6" Text="Expiration" Margin="10,0,0,0"/>
|
||||||
|
<TextBox Grid.Column="3" Grid.Row="6" Text="{Binding TradeRequest.Expiration}" Margin="5,0,0,0"/>
|
||||||
|
|
||||||
|
<TextBlock Grid.Column="0" Grid.Row="7" Text="Comment"/>
|
||||||
|
<TextBox Grid.Column="1" Grid.Row="7" Grid.ColumnSpan="3" Text="{Binding TradeRequest.Comment}" Margin="5,0,0,0"/>
|
||||||
|
</Grid>
|
||||||
|
</Expander>
|
||||||
|
|
||||||
|
<StackPanel Grid.Row="1" Orientation="Vertical">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<Button Content="OrderSend" Command="{Binding OrderSendCommand}" Width="100" Height="25" HorizontalAlignment="Left" Margin="4"/>
|
||||||
|
<Button Content="OrderCheck" Command="{Binding OrderCheckCommand}" Width="100" Height="25" HorizontalAlignment="Left" Margin="4"/>
|
||||||
|
<Button Content="PositionGetTicket" Command="{Binding PositionGetTicketCommand}" Width="100" Height="25" HorizontalAlignment="Left" Margin="4"/>
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<WrapPanel>
|
||||||
|
<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"/>
|
||||||
|
</WrapPanel>
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
</ScrollViewer>
|
||||||
|
</TabItem>
|
||||||
|
<TabItem Header="Account Information">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
|
<Grid Grid.Row="0" Margin="10">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="0.4*"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
<Expander Header="MqlTradeRequest" Margin="10">
|
<ComboBox Grid.Column="0" Grid.Row="0"
|
||||||
<Grid Margin="0,10,0,0">
|
SelectedItem="{Binding AccountInfoDoublePropertyId}"
|
||||||
<Grid.ColumnDefinitions>
|
ItemsSource="{Binding Source={StaticResource ENUM_ACCOUNT_INFO_DOUBLE_Key}}"/>
|
||||||
<ColumnDefinition Width="Auto"/>
|
<Button Grid.Column="1" Grid.Row="0" Margin="10,0,0,0"
|
||||||
<ColumnDefinition Width="*"/>
|
Command="{Binding AccountInfoDoubleCommand}"
|
||||||
<ColumnDefinition Width="Auto"/>
|
Content="AccountInfoDouble" HorizontalAlignment="Left" />
|
||||||
<ColumnDefinition Width="*"/>
|
|
||||||
</Grid.ColumnDefinitions>
|
<ComboBox Grid.Column="0" Grid.Row="1"
|
||||||
|
SelectedItem="{Binding AccountInfoIntegerPropertyId}"
|
||||||
|
ItemsSource="{Binding Source={StaticResource ENUM_ACCOUNT_INFO_INTEGER_Key}}"/>
|
||||||
|
<Button Grid.Column="1" Grid.Row="1" Margin="10,0,0,0"
|
||||||
|
Command="{Binding AccountInfoIntegerCommand}"
|
||||||
|
Content="AccountInfoInteger" HorizontalAlignment="Left" />
|
||||||
|
|
||||||
|
<ComboBox Grid.Column="0" Grid.Row="2"
|
||||||
|
SelectedItem="{Binding AccountInfoStringPropertyId}"
|
||||||
|
ItemsSource="{Binding Source={StaticResource ENUM_ACCOUNT_INFO_STRING_Key}}"/>
|
||||||
|
<Button Grid.Column="1" Grid.Row="2" Margin="10,0,0,0"
|
||||||
|
Command="{Binding AccountInfoStringCommand}"
|
||||||
|
Content="AccountInfoString" HorizontalAlignment="Left" />
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</TabItem>
|
||||||
|
|
||||||
|
<TabItem Header="Terminal Information">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid Grid.Row="0" Margin="10">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="0.4*"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<ComboBox Grid.Column="0" Grid.Row="0"
|
||||||
|
SelectedItem="{Binding TerminalInfoDoublePropertyId}"
|
||||||
|
ItemsSource="{Binding Source={StaticResource ENUM_TERMINAL_INFO_DOUBLE_Key}}"/>
|
||||||
|
<Button Grid.Column="1" Grid.Row="0" Margin="10,0,0,0"
|
||||||
|
Command="{Binding TerminalInfoDoubleCommand}"
|
||||||
|
Content="TerminalInfoDouble" HorizontalAlignment="Left" />
|
||||||
|
|
||||||
|
<ComboBox Grid.Column="0" Grid.Row="1"
|
||||||
|
SelectedItem="{Binding TerminalInfoIntegerPropertyId}"
|
||||||
|
ItemsSource="{Binding Source={StaticResource ENUM_TERMINAL_INFO_INTEGER_Key}}"/>
|
||||||
|
<Button Grid.Column="1" Grid.Row="1" Margin="10,0,0,0"
|
||||||
|
Command="{Binding TerminalInfoIntegerCommand}"
|
||||||
|
Content="TerminalInfoInteger" HorizontalAlignment="Left" />
|
||||||
|
|
||||||
|
<ComboBox Grid.Column="0" Grid.Row="2"
|
||||||
|
SelectedItem="{Binding TerminalInfoStringPropertyId}"
|
||||||
|
ItemsSource="{Binding Source={StaticResource ENUM_TERMINAL_INFO_STRING_Key}}"/>
|
||||||
|
<Button Grid.Column="1" Grid.Row="2" Margin="10,0,0,0"
|
||||||
|
Command="{Binding TerminalInfoStringCommand}"
|
||||||
|
Content="TerminalInfoString" HorizontalAlignment="Left" />
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</TabItem>
|
||||||
|
<TabItem Header="Timeseries and Indicators Access">
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<Grid Grid.Column="1" Margin="2">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<Grid Grid.Row="0">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
</Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto"/>
|
<Grid.ColumnDefinitions>
|
||||||
<RowDefinition Height="Auto"/>
|
<ColumnDefinition Width="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<ColumnDefinition Width="*"/>
|
||||||
<RowDefinition Height="Auto"/>
|
</Grid.ColumnDefinitions>
|
||||||
<RowDefinition Height="Auto"/>
|
<TextBlock Grid.Row="0" Text="Symbol Name" Margin="1"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<TextBlock Grid.Row="1" Grid.Column="0" Text="TimeFrame" Margin="1" HorizontalAlignment="Right"/>
|
||||||
|
<TextBlock Grid.Row="2" Grid.Column="0" Text="StartPos" Margin="1" HorizontalAlignment="Right"/>
|
||||||
|
<TextBlock Grid.Row="3" Grid.Column="0" Text="Count" Margin="1" HorizontalAlignment="Right"/>
|
||||||
|
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding TimeSeriesValues.SymbolValue}" Margin="1"/>
|
||||||
|
<ComboBox Grid.Row="1" Grid.Column="1" Margin="1"
|
||||||
|
ItemsSource="{Binding Source={StaticResource ENUM_TIMEFRAMES_Key}}"
|
||||||
|
SelectedItem="{Binding TimeSeriesValues.TimeFrame}"/>
|
||||||
|
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding TimeSeriesValues.StartPos}" Margin="1"/>
|
||||||
|
<TextBox Grid.Row="3" Grid.Column="1" Text="{Binding TimeSeriesValues.Count}" Margin="1"/>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<WrapPanel Grid.Row="1" Grid.Column="0" Margin="5">
|
||||||
|
<Button Command="{Binding CopyRatesCommand}" Margin="1"
|
||||||
|
Content="CopyRates" HorizontalAlignment="Left" />
|
||||||
|
<Button Command="{Binding CopyTimesCommand}" Margin="1"
|
||||||
|
Content="CopyTimes" HorizontalAlignment="Left" />
|
||||||
|
<Button Command="{Binding CopyOpenCommand}" Margin="1"
|
||||||
|
Content="CopyOpen" HorizontalAlignment="Left" />
|
||||||
|
<Button Command="{Binding CopyHighCommand}" Margin="1"
|
||||||
|
Content="CopyHigh" HorizontalAlignment="Left" />
|
||||||
|
<Button Command="{Binding CopyLowCommand}" Margin="1"
|
||||||
|
Content="CopyLow" HorizontalAlignment="Left" />
|
||||||
|
<Button Command="{Binding CopyCloseCommand}" Margin="1"
|
||||||
|
Content="CopyClose" HorizontalAlignment="Left" />
|
||||||
|
<Button Command="{Binding CopyTickVolumeCommand}" Margin="1"
|
||||||
|
Content="CopyTickVolume" HorizontalAlignment="Left" />
|
||||||
|
<Button Command="{Binding CopyRealVolumeCommand}" Margin="1"
|
||||||
|
Content="CopyRealVolume" HorizontalAlignment="Left" />
|
||||||
|
<Button Command="{Binding CopySpreadCommand}" Margin="1"
|
||||||
|
Content="CopySpread" HorizontalAlignment="Left" />
|
||||||
|
<Button Command="{Binding CopyTicksCommand}" Margin="1"
|
||||||
|
Content="CopyTicks" HorizontalAlignment="Left" />
|
||||||
|
</WrapPanel>
|
||||||
|
|
||||||
|
<Grid Grid.Row="2">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
<TextBlock Grid.Column="0" Grid.Row="0" Text="Action"/>
|
<DockPanel Grid.Row="0" LastChildFill="True">
|
||||||
<ComboBox Grid.Column="1" Grid.Row="0" ItemsSource="{Binding Source={StaticResource ENUM_TRADE_REQUEST_ACTIONS_Key}}"
|
<Button DockPanel.Dock="Right" Command="{Binding IndicatorCreateCommand}" Margin="2"
|
||||||
SelectedItem="{Binding TradeRequest.Action}" Margin="5,0,0,0"/>
|
Content="IndicatorCreate" HorizontalAlignment="Left" />
|
||||||
|
<ComboBox Margin="2"
|
||||||
<TextBlock Grid.Column="2" Grid.Row="0" Text="Magic" Margin="10,0,0,0"/>
|
ItemsSource="{Binding Source={StaticResource ENUM_INDICATOR_Key}}"
|
||||||
<TextBox Grid.Column="3" Grid.Row="0" Text="{Binding TradeRequest.Magic}" Margin="5,0,0,0"/>
|
SelectedItem="{Binding TimeSeriesValues.IndicatorType}"/>
|
||||||
|
</DockPanel>
|
||||||
<TextBlock Grid.Column="0" Grid.Row="1" Text="Order"/>
|
<StackPanel Grid.Row="1" Orientation="Horizontal">
|
||||||
<TextBox Grid.Column="1" Grid.Row="1" Text="{Binding TradeRequest.Order}" Margin="5,0,0,0"/>
|
<Label Content="Indicator handle:" Margin="2"/>
|
||||||
|
<TextBox Margin="2" Width="60" PreviewTextInput="NumberValidationTextBox" Text="{Binding TimeSeriesValues.IndicatorHandle}"/>
|
||||||
<TextBlock Grid.Column="2" Grid.Row="1" Text="Symbol" Margin="10,0,0,0"/>
|
<Button Command="{Binding IndicatorReleaseCommand}" Margin="2"
|
||||||
<TextBox Grid.Column="3" Grid.Row="1" Text="{Binding TradeRequest.Symbol}" Margin="5,0,0,0"/>
|
Content="IndicatorRelease" HorizontalAlignment="Left" />
|
||||||
|
</StackPanel>
|
||||||
<TextBlock Grid.Column="0" Grid.Row="2" Text="Volume"/>
|
|
||||||
<TextBox Grid.Column="1" Grid.Row="2" Text="{Binding TradeRequest.Volume}" Margin="5,0,0,0"/>
|
|
||||||
|
|
||||||
<TextBlock Grid.Column="2" Grid.Row="2" Text="Price" Margin="10,0,0,0"/>
|
|
||||||
<TextBox Grid.Column="3" Grid.Row="2" Text="{Binding TradeRequest.Price}" Margin="5,0,0,0"/>
|
|
||||||
|
|
||||||
<TextBlock Grid.Column="0" Grid.Row="3" Text="Stoplimit"/>
|
|
||||||
<TextBox Grid.Column="1" Grid.Row="3" Text="{Binding TradeRequest.Stoplimit}" Margin="5,0,0,0"/>
|
|
||||||
|
|
||||||
<TextBlock Grid.Column="2" Grid.Row="3" Text="Sl" Margin="10,0,0,0"/>
|
|
||||||
<TextBox Grid.Column="3" Grid.Row="3" Text="{Binding TradeRequest.Sl}" Margin="5,0,0,0"/>
|
|
||||||
|
|
||||||
<TextBlock Grid.Column="0" Grid.Row="4" Text="Tp"/>
|
|
||||||
<TextBox Grid.Column="1" Grid.Row="4" Text="{Binding TradeRequest.Tp}" Margin="5,0,0,0"/>
|
|
||||||
|
|
||||||
<TextBlock Grid.Column="2" Grid.Row="4" Text="Deviation" Margin="10,0,0,0"/>
|
|
||||||
<TextBox Grid.Column="3" Grid.Row="4" Text="{Binding TradeRequest.Deviation}" Margin="5,0,0,0"/>
|
|
||||||
|
|
||||||
<TextBlock Grid.Column="0" Grid.Row="5" Text="Type"/>
|
|
||||||
<ComboBox Grid.Column="1" Grid.Row="5" ItemsSource="{Binding Source={StaticResource ENUM_ORDER_TYPE_Key}}"
|
|
||||||
SelectedItem="{Binding TradeRequest.Type}" Margin="5,0,0,0"/>
|
|
||||||
|
|
||||||
<TextBlock Grid.Column="2" Grid.Row="5" Text="Type_filling" Margin="10,0,0,0"/>
|
|
||||||
<ComboBox Grid.Column="3" Grid.Row="5" ItemsSource="{Binding Source={StaticResource ENUM_ORDER_TYPE_FILLING_Key}}"
|
|
||||||
SelectedItem="{Binding TradeRequest.Type_filling}" Margin="5,0,0,0"/>
|
|
||||||
|
|
||||||
<TextBlock Grid.Column="0" Grid.Row="6" Text="Type_time"/>
|
|
||||||
<ComboBox Grid.Column="1" Grid.Row="6" ItemsSource="{Binding Source={StaticResource ENUM_ORDER_TYPE_TIME_Key}}"
|
|
||||||
SelectedItem="{Binding TradeRequest.Type_time}" Margin="5,0,0,0"/>
|
|
||||||
|
|
||||||
<TextBlock Grid.Column="2" Grid.Row="6" Text="Expiration" Margin="10,0,0,0"/>
|
|
||||||
<TextBox Grid.Column="3" Grid.Row="6" Text="{Binding TradeRequest}" Margin="5,0,0,0"/>
|
|
||||||
|
|
||||||
<TextBlock Grid.Column="0" Grid.Row="7" Text="Comment"/>
|
|
||||||
<TextBox Grid.Column="1" Grid.Row="7" Grid.ColumnSpan="3" Text="{Binding TradeRequest}" Margin="5,0,0,0"/>
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Expander>
|
</Grid>
|
||||||
|
|
||||||
<StackPanel Grid.Row="1" Orientation="Horizontal">
|
<ListBox Grid.Column="0" ItemsSource="{Binding TimeSeriesResults}" />
|
||||||
<Button Content="OrderSend" Command="{Binding OrderSendCommand}" Width="100" Height="25"/>
|
|
||||||
|
</Grid>
|
||||||
|
</TabItem>
|
||||||
|
|
||||||
|
<TabItem Header="Market Info">
|
||||||
|
<WrapPanel VerticalAlignment="Top" Margin="5">
|
||||||
|
<Button Command="{Binding SymbolsTotalCommand}" Content="SymbolsTotal" Margin="2"/>
|
||||||
|
<Button Command="{Binding SymbolNameCommand}" Content="SymbolName" Margin="2"/>
|
||||||
|
<Button Command="{Binding SymbolSelectCommand}" Content="SymbolSelect" Margin="2"/>
|
||||||
|
<Button Command="{Binding SymbolIsSynchronizedCommand}" Content="SymbolIsSynchronized" Margin="2"/>
|
||||||
|
<Button Command="{Binding SymbolInfoDoubleCommand}" Content="SymbolInfoDouble" Margin="2"/>
|
||||||
|
<Button Command="{Binding SymbolInfoIntegerCommand}" Content="SymbolInfoInteger" Margin="2"/>
|
||||||
|
<Button Command="{Binding SymbolInfoStringCommand}" Content="SymbolInfoString" Margin="2"/>
|
||||||
|
<Button Command="{Binding SymbolInfoString2Command}" Content="SymbolInfoString-2" Margin="2"/>
|
||||||
|
<Button Command="{Binding SymbolInfoTickCommand}" Content="SymbolInfoTick" Margin="2"/>
|
||||||
|
<Button Command="{Binding SymbolInfoSessionQuoteCommand}" Content="SymbolInfoSessionQuote" Margin="2"/>
|
||||||
|
<Button Command="{Binding SymbolInfoSessionTradeCommand}" Content="SymbolInfoSessionTrade" Margin="2"/>
|
||||||
|
<Button Command="{Binding MarketBookAddCommand}" Content="MarketBookAdd" Margin="2"/>
|
||||||
|
<Button Command="{Binding MarketBookReleaseCommand}" Content="MarketBookRelease" Margin="2"/>
|
||||||
|
<Button Command="{Binding MarketBookGetCommand}" Content="MarketBookGet" Margin="2"/>
|
||||||
|
</WrapPanel>
|
||||||
|
</TabItem>
|
||||||
|
|
||||||
|
<TabItem Header="CTrade">
|
||||||
|
<WrapPanel VerticalAlignment="Top" Margin="5">
|
||||||
|
<Button Command="{Binding PositionOpenCommand}" Content="PositionOpen" Margin="2"/>
|
||||||
|
</WrapPanel>
|
||||||
|
</TabItem>
|
||||||
|
|
||||||
|
<TabItem Header="Indicators">
|
||||||
|
<WrapPanel VerticalAlignment="Top" Margin="5">
|
||||||
|
<Button Command="{Binding iCustomCommand}" Content="iCustom" Margin="2"/>
|
||||||
|
</WrapPanel>
|
||||||
|
</TabItem>
|
||||||
|
<TabItem Header="Chart Functions">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<StackPanel Grid.Row="0" Orientation="Horizontal" Margin="5">
|
||||||
|
<TextBlock Text="Symbol" VerticalAlignment="Center" Margin="2"/>
|
||||||
|
<TextBox Width="100" Text="{Binding ChartFunctionsSymbolValue}" Margin="2"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
</Grid>
|
<WrapPanel Grid.Row="1" Orientation="Horizontal" Margin="5">
|
||||||
</ScrollViewer>
|
<Button Command="{Binding ChartOpenCommand}" Content="ChartOpen" Margin="2"/>
|
||||||
</TabItem>
|
<Button Command="{Binding ChartTimePriceToXYCommand}" Content="ChartTimePriceToXY" Margin="2"/>
|
||||||
<TabItem Header="Account Information">
|
<Button Command="{Binding ChartXYToTimePriceCommand}" Content="ChartXYToTimePrice" Margin="2"/>
|
||||||
<Grid>
|
</WrapPanel>
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="Auto"/>
|
|
||||||
<RowDefinition Height="Auto"/>
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid Grid.Row="0" Margin="10">
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="0.4*"/>
|
|
||||||
<ColumnDefinition Width="*"/>
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="Auto"/>
|
|
||||||
<RowDefinition Height="Auto"/>
|
|
||||||
<RowDefinition Height="Auto"/>
|
|
||||||
<RowDefinition Height="Auto"/>
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
|
|
||||||
<ComboBox Grid.Column="0" Grid.Row="0"
|
<WrapPanel Grid.Row="3" VerticalAlignment="Top" Margin="5">
|
||||||
SelectedItem="{Binding AccountInfoDoublePropertyId}"
|
<Button Command="{Binding ChartApplyTemplateCommand}" Content="ChartApplyTemplate" Margin="2"/>
|
||||||
ItemsSource="{Binding Source={StaticResource ENUM_ACCOUNT_INFO_DOUBLE_Key}}"/>
|
<Button Command="{Binding ChartSaveTemplateCommand}" Content="ChartSaveTemplate" Margin="2"/>
|
||||||
<Button Grid.Column="1" Grid.Row="0" Margin="10,0,0,0"
|
</WrapPanel>
|
||||||
Command="{Binding AccountInfoDoubleCommand}"
|
|
||||||
Content="AccountInfoDouble" HorizontalAlignment="Left" />
|
|
||||||
|
|
||||||
<ComboBox Grid.Column="0" Grid.Row="1"
|
<StackPanel Grid.Row="4" Orientation="Horizontal" Margin="5">
|
||||||
SelectedItem="{Binding AccountInfoIntegerPropertyId}"
|
<Button Command="{Binding ChartIdCommand}" Content="ChartId" Margin="2"/>
|
||||||
ItemsSource="{Binding Source={StaticResource ENUM_ACCOUNT_INFO_INTEGER_Key}}"/>
|
<TextBlock Text="ChartID" VerticalAlignment="Center" Margin="20,2,2,2"/>
|
||||||
<Button Grid.Column="1" Grid.Row="1" Margin="10,0,0,0"
|
<TextBox Width="150" Text="{Binding ChartFunctionsChartIdValue}" Margin="2"/>
|
||||||
Command="{Binding AccountInfoIntegerCommand}"
|
</StackPanel>
|
||||||
Content="AccountInfoInteger" HorizontalAlignment="Left" />
|
|
||||||
|
|
||||||
<ComboBox Grid.Column="0" Grid.Row="2"
|
|
||||||
SelectedItem="{Binding AccountInfoStringPropertyId}"
|
|
||||||
ItemsSource="{Binding Source={StaticResource ENUM_ACCOUNT_INFO_STRING_Key}}"/>
|
|
||||||
<Button Grid.Column="1" Grid.Row="2" Margin="10,0,0,0"
|
|
||||||
Command="{Binding AccountInfoStringCommand}"
|
|
||||||
Content="AccountInfoString" HorizontalAlignment="Left" />
|
|
||||||
</Grid>
|
|
||||||
<Grid Margin="10" Grid.Row="1">
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*"/>
|
|
||||||
<ColumnDefinition Width="Auto"/>
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
|
|
||||||
<TextBox Grid.Column="0" Text="{Binding MessageText}" Margin="5"/>
|
|
||||||
<Button Grid.Column="1" Content="Print" Command="{Binding PrintCommand}" Margin="5"/>
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</TabItem>
|
|
||||||
|
|
||||||
<TabItem Header="Timeseries and Indicators Access">
|
|
||||||
<Grid>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*"/>
|
|
||||||
<ColumnDefinition Width="*"/>
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
|
|
||||||
<Grid Grid.Column="1">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="Auto"/>
|
|
||||||
<RowDefinition Height="Auto"/>
|
|
||||||
<RowDefinition Height="Auto"/>
|
|
||||||
<RowDefinition Height="Auto"/>
|
|
||||||
<RowDefinition Height="Auto"/>
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="Auto"/>
|
|
||||||
<ColumnDefinition Width="*"/>
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
|
|
||||||
<TextBox Grid.Row="0" Text="symbolName"/>
|
|
||||||
<TextBox Grid.Row="1" Grid.Column="0" Text="timeframe"/>
|
|
||||||
<TextBox Grid.Row="2" Grid.Column="0" Text="startPos"/>
|
|
||||||
<TextBox Grid.Row="3" Grid.Column="0" Text="count"/>
|
|
||||||
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding TimeSeriesValues.SymbolValue}"/>
|
|
||||||
<ComboBox Grid.Row="1" Grid.Column="1"
|
|
||||||
ItemsSource="{Binding Source={StaticResource ENUM_TIMEFRAMES_Key}}"
|
|
||||||
SelectedItem="{Binding TimeSeriesValues.TimeFrame}"/>
|
|
||||||
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding TimeSeriesValues.StartPos}"/>
|
|
||||||
<TextBox Grid.Row="3" Grid.Column="1" Text="{Binding TimeSeriesValues.Count}"/>
|
|
||||||
|
|
||||||
<WrapPanel Grid.Row="4" Grid.ColumnSpan="2" Grid.Column="0" Margin="10">
|
|
||||||
<Button Command="{Binding CopyRatesCommand}" Margin="1"
|
|
||||||
Content="CopyRates" HorizontalAlignment="Left" />
|
|
||||||
<Button Command="{Binding CopyTimesCommand}" Margin="1"
|
|
||||||
Content="CopyTimes" HorizontalAlignment="Left" />
|
|
||||||
<Button Command="{Binding CopyOpenCommand}" Margin="1"
|
|
||||||
Content="CopyOpen" HorizontalAlignment="Left" />
|
|
||||||
<Button Command="{Binding CopyHighCommand}" Margin="1"
|
|
||||||
Content="CopyHigh" HorizontalAlignment="Left" />
|
|
||||||
<Button Command="{Binding CopyLowCommand}" Margin="1"
|
|
||||||
Content="CopyLow" HorizontalAlignment="Left" />
|
|
||||||
<Button Command="{Binding CopyCloseCommand}" Margin="1"
|
|
||||||
Content="CopyClose" HorizontalAlignment="Left" />
|
|
||||||
<Button Command="{Binding CopyTickVolumeCommand}" Margin="1"
|
|
||||||
Content="CopyTickVolume" HorizontalAlignment="Left" />
|
|
||||||
<Button Command="{Binding CopyRealVolumeCommand}" Margin="1"
|
|
||||||
Content="CopyRealVolume" HorizontalAlignment="Left" />
|
|
||||||
<Button Command="{Binding CopySpreadCommand}" Margin="1"
|
|
||||||
Content="CopySpread" HorizontalAlignment="Left" />
|
|
||||||
<Button Command="{Binding CopyTicksCommand}" Margin="1"
|
|
||||||
Content="CopyTicks" HorizontalAlignment="Left" />
|
|
||||||
|
|
||||||
|
<WrapPanel Grid.Row="5" VerticalAlignment="Top" Margin="5">
|
||||||
|
<Button Command="{Binding ChartRedrawCommand}" Content="ChartRedraw" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartWindowFindCommand}" Content="ChartWindowFind" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartCloseCommand}" Content="ChartClose" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartPeriodCommand}" Content="ChartPeriod" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartSetDoubleCommand}" Content="ChartSetDouble" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartSetIntegerCommand}" Content="ChartSetInteger" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartSetStringCommand}" Content="ChartSetString" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartGetDoubleCommand}" Content="ChartGetDouble" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartGetIntegerCommand}" Content="ChartGetInteger" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartNavigateCommand}" Content="ChartNavigate" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartIndicatorAddCommand}" Content="ChartIndicatorAdd" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartIndicatorDeleteCommand}" Content="ChartIndicatorDelete" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartIndicatorGetCommand}" Content="ChartIndicatorGet" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartIndicatorNameCommand}" Content="ChartIndicatorName" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartIndicatorsTotalCommand}" Content="ChartIndicatorsTotal" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartWindowOnDroppedCommand}" Content="ChartWindowOnDropped" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartPriceOnDroppedCommand}" Content="ChartPriceOnDropped" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartTimeOnDroppedCommand}" Content="ChartTimeOnDropped" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartXOnDroppedCommand}" Content="ChartXOnDropped" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartYOnDroppedCommand}" Content="ChartYOnDropped" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartSetSymbolPeriodCommand}" Content="ChartSetSymbolPeriod" Margin="2"/>
|
||||||
|
<Button Command="{Binding ChartScreenShotCommand}" Content="ChartScreenShot" Margin="2"/>
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
</TabItem>
|
||||||
|
<TabItem Header="Time and Date">
|
||||||
|
<WrapPanel VerticalAlignment="Top" Margin="5">
|
||||||
|
<Button Command="{Binding TimeCurrentCommand}" Content="TimeCurrent" Margin="2"/>
|
||||||
|
<Button Command="{Binding TimeTradeServerCommand}" Content="TimeTradeServer" Margin="2"/>
|
||||||
|
<Button Command="{Binding TimeLocalCommand}" Content="TimeLocal" Margin="2"/>
|
||||||
|
<Button Command="{Binding TimeGMTCommand}" Content="TimeGMT" Margin="2"/>
|
||||||
|
</WrapPanel>
|
||||||
|
</TabItem>
|
||||||
|
|
||||||
<ListBox ItemsSource="{Binding TimeSeriesResults}" />
|
<TabItem Header="Checkup and Common Functions">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
</Grid>
|
<WrapPanel VerticalAlignment="Top" Margin="5">
|
||||||
</TabItem>
|
<Button Command="{Binding GetLastErrorCommand}" Content="GetLastError" Margin="2"/>
|
||||||
|
<Button Command="{Binding ResetLastErrorCommand}" Content="ResetLastError" Margin="2"/>
|
||||||
<TabItem Header="Market Info">
|
</WrapPanel>
|
||||||
<WrapPanel VerticalAlignment="Top" Margin="5">
|
|
||||||
<Button Command="{Binding SymbolsTotalCommand}" Content="SymbolsTotal" Margin="2"/>
|
|
||||||
<Button Command="{Binding SymbolNameCommand}" Content="SymbolName" Margin="2"/>
|
|
||||||
<Button Command="{Binding SymbolSelectCommand}" Content="SymbolSelect" Margin="2"/>
|
|
||||||
<Button Command="{Binding SymbolIsSynchronizedCommand}" Content="SymbolIsSynchronized" Margin="2"/>
|
|
||||||
<Button Command="{Binding SymbolInfoDoubleCommand}" Content="SymbolInfoDouble" Margin="2"/>
|
|
||||||
<Button Command="{Binding SymbolInfoIntegerCommand}" Content="SymbolInfoInteger" Margin="2"/>
|
|
||||||
<Button Command="{Binding SymbolInfoStringCommand}" Content="SymbolInfoString" Margin="2"/>
|
|
||||||
<Button Command="{Binding SymbolInfoTickCommand}" Content="SymbolInfoTick" Margin="2"/>
|
|
||||||
<Button Command="{Binding SymbolInfoSessionQuoteCommand}" Content="SymbolInfoSessionQuote" Margin="2"/>
|
|
||||||
<Button Command="{Binding SymbolInfoSessionTradeCommand}" Content="SymbolInfoSessionTrade" Margin="2"/>
|
|
||||||
<Button Command="{Binding MarketBookAddCommand}" Content="MarketBookAdd" Margin="2"/>
|
|
||||||
<Button Command="{Binding MarketBookReleaseCommand}" Content="MarketBookRelease" Margin="2"/>
|
|
||||||
<Button Command="{Binding MarketBookGetCommand}" Content="MarketBookGet" Margin="2"/>
|
|
||||||
</WrapPanel>
|
|
||||||
</TabItem>
|
|
||||||
|
|
||||||
<TabItem Header="CTrade">
|
<Grid Margin="10" Grid.Row="1">
|
||||||
<WrapPanel VerticalAlignment="Top" Margin="5">
|
<Grid.RowDefinitions>
|
||||||
<Button Command="{Binding PositionOpenCommand}" Content="PositionOpen" Margin="2"/>
|
<RowDefinition Height="Auto"/>
|
||||||
</WrapPanel>
|
<RowDefinition Height="Auto"/>
|
||||||
</TabItem>
|
</Grid.RowDefinitions>
|
||||||
</TabControl>
|
<TextBox Grid.Row="0" Text="{Binding MessageText}" Margin="2"/>
|
||||||
|
<StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||||
|
<Button Command="{Binding PrintCommand}" Content="Print" Margin="2" />
|
||||||
|
<Button Command="{Binding AlertCommand}" Content="Alert" Margin="2" />
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
<Expander Grid.Row="2" Header="History" IsExpanded="True">
|
</Grid>
|
||||||
<ListBox mtApi5TestClient:ListBoxBehavior.ScrollOnNewItem="true" Height="200" ItemsSource="{Binding History}"/>
|
</Grid>
|
||||||
</Expander>
|
</TabItem>
|
||||||
|
</TabControl>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<GridSplitter Grid.Row="1" Height="2" HorizontalAlignment="Stretch" />
|
||||||
|
|
||||||
|
<Border Grid.Row="2" BorderThickness="1" BorderBrush="DarkBlue" Margin="2">
|
||||||
|
<Grid Margin="3">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Label Grid.Row="0" Content="Output Console" Background="LightYellow" />
|
||||||
|
<ListBox Grid.Row="1" ItemsSource="{Binding History}"
|
||||||
|
mtApi5TestClient:ListBoxBehavior.ScrollOnNewItem="true" />
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
|
||||||
<StatusBar Grid.Row="3">
|
<StatusBar Grid.Row="3">
|
||||||
<StatusBarItem>
|
<StatusBarItem>
|
||||||
|
|||||||
@@ -1,37 +1,32 @@
|
|||||||
using System;
|
using System.Text.RegularExpressions;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Windows;
|
|
||||||
using System.Windows.Controls;
|
|
||||||
using System.Windows.Data;
|
|
||||||
using System.Windows.Documents;
|
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using System.Windows.Media;
|
|
||||||
using System.Windows.Media.Imaging;
|
|
||||||
using System.Windows.Navigation;
|
|
||||||
using System.Windows.Shapes;
|
|
||||||
|
|
||||||
namespace MtApi5TestClient
|
namespace MtApi5TestClient
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interaction logic for MainWindow.xaml
|
/// Interaction logic for MainWindow.xaml
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class MainWindow : Window
|
public partial class MainWindow
|
||||||
{
|
{
|
||||||
ViewModel _vm { get; set; }
|
private ViewModel Vm { get; }
|
||||||
|
|
||||||
public MainWindow()
|
public MainWindow()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
_vm = new ViewModel();
|
Vm = new ViewModel();
|
||||||
_MainLayout.DataContext = _vm;
|
_MainLayout.DataContext = Vm;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
|
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
|
||||||
{
|
{
|
||||||
_vm.Close();
|
Vm.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
|
||||||
|
{
|
||||||
|
var regex = new Regex("[^0-9]+");
|
||||||
|
e.Handled = regex.IsMatch(e.Text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
using System;
|
using System.ComponentModel;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.ComponentModel;
|
|
||||||
|
|
||||||
namespace MtApi5TestClient
|
namespace MtApi5TestClient
|
||||||
{
|
{
|
||||||
@@ -10,38 +6,38 @@ namespace MtApi5TestClient
|
|||||||
{
|
{
|
||||||
#region Properties
|
#region Properties
|
||||||
|
|
||||||
public string Instrument { get; private set; }
|
public string Instrument { get; }
|
||||||
|
|
||||||
private double _Bid;
|
private double _bid;
|
||||||
public double Bid
|
public double Bid
|
||||||
{
|
{
|
||||||
get { return _Bid; }
|
get { return _bid; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_Bid = value;
|
_bid = value;
|
||||||
OnPropertyChanged("Bid");
|
OnPropertyChanged("Bid");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private double _Ask;
|
private double _ask;
|
||||||
public double Ask
|
public double Ask
|
||||||
{
|
{
|
||||||
get { return _Ask; }
|
get { return _ask; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_Ask = value;
|
_ask = value;
|
||||||
OnPropertyChanged("Ask");
|
OnPropertyChanged("Ask");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int _FeedCount = 0;
|
private int _expertHandle;
|
||||||
public int FeedCount
|
public int ExpertHandle
|
||||||
{
|
{
|
||||||
get { return _FeedCount; }
|
get { return _expertHandle; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_FeedCount = value;
|
_expertHandle = value;
|
||||||
OnPropertyChanged("FeedCount");
|
OnPropertyChanged("ExpertHandle");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,8 +55,7 @@ namespace MtApi5TestClient
|
|||||||
|
|
||||||
protected virtual void OnPropertyChanged(string propertyName)
|
protected virtual void OnPropertyChanged(string propertyName)
|
||||||
{
|
{
|
||||||
PropertyChangedEventHandler handler = PropertyChanged;
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||||
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,17 @@
|
|||||||
using System;
|
using MtApi5;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using MtApi5;
|
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace MtApi5TestClient
|
namespace MtApi5TestClient
|
||||||
{
|
{
|
||||||
public class TimeSeriesValueViewModel : INotifyPropertyChanged
|
public class TimeSeriesValueViewModel : INotifyPropertyChanged
|
||||||
{
|
{
|
||||||
private string _SymbolValue;
|
private string _symbolValue;
|
||||||
public string SymbolValue
|
public string SymbolValue
|
||||||
{
|
{
|
||||||
get { return _SymbolValue; }
|
get { return _symbolValue; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_SymbolValue = value;
|
_symbolValue = value;
|
||||||
OnPropertyChanged("SymbolValue");
|
OnPropertyChanged("SymbolValue");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -24,13 +20,36 @@ namespace MtApi5TestClient
|
|||||||
public int StartPos { get; set; }
|
public int StartPos { get; set; }
|
||||||
public int Count { get; set; }
|
public int Count { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
private int _indicatorHandle;
|
||||||
|
public int IndicatorHandle
|
||||||
|
{
|
||||||
|
get { return _indicatorHandle; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_indicatorHandle = value;
|
||||||
|
OnPropertyChanged("IndicatorHandle");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ENUM_INDICATOR _indicatorType = ENUM_INDICATOR.IND_MACD;
|
||||||
|
public ENUM_INDICATOR IndicatorType
|
||||||
|
{
|
||||||
|
get { return _indicatorType; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_indicatorType = value;
|
||||||
|
OnPropertyChanged("IndicatorType");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#region INotifyPropertyChanged
|
#region INotifyPropertyChanged
|
||||||
public event PropertyChangedEventHandler PropertyChanged;
|
public event PropertyChangedEventHandler PropertyChanged;
|
||||||
|
|
||||||
protected virtual void OnPropertyChanged(string propertyName)
|
protected virtual void OnPropertyChanged(string propertyName)
|
||||||
{
|
{
|
||||||
PropertyChangedEventHandler handler = PropertyChanged;
|
var handler = PropertyChanged;
|
||||||
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
|
handler?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
+116
-65
@@ -113,6 +113,13 @@
|
|||||||
this.label22 = new System.Windows.Forms.Label();
|
this.label22 = new System.Windows.Forms.Label();
|
||||||
this.textBoxErrorCode = new System.Windows.Forms.TextBox();
|
this.textBoxErrorCode = new System.Windows.Forms.TextBox();
|
||||||
this.tabPage3 = new System.Windows.Forms.TabPage();
|
this.tabPage3 = new System.Windows.Forms.TabPage();
|
||||||
|
this.button70 = new System.Windows.Forms.Button();
|
||||||
|
this.label33 = new System.Windows.Forms.Label();
|
||||||
|
this.label32 = new System.Windows.Forms.Label();
|
||||||
|
this.label31 = new System.Windows.Forms.Label();
|
||||||
|
this.textBoxAccountHost = new System.Windows.Forms.TextBox();
|
||||||
|
this.textBoxAccountPassword = new System.Windows.Forms.TextBox();
|
||||||
|
this.textBoxAccountLogin = new System.Windows.Forms.TextBox();
|
||||||
this.button67 = new System.Windows.Forms.Button();
|
this.button67 = new System.Windows.Forms.Button();
|
||||||
this.button66 = new System.Windows.Forms.Button();
|
this.button66 = new System.Windows.Forms.Button();
|
||||||
this.button65 = new System.Windows.Forms.Button();
|
this.button65 = new System.Windows.Forms.Button();
|
||||||
@@ -136,6 +143,8 @@
|
|||||||
this.label23 = new System.Windows.Forms.Label();
|
this.label23 = new System.Windows.Forms.Label();
|
||||||
this.textBoxAccountInfoSymbol = new System.Windows.Forms.TextBox();
|
this.textBoxAccountInfoSymbol = new System.Windows.Forms.TextBox();
|
||||||
this.tabPage4 = new System.Windows.Forms.TabPage();
|
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.button36 = new System.Windows.Forms.Button();
|
||||||
this.comboBox10 = new System.Windows.Forms.ComboBox();
|
this.comboBox10 = new System.Windows.Forms.ComboBox();
|
||||||
this.comboBox9 = new System.Windows.Forms.ComboBox();
|
this.comboBox9 = new System.Windows.Forms.ComboBox();
|
||||||
@@ -182,6 +191,7 @@
|
|||||||
this.button14 = new System.Windows.Forms.Button();
|
this.button14 = new System.Windows.Forms.Button();
|
||||||
this.button13 = new System.Windows.Forms.Button();
|
this.button13 = new System.Windows.Forms.Button();
|
||||||
this.tabPage7 = new System.Windows.Forms.TabPage();
|
this.tabPage7 = new System.Windows.Forms.TabPage();
|
||||||
|
this.button71 = new System.Windows.Forms.Button();
|
||||||
this.button23 = new System.Windows.Forms.Button();
|
this.button23 = new System.Windows.Forms.Button();
|
||||||
this.iCustomBtn = new System.Windows.Forms.Button();
|
this.iCustomBtn = new System.Windows.Forms.Button();
|
||||||
this.tabPage8 = new System.Windows.Forms.TabPage();
|
this.tabPage8 = new System.Windows.Forms.TabPage();
|
||||||
@@ -202,13 +212,7 @@
|
|||||||
this.button4 = new System.Windows.Forms.Button();
|
this.button4 = new System.Windows.Forms.Button();
|
||||||
this.tabPage11 = new System.Windows.Forms.TabPage();
|
this.tabPage11 = new System.Windows.Forms.TabPage();
|
||||||
this.button69 = new System.Windows.Forms.Button();
|
this.button69 = new System.Windows.Forms.Button();
|
||||||
this.textBoxAccountLogin = new System.Windows.Forms.TextBox();
|
this.button73 = new System.Windows.Forms.Button();
|
||||||
this.textBoxAccountPassword = new System.Windows.Forms.TextBox();
|
|
||||||
this.label31 = new System.Windows.Forms.Label();
|
|
||||||
this.label32 = new System.Windows.Forms.Label();
|
|
||||||
this.textBoxAccountHost = new System.Windows.Forms.TextBox();
|
|
||||||
this.label33 = new System.Windows.Forms.Label();
|
|
||||||
this.button70 = new System.Windows.Forms.Button();
|
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
this.statusStrip1.SuspendLayout();
|
this.statusStrip1.SuspendLayout();
|
||||||
this.groupBox2.SuspendLayout();
|
this.groupBox2.SuspendLayout();
|
||||||
@@ -1154,6 +1158,64 @@
|
|||||||
this.tabPage3.Text = "Account Information";
|
this.tabPage3.Text = "Account Information";
|
||||||
this.tabPage3.UseVisualStyleBackColor = true;
|
this.tabPage3.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
|
// button70
|
||||||
|
//
|
||||||
|
this.button70.Location = new System.Drawing.Point(371, 292);
|
||||||
|
this.button70.Name = "button70";
|
||||||
|
this.button70.Size = new System.Drawing.Size(97, 23);
|
||||||
|
this.button70.TabIndex = 18;
|
||||||
|
this.button70.Text = "ChangeAccount";
|
||||||
|
this.button70.UseVisualStyleBackColor = true;
|
||||||
|
this.button70.Click += new System.EventHandler(this.button70_Click);
|
||||||
|
//
|
||||||
|
// label33
|
||||||
|
//
|
||||||
|
this.label33.AutoSize = true;
|
||||||
|
this.label33.Location = new System.Drawing.Point(168, 269);
|
||||||
|
this.label33.Name = "label33";
|
||||||
|
this.label33.Size = new System.Drawing.Size(66, 13);
|
||||||
|
this.label33.TabIndex = 17;
|
||||||
|
this.label33.Text = "MT4 Server:";
|
||||||
|
//
|
||||||
|
// label32
|
||||||
|
//
|
||||||
|
this.label32.AutoSize = true;
|
||||||
|
this.label32.Location = new System.Drawing.Point(168, 241);
|
||||||
|
this.label32.Name = "label32";
|
||||||
|
this.label32.Size = new System.Drawing.Size(56, 13);
|
||||||
|
this.label32.TabIndex = 17;
|
||||||
|
this.label32.Text = "Password:";
|
||||||
|
//
|
||||||
|
// label31
|
||||||
|
//
|
||||||
|
this.label31.AutoSize = true;
|
||||||
|
this.label31.Location = new System.Drawing.Point(168, 214);
|
||||||
|
this.label31.Name = "label31";
|
||||||
|
this.label31.Size = new System.Drawing.Size(36, 13);
|
||||||
|
this.label31.TabIndex = 17;
|
||||||
|
this.label31.Text = "Login:";
|
||||||
|
//
|
||||||
|
// textBoxAccountHost
|
||||||
|
//
|
||||||
|
this.textBoxAccountHost.Location = new System.Drawing.Point(234, 266);
|
||||||
|
this.textBoxAccountHost.Name = "textBoxAccountHost";
|
||||||
|
this.textBoxAccountHost.Size = new System.Drawing.Size(238, 20);
|
||||||
|
this.textBoxAccountHost.TabIndex = 17;
|
||||||
|
//
|
||||||
|
// textBoxAccountPassword
|
||||||
|
//
|
||||||
|
this.textBoxAccountPassword.Location = new System.Drawing.Point(234, 238);
|
||||||
|
this.textBoxAccountPassword.Name = "textBoxAccountPassword";
|
||||||
|
this.textBoxAccountPassword.Size = new System.Drawing.Size(238, 20);
|
||||||
|
this.textBoxAccountPassword.TabIndex = 16;
|
||||||
|
//
|
||||||
|
// textBoxAccountLogin
|
||||||
|
//
|
||||||
|
this.textBoxAccountLogin.Location = new System.Drawing.Point(232, 212);
|
||||||
|
this.textBoxAccountLogin.Name = "textBoxAccountLogin";
|
||||||
|
this.textBoxAccountLogin.Size = new System.Drawing.Size(238, 20);
|
||||||
|
this.textBoxAccountLogin.TabIndex = 15;
|
||||||
|
//
|
||||||
// button67
|
// button67
|
||||||
//
|
//
|
||||||
this.button67.Location = new System.Drawing.Point(157, 33);
|
this.button67.Location = new System.Drawing.Point(157, 33);
|
||||||
@@ -1368,6 +1430,8 @@
|
|||||||
//
|
//
|
||||||
// tabPage4
|
// tabPage4
|
||||||
//
|
//
|
||||||
|
this.tabPage4.Controls.Add(this.comboBox12);
|
||||||
|
this.tabPage4.Controls.Add(this.button72);
|
||||||
this.tabPage4.Controls.Add(this.button36);
|
this.tabPage4.Controls.Add(this.button36);
|
||||||
this.tabPage4.Controls.Add(this.comboBox10);
|
this.tabPage4.Controls.Add(this.comboBox10);
|
||||||
this.tabPage4.Controls.Add(this.comboBox9);
|
this.tabPage4.Controls.Add(this.comboBox9);
|
||||||
@@ -1391,6 +1455,25 @@
|
|||||||
this.tabPage4.Text = "MarketInfo";
|
this.tabPage4.Text = "MarketInfo";
|
||||||
this.tabPage4.UseVisualStyleBackColor = true;
|
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
|
// button36
|
||||||
//
|
//
|
||||||
this.button36.Location = new System.Drawing.Point(208, 157);
|
this.button36.Location = new System.Drawing.Point(208, 157);
|
||||||
@@ -1785,6 +1868,7 @@
|
|||||||
//
|
//
|
||||||
// tabPage6
|
// tabPage6
|
||||||
//
|
//
|
||||||
|
this.tabPage6.Controls.Add(this.button73);
|
||||||
this.tabPage6.Controls.Add(this.textBoxPrint);
|
this.tabPage6.Controls.Add(this.textBoxPrint);
|
||||||
this.tabPage6.Controls.Add(this.button27);
|
this.tabPage6.Controls.Add(this.button27);
|
||||||
this.tabPage6.Controls.Add(this.button14);
|
this.tabPage6.Controls.Add(this.button14);
|
||||||
@@ -1799,14 +1883,14 @@
|
|||||||
//
|
//
|
||||||
// textBoxPrint
|
// 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.Name = "textBoxPrint";
|
||||||
this.textBoxPrint.Size = new System.Drawing.Size(386, 20);
|
this.textBoxPrint.Size = new System.Drawing.Size(386, 20);
|
||||||
this.textBoxPrint.TabIndex = 3;
|
this.textBoxPrint.TabIndex = 3;
|
||||||
//
|
//
|
||||||
// button27
|
// 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.Name = "button27";
|
||||||
this.button27.Size = new System.Drawing.Size(75, 23);
|
this.button27.Size = new System.Drawing.Size(75, 23);
|
||||||
this.button27.TabIndex = 2;
|
this.button27.TabIndex = 2;
|
||||||
@@ -1836,6 +1920,7 @@
|
|||||||
//
|
//
|
||||||
// tabPage7
|
// tabPage7
|
||||||
//
|
//
|
||||||
|
this.tabPage7.Controls.Add(this.button71);
|
||||||
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, 40);
|
||||||
@@ -1846,6 +1931,16 @@
|
|||||||
this.tabPage7.Text = "Technical Indicators";
|
this.tabPage7.Text = "Technical Indicators";
|
||||||
this.tabPage7.UseVisualStyleBackColor = true;
|
this.tabPage7.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
|
// button71
|
||||||
|
//
|
||||||
|
this.button71.Location = new System.Drawing.Point(6, 64);
|
||||||
|
this.button71.Name = "button71";
|
||||||
|
this.button71.Size = new System.Drawing.Size(107, 23);
|
||||||
|
this.button71.TabIndex = 17;
|
||||||
|
this.button71.Text = "iBarShift";
|
||||||
|
this.button71.UseVisualStyleBackColor = true;
|
||||||
|
this.button71.Click += new System.EventHandler(this.button71_Click);
|
||||||
|
//
|
||||||
// button23
|
// button23
|
||||||
//
|
//
|
||||||
this.button23.Location = new System.Drawing.Point(6, 35);
|
this.button23.Location = new System.Drawing.Point(6, 35);
|
||||||
@@ -2076,63 +2171,15 @@
|
|||||||
this.button69.UseVisualStyleBackColor = true;
|
this.button69.UseVisualStyleBackColor = true;
|
||||||
this.button69.Click += new System.EventHandler(this.button69_Click);
|
this.button69.Click += new System.EventHandler(this.button69_Click);
|
||||||
//
|
//
|
||||||
// textBoxAccountLogin
|
// button73
|
||||||
//
|
//
|
||||||
this.textBoxAccountLogin.Location = new System.Drawing.Point(232, 212);
|
this.button73.Location = new System.Drawing.Point(13, 74);
|
||||||
this.textBoxAccountLogin.Name = "textBoxAccountLogin";
|
this.button73.Name = "button73";
|
||||||
this.textBoxAccountLogin.Size = new System.Drawing.Size(238, 20);
|
this.button73.Size = new System.Drawing.Size(75, 23);
|
||||||
this.textBoxAccountLogin.TabIndex = 15;
|
this.button73.TabIndex = 4;
|
||||||
//
|
this.button73.Text = "TimeGMT";
|
||||||
// textBoxAccountPassword
|
this.button73.UseVisualStyleBackColor = true;
|
||||||
//
|
this.button73.Click += new System.EventHandler(this.button73_Click);
|
||||||
this.textBoxAccountPassword.Location = new System.Drawing.Point(234, 238);
|
|
||||||
this.textBoxAccountPassword.Name = "textBoxAccountPassword";
|
|
||||||
this.textBoxAccountPassword.Size = new System.Drawing.Size(238, 20);
|
|
||||||
this.textBoxAccountPassword.TabIndex = 16;
|
|
||||||
//
|
|
||||||
// label31
|
|
||||||
//
|
|
||||||
this.label31.AutoSize = true;
|
|
||||||
this.label31.Location = new System.Drawing.Point(168, 214);
|
|
||||||
this.label31.Name = "label31";
|
|
||||||
this.label31.Size = new System.Drawing.Size(36, 13);
|
|
||||||
this.label31.TabIndex = 17;
|
|
||||||
this.label31.Text = "Login:";
|
|
||||||
//
|
|
||||||
// label32
|
|
||||||
//
|
|
||||||
this.label32.AutoSize = true;
|
|
||||||
this.label32.Location = new System.Drawing.Point(168, 241);
|
|
||||||
this.label32.Name = "label32";
|
|
||||||
this.label32.Size = new System.Drawing.Size(56, 13);
|
|
||||||
this.label32.TabIndex = 17;
|
|
||||||
this.label32.Text = "Password:";
|
|
||||||
//
|
|
||||||
// textBoxAccountHost
|
|
||||||
//
|
|
||||||
this.textBoxAccountHost.Location = new System.Drawing.Point(234, 266);
|
|
||||||
this.textBoxAccountHost.Name = "textBoxAccountHost";
|
|
||||||
this.textBoxAccountHost.Size = new System.Drawing.Size(238, 20);
|
|
||||||
this.textBoxAccountHost.TabIndex = 17;
|
|
||||||
//
|
|
||||||
// label33
|
|
||||||
//
|
|
||||||
this.label33.AutoSize = true;
|
|
||||||
this.label33.Location = new System.Drawing.Point(168, 269);
|
|
||||||
this.label33.Name = "label33";
|
|
||||||
this.label33.Size = new System.Drawing.Size(66, 13);
|
|
||||||
this.label33.TabIndex = 17;
|
|
||||||
this.label33.Text = "MT4 Server:";
|
|
||||||
//
|
|
||||||
// button70
|
|
||||||
//
|
|
||||||
this.button70.Location = new System.Drawing.Point(371, 292);
|
|
||||||
this.button70.Name = "button70";
|
|
||||||
this.button70.Size = new System.Drawing.Size(97, 23);
|
|
||||||
this.button70.TabIndex = 18;
|
|
||||||
this.button70.Text = "ChangeAccount";
|
|
||||||
this.button70.UseVisualStyleBackColor = true;
|
|
||||||
this.button70.Click += new System.EventHandler(this.button70_Click);
|
|
||||||
//
|
//
|
||||||
// Form1
|
// Form1
|
||||||
//
|
//
|
||||||
@@ -2366,6 +2413,10 @@
|
|||||||
private System.Windows.Forms.TextBox textBoxAccountPassword;
|
private System.Windows.Forms.TextBox textBoxAccountPassword;
|
||||||
private System.Windows.Forms.TextBox textBoxAccountLogin;
|
private System.Windows.Forms.TextBox textBoxAccountLogin;
|
||||||
private System.Windows.Forms.Button button70;
|
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));
|
comboBox9.DataSource = Enum.GetNames(typeof(EnumTerminalInfoInteger));
|
||||||
comboBox10.DataSource = Enum.GetNames(typeof(EnumTerminalInfoDouble));
|
comboBox10.DataSource = Enum.GetNames(typeof(EnumTerminalInfoDouble));
|
||||||
comboBox11.DataSource = Enum.GetNames(typeof(EnumObject));
|
comboBox11.DataSource = Enum.GetNames(typeof(EnumObject));
|
||||||
|
comboBox12.DataSource = Enum.GetNames(typeof(ENUM_TERMINAL_INFO_STRING));
|
||||||
comboBoxAccountInfoCmd.DataSource = Enum.GetNames(typeof(TradeOperation));
|
comboBoxAccountInfoCmd.DataSource = Enum.GetNames(typeof(TradeOperation));
|
||||||
|
|
||||||
_apiClient.QuoteUpdated += apiClient_QuoteUpdated;
|
_apiClient.QuoteUpdated += apiClient_QuoteUpdated;
|
||||||
@@ -615,18 +616,28 @@ namespace TestApiClientUI
|
|||||||
listBoxProceHistory.DataSource = items;
|
listBoxProceHistory.DataSource = items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TimeCurrent
|
||||||
private void button13_Click(object sender, EventArgs e)
|
private void button13_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var retVal = _apiClient.TimeCurrent();
|
var retVal = _apiClient.TimeCurrent();
|
||||||
PrintLog($"TimeCurrent result: {retVal}");
|
PrintLog($"TimeCurrent result: {retVal}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TimeLocal
|
||||||
private void button14_Click(object sender, EventArgs e)
|
private void button14_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var retVal = _apiClient.TimeLocal();
|
var retVal = _apiClient.TimeLocal();
|
||||||
PrintLog($"TimeLocal result: {retVal}");
|
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)
|
private void buttonRefreshRates_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var retVal = _apiClient.RefreshRates();
|
var retVal = _apiClient.RefreshRates();
|
||||||
@@ -1129,6 +1140,16 @@ namespace TestApiClientUI
|
|||||||
PrintLog($"TerminalInfoDouble: result = {result}");
|
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)
|
private void checkBox2_CheckedChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var checkbox = sender as CheckBox;
|
var checkbox = sender as CheckBox;
|
||||||
@@ -1462,5 +1483,21 @@ namespace TestApiClientUI
|
|||||||
var result = await Execute(() => _apiClient.ChangeAccount(login, password, host));
|
var result = await Execute(() => _apiClient.ChangeAccount(login, password, host));
|
||||||
PrintLog($"ChangeAccount result: {result}");
|
PrintLog($"ChangeAccount result: {result}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//iBarShift
|
||||||
|
private async void button71_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
const string symbol = "EURUSD";
|
||||||
|
const ChartPeriod timeframe = ChartPeriod.PERIOD_D1;
|
||||||
|
|
||||||
|
var time1 = _apiClient.TimeCurrent();
|
||||||
|
var time2 = _apiClient.iTime(symbol, timeframe, 5);
|
||||||
|
|
||||||
|
var result1 = await Execute(() => _apiClient.iBarShift(symbol, timeframe, time1, true));
|
||||||
|
var result2 = await Execute(() => _apiClient.iBarShift(symbol, timeframe, time2, true));
|
||||||
|
|
||||||
|
PrintLog($"iBarShift result1 = {result1}, time = {time1}");
|
||||||
|
PrintLog($"iBarShift result2 = {result2}, time = {time2}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Executable → Regular
+3450
-88
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -257,7 +257,7 @@ public:
|
|||||||
{
|
{
|
||||||
return (string)_long;
|
return (string)_long;
|
||||||
} else {
|
} else {
|
||||||
return (string)_dbl;
|
return (_dbl!=0) ? (string)_dbl : "0";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user