예제 #1
0
        private void InitRequiredLP()
        {
            _requiredLP = new List <LiquidityProvider>();

            if (!SoftFxSymbol.Equals(""))
            {
                _requiredLP.Add(LiquidityProvider.SoftFx);
            }

            if (!LivecoinSymbol.Equals(""))
            {
                _requiredLP.Add(LiquidityProvider.Livecoin);
            }

            if (!TidexSymbol.Equals(""))
            {
                _requiredLP.Add(LiquidityProvider.Tidex);
            }

            if (!OkexSymbol.Equals(""))
            {
                _requiredLP.Add(LiquidityProvider.Okex);
            }

            if (!BinanceSymbol.Equals(""))
            {
                _requiredLP.Add(LiquidityProvider.Binance);
            }

            if (!BitfinexSymbol.Equals(""))
            {
                _requiredLP.Add(LiquidityProvider.Bitfinex);
            }

            if (!HitBtcSymbol.Equals(""))
            {
                _requiredLP.Add(LiquidityProvider.HitBtc);
            }

            if (!KrakenSymbol.Equals(""))
            {
                _requiredLP.Add(LiquidityProvider.Kraken);
            }

            if (!KucoinSymbol.Equals(""))
            {
                _requiredLP.Add(LiquidityProvider.Kucoin);
            }

            if (!HuobiSymbol.Equals(""))
            {
                _requiredLP.Add(LiquidityProvider.Huobi);
            }
        }
예제 #2
0
        private MessageSymbol CreateMessageSymbol(BitfinexSymbol bitfinexSymbol)
        {
            string baseAsset  = bitfinexSymbol.Pair.Substring(0, 3);
            string quoteAsset = bitfinexSymbol.Pair.Substring(3, 3);

            var message = new MessageSymbol(bitfinexSymbol.Pair)
            {
                AllowCalculateRealtimeChange   = false,
                AllowCalculateRealtimeVolume   = false,
                AllowCalculateRealtimeTrades   = false,
                AllowCalculateRealtimeTicks    = false,
                AllowAbbreviatePriceByTickSize = true,
                Description       = $"{baseAsset} vs {quoteAsset}",
                ExchangeId        = BitfinexConsts.EXCHANGE_ID,
                HistoryType       = HistoryType.Last,
                LotSize           = 1,
                LotStep           = Math.Pow(10, -8),
                NotionalValueStep = Math.Pow(10, -8),
                MinLot            = bitfinexSymbol.MinimumOrderSize,
                MaxLot            = bitfinexSymbol.MaximumOrderSize,
                Name                   = bitfinexSymbol.Pair,
                ProductAssetId         = baseAsset,
                QuotingCurrencyAssetID = quoteAsset,
                SymbolType             = SymbolType.Crypto,
                VolumeType             = SymbolVolumeType.Volume,
                QuotingType            = SymbolQuotingType.LotSize,
                DeltaCalculationType   = DeltaCalculationType.TickDirection,
                VariableTickList       = new List <VariableTick>
                {
                    new VariableTick(double.NegativeInfinity, double.PositiveInfinity, true, Math.Pow(10, -8), 1.0)
                }
            };

            message.SymbolAdditionalInfo = new List <AdditionalInfoItem>
            {
                new AdditionalInfoItem
                {
                    GroupInfo  = BitfinexConsts.TRADING_INFO_GROUP,
                    SortIndex  = 100,
                    Id         = "Allow margin trading",
                    NameKey    = loc.key("Allow margin trading"),
                    ToolTipKey = loc.key("Allow margin trading"),
                    DataType   = ComparingType.String,
                    Value      = bitfinexSymbol.AllowMargin,
                    Hidden     = false
                },
            };

            if (bitfinexSymbol.AllowMargin)
            {
                message.SymbolAdditionalInfo.Add(new AdditionalInfoItem
                {
                    GroupInfo  = BitfinexConsts.TRADING_INFO_GROUP,
                    SortIndex  = 110,
                    Id         = "Initial margin",
                    NameKey    = loc.key("Initial margin"),
                    ToolTipKey = loc.key("Initial margin"),
                    DataType   = ComparingType.Double,
                    Value      = bitfinexSymbol.InitialMargin,
                    Hidden     = false
                });

                message.SymbolAdditionalInfo.Add(new AdditionalInfoItem
                {
                    GroupInfo  = BitfinexConsts.TRADING_INFO_GROUP,
                    SortIndex  = 120,
                    Id         = "Minimum margin",
                    NameKey    = loc.key("Minimum margin"),
                    ToolTipKey = loc.key("Minimum margin"),
                    DataType   = ComparingType.Double,
                    Value      = bitfinexSymbol.MinimumMargin,
                    Hidden     = false
                });
            }

            return(message);
        }