コード例 #1
0
        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());
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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");
        }