1
1
using MTsocketAPI . MT5 ;
2
- using System . Security . Cryptography ;
3
2
4
3
namespace Test
5
4
{
6
5
internal class Program
7
6
{
8
7
static void Main ( string [ ] args )
9
8
{
9
+
10
10
try
11
11
{
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 ( ) ;
13
16
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
+ }
15
43
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");
20
47
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))
22
79
{
23
80
Console.WriteLine("Error connecting to MTsocketAPI. Please check if MT5 is running and MTsocketAPI started successfully");
24
81
return;
25
82
}
26
83
84
+ mt5Master.TrackOrderEvent(true);
85
+ /*
27
86
List<Asset> list = mt5.GetSymbolList();
28
87
List<string> symbols = new List<string>();
29
88
@@ -79,6 +138,12 @@ static void Main(string[] args)
79
138
Console.ReadKey(true);
80
139
TradeResult close = mt5.OrderClose(buy.ORDER);
81
140
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 ( ) ;
82
147
83
148
Console . WriteLine ( "Finished!" ) ;
84
149
}
@@ -87,26 +152,74 @@ static void Main(string[] args)
87
152
Console . WriteLine ( $ "Error: { ex . Message } ") ;
88
153
return ;
89
154
}
90
- }
91
155
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);
95
160
}
96
161
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
+ }
101
166
102
- private static void Tt_OnPrice ( object ? sender , Quote e )
167
+ private static void Mt5_OnPrice ( object ? sender , Quote e )
103
168
{
104
- Console . WriteLine ( $ "Time: { e . TIME } Symbol: { e . SYMBOL } Ask: { e . ASK } Bid: { e . BID } " ) ;
169
+ Console . WriteLine ( "Quote: " + e . ToString ( ) ) ;
105
170
}
171
+ /*
172
+ private static void Mt5_OnPrice(object? sender, Quote e)
173
+ {
174
+ Console.WriteLine("Quote: " + e.ToString());
175
+ }
106
176
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}");
112
218
}
219
+
220
+ private static void Tt_OnConnect(object? sender, EventArgs e)
221
+ {
222
+ Console.WriteLine($"Connected!");
223
+ }*/
224
+ }
225
+ }
0 commit comments