@@ -14,6 +14,51 @@ public enum OrderType
1414 ORDER_TYPE_BUY_STOP ,
1515 ORDER_TYPE_SELL_STOP
1616 }
17+
18+ public enum TradeRetCode : long
19+ {
20+ TRADE_RETCODE_REQUOTE = 10004 ,
21+ TRADE_RETCODE_REJECT = 1006 ,
22+ TRADE_RETCODE_CANCEL = 10007 ,
23+ TRADE_RETCODE_PLACED = 10008 ,
24+ TRADE_RETCODE_DONE = 10009 ,
25+ TRADE_RETCODE_DONE_PARTIAL = 10010 ,
26+ TRADE_RETCODE_ERROR = 10011 ,
27+ TRADE_RETCODE_TIMEOUT = 10012 ,
28+ TRADE_RETCODE_INVALID = 10013 ,
29+ TRADE_RETCODE_INVALID_VOLUME = 10014 ,
30+ TRADE_RETCODE_INVALID_PRICE = 10015 ,
31+ TRADE_RETCODE_INVALID_STOPS = 10016 ,
32+ TRADE_RETCODE_TRADE_DISABLED = 10017 ,
33+ TRADE_RETCODE_MARKET_CLOSED = 10018 ,
34+ TRADE_RETCODE_NO_MONEY = 10019 ,
35+ TRADE_RETCODE_PRICE_CHANGED = 10020 ,
36+ TRADE_RETCODE_PRICE_OFF = 10021 ,
37+ TRADE_RETCODE_INVALID_EXPIRATION = 10022 ,
38+ TRADE_RETCODE_ORDER_CHANGED = 10023 ,
39+ TRADE_RETCODE_TOO_MANY_REQUESTS = 10024 ,
40+ TRADE_RETCODE_NO_CHANGES = 10025 ,
41+ TRADE_RETCODE_SERVER_DISABLES_AT = 10026 ,
42+ TRADE_RETCODE_CLIENT_DISABLES_AT = 10027 ,
43+ TRADE_RETCODE_LOCKED = 10028 ,
44+ TRADE_RETCODE_FROZEN = 10029 ,
45+ TRADE_RETCODE_INVALID_FILL = 10030 ,
46+ TRADE_RETCODE_CONNECTION = 10031 ,
47+ TRADE_RETCODE_ONLY_REAL = 10032 ,
48+ TRADE_RETCODE_LIMIT_ORDERS = 10033 ,
49+ TRADE_RETCODE_LIMIT_VOLUME = 10034 ,
50+ TRADE_RETCODE_INVALID_ORDER = 10035 ,
51+ TRADE_RETCODE_POSITION_CLOSED = 10036 ,
52+ TRADE_RETCODE_INVALID_CLOSE_VOLUME = 10038 ,
53+ TRADE_RETCODE_CLOSE_ORDER_EXIST = 10039 ,
54+ TRADE_RETCODE_LIMIT_POSITIONS = 10040 ,
55+ TRADE_RETCODE_REJECT_CANCEL = 10041 ,
56+ TRADE_RETCODE_LONG_ONLY = 10042 ,
57+ TRADE_RETCODE_SHORT_ONLY = 10043 ,
58+ TRADE_RETCODE_CLOSE_ONLY = 10044 ,
59+ TRADE_RETCODE_FIFO_CLOSE = 10045 ,
60+ TRADE_RETCODE_HEDGE_PROHIBITED = 10046
61+ }
1762 public enum TimeFrame
1863 {
1964 PERIOD_M1 ,
@@ -70,7 +115,7 @@ public class Terminal
70115 {
71116 public Terminal ( ) { }
72117
73- public string host = "localhost " ;
118+ public string host = "127.0.0.1 " ;
74119 public int cmd_port = 77 ;
75120 public int data_port = 78 ;
76121 static int bufferLen = 65536 ;
@@ -88,43 +133,51 @@ public Terminal() { }
88133 /// MTsocketAPI version
89134 /// </summary>
90135 public string Version { get ; set ; }
91-
136+ private object sendCmdLock = new object ( ) ;
92137 /// <summary>
93138 /// Send RAW JSON command to MTsocketAPI
94139 /// </summary>
95140 /// <param name="cmd">JSON command</param>
96141 /// <returns>JSON reply</returns>
97142 public JObject SendCommand ( JObject cmd )
98143 {
99- try
144+ lock ( sendCmdLock )
100145 {
101- byte [ ] data = Encoding . ASCII . GetBytes ( cmd . ToString ( Formatting . None ) + "\r \n " ) ;
146+ try
147+ {
148+ //System.IO.File.AppendAllText("log.txt", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff") + " - IN: " + cmd.ToString(Formatting.None) + Environment.NewLine);
149+ byte [ ] data = Encoding . ASCII . GetBytes ( cmd . ToString ( Formatting . None ) + "\r \n " ) ;
102150
103- NetworkStream stream = tcpClient_cmd . GetStream ( ) ;
151+ NetworkStream stream = tcpClient_cmd . GetStream ( ) ;
152+ stream . ReadTimeout = 3000 ;
153+ stream . Write ( data , 0 , data . Length ) ;
104154
105- stream . Write ( data , 0 , data . Length ) ;
155+ data = new byte [ bufferLen ] ;
106156
107- data = new byte [ bufferLen ] ;
157+ string responseData = string . Empty ;
108158
109- string responseData = string . Empty ;
159+ int bytes ;
160+ do
161+ {
162+ bytes = stream . Read ( data , 0 , bufferLen ) ;
163+ responseData += Encoding . ASCII . GetString ( data , 0 , bytes ) ;
164+ //System.Threading.Thread.Sleep(1000);
165+ //System.IO.File.AppendAllText("log.txt", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff") + " - loop: " + responseData + Environment.NewLine);
166+ } while ( stream . DataAvailable || ! responseData . EndsWith ( "\r \n " ) ) ;
110167
111- int bytes ;
112- do
113- {
114- bytes = stream . Read ( data , 0 , bufferLen ) ;
115- responseData += Encoding . ASCII . GetString ( data , 0 , bytes ) ;
116- } while ( stream . DataAvailable || ! responseData . EndsWith ( "\r \n " ) ) ;
168+ //System.IO.File.AppendAllText("log.txt", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff") + " - OU: " + responseData + Environment.NewLine);
117169
118- JObject ? jresult = JsonConvert . DeserializeObject < JObject > ( responseData ) ;
170+ JObject ? jresult = JsonConvert . DeserializeObject < JObject > ( responseData ) ;
119171
120- if ( jresult != null )
121- return jresult ;
122- else
123- throw new Exception ( "Error with deserialization in SendCommand" ) ;
124- }
125- catch ( Exception )
126- {
127- throw ;
172+ if ( jresult != null )
173+ return jresult ;
174+ else
175+ throw new Exception ( "Error with deserialization in SendCommand" ) ;
176+ }
177+ catch ( Exception )
178+ {
179+ throw ;
180+ }
128181 }
129182 }
130183
@@ -197,7 +250,7 @@ private void ListenMTDataStream()
197250 /// <param name="cmd_port">MTsocketAPI command port</param>
198251 /// <param name="data_port">MTsocketAPI data port</param>
199252 /// <returns>True = connect successful, False = connect fail</returns>
200- public bool Connect ( string host = "localhost " , int cmd_port = 77 , int data_port = 78 )
253+ public bool Connect ( string host = "127.0.0.1 " , int cmd_port = 77 , int data_port = 78 )
201254 {
202255 try
203256 {
0 commit comments