public CryptoTradeForm() { InitializeComponent(); // Wire up events Crypto.UpdateOrdersEvent += Crypto_UpdateOrdersEvent; Crypto.UpdateTickerEvent += Crypto_UpdateTickerEvent; // Create Bid/Ask displays for @BTC and @XBT futures m_baBtc = new TextBidAsk(panelBtc, "@BTC:"); m_baXbt = new TextBidAsk(panelXbt, "@XBT:"); Crypto.InitializeExchanges(); LoadAlgos(); LoadStudies(); m_orderGridPanel = new TickerGridPanel(panelCrypto2, "Orders", Color.Gray, ZOrder.Columns); m_orderGridPanel.Initialize(); m_orderGridPanel.Grid.CellClick += OrderGrid_CellClick; m_gridPanels.Add(m_orderGridPanel); m_tradeGridPanel = new TickerGridPanel(panelCrypto3, "Trades", Color.Gray, ZTrade.Columns); m_tradeGridPanel.Initialize(); m_gridPanels.Add(m_tradeGridPanel); m_iq = PriceFeed.Instance; m_iq.UpdatePrices += M_iq_UpdatePrices; m_iq.SubscribePrices("@BTC#"); m_iq.SubscribePrices("@XBT#"); m_iq.SubscribePrices("XBTX.XO"); m_iq.SubscribePrices("BRTI.X"); m_iq.SubscribePrices("GXBT.XO"); Initialize(); m_updateTickerCount = 0; Task.Run(() => UpdateExchangeTickers()); Task.Run(() => UpdateBalances()); Task.Run(() => UpdateOrders()); }
public CryptoAlgoForm() { InitializeComponent(); ReadAlgoArguments(); string[] atsColumns = { "Instance Name", "Template", "StartTime", "Trades", "Profit", "Status" }; m_algoSummaryPanel = new TickerGridPanel(panelCrypto1, "Automated Trade Summary", Color.Gray, atsColumns); m_algoSummaryPanel.Initialize(); m_orderGridPanel = new TickerGridPanel(panelCrypto2, "Orders", Color.Gray, ZOrder.Columns); m_orderGridPanel.Initialize(); m_orderGridPanel.Grid.CellClick += OrderGrid_CellClick; //m_gridPanels.Add(m_orderGridPanel); m_tradeGridPanel = new TickerGridPanel(panelCrypto3, "Trades", Color.Gray, ZTrade.Columns); m_tradeGridPanel.Initialize(); //m_gridPanels.Add(m_tradeGridPanel); PopulateGrids(); }
public CryptoPricesForm() { InitializeComponent(); //Binance.Instance.TestMe(); //EtherChain.Instance.GetBlock("101010"); //EtherChain.Instance.GetLastBlocks(); //EtherChain.Instance.GetBasicStats(); //EtherChain.Instance.GetHistorical(); //Poloniex.Instance.getit(); //Kraken.Instance.getit(); // Read crypto symbol files and populate the second list with the valid symbol ids m_dfSym = ZCryptoSymbol.dfReadCryptoSymbols(); m_dfSymFx = ZCryptoSymbol.dfReadCryptoSymbolsFx(); foreach (var r in m_dfSym.Rows) { listSymbolIds.Items.Add(r[0]); } //Console.SetOut(new MyLogger(rtbConsoleOutput)); // Define all FX symbols here: //var symbols = new List<string>() { "@AD#", "@BP#", "@JY#", "@EU#", "@SF#" }; // Create empty dictionary of symbol->price updates m_fxUpdates = new Dictionary <string, PriceUpdateIQ>(); string pathname = Folders.system_path(CURRENCY_SYMBOLS_FILE); var df = DataFrame.ReadDataFrame(pathname); foreach (var r in df.Rows) { string symbol_root = r[1]; // r["IQSymbolRoot"] string continuousSymbol = symbol_root + "#"; if (!m_fxUpdates.ContainsKey(continuousSymbol)) { m_fxUpdates.Add(continuousSymbol, null); } } /*foreach (string symbol_root in Crypto.CurrencySymbols.Values) * { * m_fxUpdates.Add(symbol_root + "#", null); * }*/ m_prices = IQFeed.PriceFeed.Instance; m_prices.UpdatePrices += prices_UpdatePrices; //SubscribeFXPrices(); // moved to Form_Load m_panels = new Dictionary <string, System.Windows.Forms.Panel>(); int i = 0; foreach (var exch in Crypto.ExchangeList) { listExchanges.Items.Add(exch.ExchangeName); var pnl = CreatePanel("panel" + exch.ExchangeName); panelTickers.Controls.Add(pnl); pnl.Visible = false; pnl.Dock = DockStyle.Fill; TickerGridPanel gridPanel = new TickerGridPanel(pnl, exch.ExchangeName, ColorPalette(1, ++i), ZTicker.Columns); gridPanel.Initialize(); m_gridPanels[exch.ExchangeName] = gridPanel; m_panels[exch.ExchangeName] = pnl; } Binance.Instance.UpdateTickersEvent += m_gridPanels["BINANCE"].Handle_UpdateTickers; Binance.Instance.StartTickerTimer(10000); Kraken.Instance.UpdateTickersEvent += m_gridPanels["KRAKEN"].Handle_UpdateTickers; Bithumb.Instance.UpdateTickersEvent += m_gridPanels["BITHUMB"].Handle_UpdateTickers; ItBit.Instance.UpdateTickersEvent += m_gridPanels["ITBIT"].Handle_UpdateTickers; Bittrex.Instance.UpdateTickersEvent += m_gridPanels["BITTREX"].Handle_UpdateTickers; OkCoin.Instance.UpdateTickersEvent += m_gridPanels["OKCOIN"].Handle_UpdateTickers; BTCC.Instance.UpdateTickersEvent += m_gridPanels["BTCC"].Handle_UpdateTickers; //BTER.Instance.UpdateTickersEvent += m_gridPanels["BTER"].Handle_UpdateTickers; Poloniex.Instance.UpdateTickersEvent += m_gridPanels["POLONIEX"].Handle_UpdateTickers; //Coinigy.Instance.UpdateTickersEvent += m_gridPanels["COINIGY"].Handle_UpdateTickers; Wex.Instance.UpdateTickersEvent += m_gridPanels["WEX"].Handle_UpdateTickers; Bitfinex.Instance.UpdateTickersEvent += m_gridPanels["BITFINEX"].Handle_UpdateTickers; Bitsquare.Instance.UpdateTickersEvent += m_gridPanels["BITSQUARE"].Handle_UpdateTickers; Bitstamp.Instance.UpdateTickersEvent += m_gridPanels["BITSTAMP"].Handle_UpdateTickers; Cex.Instance.UpdateTickersEvent += m_gridPanels["CEX"].Handle_UpdateTickers; HitBTC.Instance.UpdateTickersEvent += m_gridPanels["HITBTC"].Handle_UpdateTickers; Gemini.Instance.UpdateTickersEvent += m_gridPanels["GEMINI"].Handle_UpdateTickers; GDAX.Instance.UpdateTickersEvent += m_gridPanels["GDAX"].Handle_UpdateTickers; Kraken.Instance.StartTickerTimer(); Bithumb.Instance.StartTickerTimer(); ItBit.Instance.StartTickerTimer(); Bittrex.Instance.StartTickerTimer(); OkCoin.Instance.StartTickerTimer(); BTCC.Instance.StartTickerTimer(); //BTER.Instance.StartTickerTimer(); Poloniex.Instance.StartTickerTimer(); //Coinigy.Instance.StartTickerTimer(); Wex.Instance.StartTickerTimer(); Bitfinex.Instance.StartTickerTimer(60000); // Bitfinex (API 1.0) has limit of 60 requests per minute Bitsquare.Instance.StartTickerTimer(); Bitstamp.Instance.StartTickerTimer(); Cex.Instance.StartTickerTimer(); HitBTC.Instance.StartTickerTimer(); Gemini.Instance.StartTickerTimer(); GDAX.Instance.StartTickerTimer(); DisplayExchangePrices("KRAKEN"); }