public StreamingAPIConnect(StreamingListener sl, string ip, int port, LoginResponse lr, bool secure) { this.sl = sl; this.streamingSessionId = lr.StreamingSessionId; apiSocket = new System.Net.Sockets.TcpClient(ip, port); if (secure) { SslStream ssl = new SslStream(apiSocket.GetStream()); ssl.AuthenticateAsClient("xtb.com"); //hardcoded domain, because we use ip-version of the address apiWriteStream = new StreamWriter(ssl); apiBufferedReader = new StreamReader(ssl); } else { NetworkStream ns = apiSocket.GetStream(); apiWriteStream = new StreamWriter(ns); apiBufferedReader = new StreamReader(ns); } Thread t = new Thread(delegate() { while (running) { readStreamMessage(); Thread.Sleep(50); } }); t.Start(); //System.Threading.Timer t = new System.Threading.Timer(o => readStreamMessage(), null, 0, 10); }
public static void Main(string[] args) { try { SyncAPIConnect connector = new SyncAPIConnect(ServerData.ProductionServers["CONTEST"]); /* Enter your registration credentials (login & pass) here. LOGIN PASSWORD */ BaseCommand loginCmd = APICommandFactory.createLoginCommand( 00000000, "your_password", false); Console.Error.WriteLine("SENDING LoginCommand : " + loginCmd.toJSONString()); string responseJSON = connector.executeCommand(loginCmd.toJSONString()); Console.Error.WriteLine("RECEIVED LoginResponse : " + responseJSON); LoginResponse resp = new LoginResponse(responseJSON); Console.Error.WriteLine(resp.Status); StrList xyz = new StrList(); StreamingAPIConnect scnn = new StreamingAPIConnect(xyz, ServerData.ProductionServers["REAL"], resp); scnn.subscribeTrades(); LinkedList<string> symbols = new LinkedList<string>(); symbols.AddLast("EURUSD."); symbols.AddLast("EURJPY."); symbols.AddLast("USDPLN."); symbols.AddLast("EURGBP."); scnn.subscribePricesL(symbols); CurrentUserDataResponse data = APICommandFactory.executeCurrentUserDataCommand(connector, false); Console.WriteLine(data.Currency + " " + data.Leverage); ProfitCalculationResponse resp_calc = APICommandFactory.executeProfitCalculationCommand(connector, "EURUSD", 0.1, TRADE_OPERATION_CODE.BUY, 1.001, 1.0003, false); Console.WriteLine(resp_calc.Profit); MarginTradeResponse mtrade = APICommandFactory.executeMarginTradeCommand(connector, "EURUSD", 0.1, TRADE_OPERATION_CODE.BUY, false); Console.WriteLine(mtrade.Margin); mtrade = APICommandFactory.executeMarginTradeCommand(connector, "EURUSD", 0.1, false); Console.WriteLine(mtrade.Margin); mtrade = APICommandFactory.executeMarginTradeCommand(connector, "EURUSD", 0.1, TRADE_OPERATION_CODE.SELL, false); Console.WriteLine(mtrade.Margin); mtrade = APICommandFactory.executeMarginTradeCommand(connector, "EURUSD", 0.1, TRADE_OPERATION_CODE.BUY_LIMIT, false); Console.WriteLine(mtrade.Margin); SymbolResponse sresp = APICommandFactory.executeSymbolCommand(connector, "EURUSD", false); SymbolRecord s = sresp.Symbol; Console.WriteLine(s.Ask + " " + s.Bid +" " + s.ContractSize + " " + s.SwapLong); Console.Read(); connector.close(); } catch (APICommandConstructionException ex) { Console.Error.WriteLine(ex.StackTrace); } catch (Exception ex) { Console.WriteLine(ex.ToString()); Console.Write(ex.StackTrace); Console.Read(); } }
public StreamingAPIConnect(StreamingListener sl, ServerData dt, LoginResponse lr) : this(sl, dt.address, dt.streamingPort, lr, dt.secure) { }
public StreamingAPIConnect(StreamingListener sl, string ip, int port, LoginResponse lr) : this(sl, ip, port, lr, false) { }