Example #1
0
        public void Start()
        {
            m_setting = Setting.GetInstance();
            if (m_setting.Exchange == null || string.IsNullOrEmpty(m_setting.Parameter.Symbol))
            {
                Console.WriteLine("Does not find setting.xml file. Type any key to exist ...");
                Console.Read();
                return;
            }
            m_mockTrade    = m_setting.IsMockTrade;
            m_exchange     = m_setting.Exchange;
            m_account      = new StockAccount();
            m_fairValueMgr = FairValueMgr.GetInstance();
            m_quoteMgr     = QuoteMgr.GetInstance();
            m_hedgeMgr     = AutoHedgeMgr.GetInstance();

            m_quoteParameter = m_setting.Parameter;

            //Test
            ExchangeOKDEX okdex      = m_exchange as ExchangeOKDEX;
            string        privateKey = m_setting.ExchangeSettingMap["PrivateKey"];
            string        key        = okdex.GetPublicKey(privateKey);

            //quote logic
            m_quoteThread = new Thread(() => m_quoteMgr.Start());
            m_quoteThread.Start();

            //Update fair value logic
            m_marketDataThread = new Thread(() => m_fairValueMgr.Start(m_setting.Parameter.Symbol));
            m_marketDataThread.Start();

            //Hedge logic
            m_hedgeThread = new Thread(() => m_hedgeMgr.Start());
            m_hedgeThread.Start();
        }
Example #2
0
        public void Start(string symbol)
        {
            MyMarketData = new MarketData(symbol);
            ExchangeOKEX    okexExchange    = new ExchangeOKEX();
            ExchangeBinance binanceExchange = new ExchangeBinance();

            while (!m_marketMaker.Stop())
            {
                ExchangeBase   exchange      = m_marketMaker.GetExchange();
                QuoteMgr       quoteMgr      = m_marketMaker.GetQuoteMgr();
                AutoResetEvent quoteEventObj = quoteMgr.GetQuoteEventObject();
                //Get reference price
                MarketData okexMarketData = new MarketData(symbol);
                okexExchange.UpdateMarketData(okexMarketData);
                MarketData binanceMarketData = new MarketData(symbol);
                binanceExchange.UpdateMarketData(binanceMarketData);
                if (okexMarketData.DepthData.Mid > 0 && binanceMarketData.DepthData.Mid > 0)
                {
                    //calculate fair value and market state
                    double avgMidPrice = (okexMarketData.DepthData.Mid + binanceMarketData.DepthData.Mid) / 2;
                    MyMarketData.FairValue = avgMidPrice;
                    if (Math.Abs(okexMarketData.DepthData.Mid / binanceMarketData.DepthData.Mid - 1) >= 0.01)
                    {
                        MyMarketData.IsNormal = false;
                    }
                    else
                    {
                        MyMarketData.IsNormal = true;
                    }
                    //Get current price
                    exchange.UpdateMarketData(MyMarketData);
                    //If not mock trade. Execute anti-arbitrage check
                    if (exchange.GetType() != typeof(ExchangeMock))
                    {
                    }
                    MyMarketData.DepthData.UpdateTime = DateTime.Now;
                    quoteEventObj.Set();
                }
                Thread.Sleep(50);
            }
        }