Beispiel #1
0
        public void TestGetRoundTo()
        {
            Assert.AreEqual(CUtilConv.GetRoundTo(0.1m), 1);
            Assert.AreEqual(CUtilConv.GetRoundTo(0.2m), 1);
            Assert.AreEqual(CUtilConv.GetRoundTo(0.02m), 2);

            Assert.AreEqual(CUtilConv.GetRoundTo(0.002m), 3);
            Assert.AreEqual(CUtilConv.GetRoundTo(0.08m), 2);
            Assert.AreEqual(CUtilConv.GetRoundTo(0.02m), 2);
            Assert.AreEqual(CUtilConv.GetRoundTo(0.6m), 1);


            Assert.AreEqual(CUtilConv.GetRoundTo(190m), 0);
            Assert.AreEqual(CUtilConv.GetRoundTo(0.04m), 2);
            Assert.AreEqual(CUtilConv.GetRoundTo(0.06m), 2);
            Assert.AreEqual(CUtilConv.GetRoundTo(14m), 0);
            Assert.AreEqual(CUtilConv.GetRoundTo(6m), 0);


            Assert.AreEqual(CUtilConv.GetRoundTo(2m), 0);
            Assert.AreEqual(CUtilConv.GetRoundTo(8m), 0);
            Assert.AreEqual(CUtilConv.GetRoundTo(1m), 0);
            Assert.AreEqual(CUtilConv.GetRoundTo(0.4m), 1);
            Assert.AreEqual(CUtilConv.GetRoundTo(300), 0);
        }
        private void ProcessSymbolDetails()
        {
            Log("GetSymbolDetails start");
            ResponseSymbolDetails[] resp = _bfxRestConnectorV1.GetSymbolDetails();
            Log("GetSymbolDetails end");


            //--- initial fill of DB (on very first start only)
            if (_bfxNeedInitInstruments)
            {
                for (int i = 0; i < resp.Count(); i++)
                {
                    string instrument = resp[i].pair;
                    string instrUpper = instrument.ToUpper();
                    //for now intrested only in Xusd pairs
                    if (instrument.Contains("usd"))
                    {
                        DBCommunicator.TransactAddInstrument(instrUpper, CodesStockExch._04_CryptoBitfinex);
                    }
                }
                return;
            }
            //--- end of initial DB fill

            foreach (var dbIsntr in Instruments)
            {
                for (int i = 0; i < resp.Count(); i++)
                {
                    decimal decMinOrdSize = Convert.ToDecimal(resp[i].minimum_order_size);



                    if (resp[i].pair == dbIsntr.instrument.ToLower() && decMinOrdSize != dbIsntr.minimum_order_size)
                    {
                        dbIsntr.minimum_order_size = decMinOrdSize;

                        int oldDecimalVolume = dbIsntr.DecimalVolume;

                        dbIsntr.DecimalVolume = CUtilConv.GetRoundTo(dbIsntr.minimum_order_size);

                        DBCommunicator.UpdateCryptoInstrumentData(resp[i].pair,
                                                                  CodesStockExch._04_CryptoBitfinex,
                                                                  decMinOrdSize,
                                                                  dbIsntr.DecimalVolume);

                        Log(String.Format("Update minimum_order_size={0} {1}", dbIsntr.minimum_order_size, dbIsntr.instrument));

                        if (oldDecimalVolume != dbIsntr.DecimalVolume)
                        {
                            _bfxWebSockConnector.UpdateDecimalVolume(dbIsntr.instrument, dbIsntr.DecimalVolume);
                            Log(String.Format("Update DecimalVolume {0} {1}", dbIsntr.DecimalVolume, dbIsntr.instrument));
                        }
                    }
                }
            }

            if (_tradeHistStor == null)
            {
                _tradeHistStor = new CTradeHistStor(Instruments.GetInstruments(), DBCommunicator);
            }
        }