Skip to content

Commit 271ee21

Browse files
authored
Add files via upload
1 parent 922c389 commit 271ee21

File tree

2 files changed

+137
-24
lines changed

2 files changed

+137
-24
lines changed

Test/Program.cs

Lines changed: 136 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,88 @@
11
using MTsocketAPI.MT5;
2-
using System.Security.Cryptography;
32

43
namespace Test
54
{
65
internal class Program
76
{
87
static void Main(string[] args)
98
{
9+
1010
try
1111
{
12-
Console.WriteLine("#### MTsocketAPI C# Library ####");
12+
//Console.WriteLine("#### MTsocketAPI C# Library ####");
13+
14+
MTsocketAPI.MT5.Terminal mt5 = new MTsocketAPI.MT5.Terminal();
15+
mt5.Connect();
1316

14-
MTsocketAPI.MT5.Terminal mt5 = new MTsocketAPI.MT5.Terminal();
17+
18+
19+
List<MTsocketAPI.MT5.OHLC_Req> ohlc_list = new List<MTsocketAPI.MT5.OHLC_Req>();
20+
MTsocketAPI.MT5.OHLC_Req req = new MTsocketAPI.MT5.OHLC_Req();
21+
req.SYMBOL = "EURUSD";
22+
req.TIMEFRAME = TimeFrame.PERIOD_M1;
23+
ohlc_list.Add(req);
24+
MTsocketAPI.MT5.OHLC_Req req2 = new MTsocketAPI.MT5.OHLC_Req();
25+
req2.SYMBOL = "GBPUSD";
26+
req2.TIMEFRAME = TimeFrame.PERIOD_M1;
27+
req2.DEPTH = 3;
28+
ohlc_list.Add(req2);
29+
30+
bool result = mt5.TrackOHLC(ohlc_list);
31+
//double valor = mt4.Custom_Indicator("EURUSD", MTsocketAPI.MT4.TimeFrame.PERIOD_M5, "Momentum", 0, 0, new List<string> { "14", "0" });
32+
//var history = mt4.GetOrderHistory(DateTime.Now.AddDays(-10), DateTime.Now.AddDays(1));
33+
34+
/*
35+
Terminal mt5 = new Terminal();
36+
//mt5.OnPrice += Mt5_OnPrice;
37+
mt5.OnMarketDepth += Mt5_OnMarketDepth;
38+
if (!mt5.Connect())
39+
{
40+
Console.WriteLine("Connect failed. Please check that MTsocketAPI is running");
41+
return;
42+
}
1543
16-
mt5.OnConnect += Tt_OnConnect;
17-
mt5.OnPrice += Tt_OnPrice;
18-
mt5.OnOHLC += Tt_OnOHLC;
19-
mt5.OnOrderEvent += Tt_OnOrderEvent;
44+
mt5.TrackMarketDepth(new List<string>() { "EURUSD", "GBPUSD" });
45+
*/
46+
//var result = mt5.GetSymbolInfo("EURUSD");
2047

21-
if (!mt5.Connect())
48+
//CalendarList pepito = mt5.CalendarList(DateTime.Now.AddDays(-3), DateTime.Now.AddDays(-2));
49+
50+
//List<double> AlligatorLine1 = mt5.Custom_Indicator("EURUSD", TimeFrame.PERIOD_M15, "Examples\\Alligator", 0, 1, new List<string> { "13", "8", "8", "5", "5", "3", "MODE_SMMA", "PRICE_MEDIAN" });
51+
//List<double> AlligatorLine2 = mt5.Custom_Indicator("EURUSD", TimeFrame.PERIOD_M15, "Examples\\Alligator", 1, 1, new List<string> { "13", "8", "8", "5", "5", "3", "MODE_SMMA", "PRICE_MEDIAN" });
52+
//List<double> AlligatorLine3 = mt5.Custom_Indicator("EURUSD", TimeFrame.PERIOD_M15, "Examples\\Alligator", 2, 1, new List<string> { "13", "8", "8", "5", "5", "3", "MODE_SMMA", "PRICE_MEDIAN" });
53+
54+
// Console.WriteLine("AlligatorLine1: " + AlligatorLine1[0]);
55+
//Console.WriteLine("AlligatorLine2: " + AlligatorLine2[0]);
56+
//Console.WriteLine("AlligatorLine3: " + AlligatorLine3[0]);
57+
58+
//mt5.TrackPrices(new List<string>() { "EURUSD","GBPUSD" });
59+
60+
//Console.ReadKey();
61+
//List<Asset> list = mt5.GetSymbolList();
62+
//List<string> symbols = mt5.GetSymbolList().Where(x => x.TRADE_MODE > 0).Select(x => x.NAME.ToString()).ToList();
63+
//mt5.TrackPrices(symbols);
64+
//mt5.TrackPrices(mt5.GetSymbolList());
65+
66+
/*
67+
mt5Master.OnConnect += Tt_OnConnect;
68+
mt5Master.OnPrice += Tt_OnPrice;
69+
mt5Master.OnOHLC += Tt_OnOHLC;
70+
mt5Master.OnOrderEvent += Tt_OnOrderEvent;
71+
72+
if (!mt5Master.Connect())
73+
{
74+
Console.WriteLine("Error connecting to MTsocketAPI. Please check if MT5 is running and MTsocketAPI started successfully");
75+
return;
76+
}
77+
78+
if (!mt5Slave.Connect("localhost",70,71))
2279
{
2380
Console.WriteLine("Error connecting to MTsocketAPI. Please check if MT5 is running and MTsocketAPI started successfully");
2481
return;
2582
}
2683
84+
mt5Master.TrackOrderEvent(true);
85+
/*
2786
List<Asset> list = mt5.GetSymbolList();
2887
List<string> symbols = new List<string>();
2988
@@ -79,6 +138,12 @@ static void Main(string[] args)
79138
Console.ReadKey(true);
80139
TradeResult close = mt5.OrderClose(buy.ORDER);
81140
Console.WriteLine("Result:" + close.ToString());
141+
*/
142+
//bool result = mt5.TrackOHLC(new List<string>() { asset.NAME },TimeFrame.PERIOD_M1);
143+
//bool result2 = mt5.TrackPrices(new List<string>() { asset.NAME });
144+
//bool result3 = mt5.TrackOrderEvent(true);
145+
146+
Console.ReadKey();
82147

83148
Console.WriteLine("Finished!");
84149
}
@@ -87,26 +152,74 @@ static void Main(string[] args)
87152
Console.WriteLine($"Error: {ex.Message}");
88153
return;
89154
}
90-
}
91155

92-
private static void Tt_OnOrderEvent(object? sender, OrderEvent e)
93-
{
94-
Console.WriteLine(e.TRADE_TRANSACTION.ToString());
156+
//do
157+
//{
158+
// System.Threading.Thread.Sleep(1000);
159+
//} while (true);
95160
}
96161

97-
private static void Tt_OnOHLC(object? sender, OHLC_Msg e)
98-
{
99-
Console.WriteLine($"OHLC: {e.OHLC[0].TIME} {e.SYMBOL} Open: {e.OHLC[0].OPEN} High: {e.OHLC[0].HIGH} Low: {e.OHLC[0].LOW} Close:{e.OHLC[0].CLOSE}");
100-
}
162+
private static void Mt5_OnMarketDepth(object? sender, MarketDepth e)
163+
{
164+
Console.WriteLine("Market Depth: " + e.ToString());
165+
}
101166

102-
private static void Tt_OnPrice(object? sender, Quote e)
167+
private static void Mt5_OnPrice(object? sender, Quote e)
103168
{
104-
Console.WriteLine($"Time: {e.TIME} Symbol: {e.SYMBOL} Ask: {e.ASK} Bid: {e.BID}");
169+
Console.WriteLine("Quote: " + e.ToString());
105170
}
171+
/*
172+
private static void Mt5_OnPrice(object? sender, Quote e)
173+
{
174+
Console.WriteLine("Quote: " + e.ToString());
175+
}
106176
107-
private static void Tt_OnConnect(object? sender, EventArgs e)
108-
{
109-
Console.WriteLine($"Connected!");
110-
}
111-
}
177+
static Dictionary<long,long> opened = new Dictionary<long,long>();
178+
179+
private static void Tt_OnOrderEvent(object? sender, OrderEvent e)
180+
{
181+
if (e.TRADE_RESULT != null)
182+
{
183+
//Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff") + " - " + e.ToString());
184+
185+
if (e.TRADE_REQUEST != null)
186+
{
187+
if (e.TRADE_REQUEST.ACTION == "TRADE_ACTION_DEAL") //Open or close position
188+
{
189+
if (e.TRADE_REQUEST.POSITION == 0)
190+
{
191+
TradeResult tr = mt5Slave.SendOrder(e.TRADE_REQUEST.SYMBOL, e.TRADE_REQUEST.VOLUME, Enum.Parse<OrderType>( e.TRADE_REQUEST.TYPE));
192+
opened.Add(e.TRADE_REQUEST.ORDER, tr.ORDER);
193+
Console.WriteLine("New position: " + e.TRADE_REQUEST.ORDER + " Symbol: " + e.TRADE_REQUEST.SYMBOL + " Volume: " + e.TRADE_REQUEST.VOLUME);
194+
}
195+
else
196+
{
197+
mt5Slave.OrderClose(opened.FirstOrDefault(t => t.Key == e.TRADE_REQUEST.POSITION).Value);
198+
Console.WriteLine("Position closed: " + e.TRADE_REQUEST.POSITION + " Symbol: " + e.TRADE_REQUEST.SYMBOL + " Volume: " + e.TRADE_REQUEST.VOLUME);
199+
}
200+
}
201+
else if (e.TRADE_REQUEST.ACTION == "TRADE_ACTION_SLTP") //Update SL or TP
202+
{
203+
mt5Slave.OrderModify(opened.FirstOrDefault(t => t.Key == e.TRADE_REQUEST.POSITION).Value, e.TRADE_REQUEST.SL, e.TRADE_REQUEST.TP);
204+
Console.WriteLine("SL or TP updated!");
205+
}
206+
}
207+
}
208+
}
209+
210+
private static void Tt_OnOHLC(object? sender, OHLC_Msg e)
211+
{
212+
Console.WriteLine($"OHLC: {e.OHLC[0].TIME} {e.SYMBOL} Open: {e.OHLC[0].OPEN} High: {e.OHLC[0].HIGH} Low: {e.OHLC[0].LOW} Close:{e.OHLC[0].CLOSE}");
213+
}
214+
215+
private static void Tt_OnPrice(object? sender, Quote e)
216+
{
217+
Console.WriteLine($"Time: {e.TIME} Symbol: {e.SYMBOL} Ask: {e.ASK} Bid: {e.BID}");
112218
}
219+
220+
private static void Tt_OnConnect(object? sender, EventArgs e)
221+
{
222+
Console.WriteLine($"Connected!");
223+
}*/
224+
}
225+
}

Test/Test.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net7.0</TargetFramework>
5+
<TargetFramework>net8.0</TargetFramework>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
88
</PropertyGroup>

0 commit comments

Comments
 (0)