コード例 #1
0
        /// <summary>
        /// Returns Base,Quote asset touple
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static Tuple <Asset, Asset> ToAssetTouple(string value)
        {
            if (value.IsNullOrWhiteSpace())
            {
                return(null);
            }

            value = value.Trim();

            if (value.Length < 6)
            {
                return(null);
            }

            string _base  = null;
            string _quote = null;


            if (value.CountChars(' ') == 1)
            {
                string[] split = value.Split(' ');
                if (split.IsNullOrEmpty() || split.Length != 2)
                {
                    return(null);
                }

                _base  = split[0];
                _quote = split[1];
            }
            else if (value.Length == 6)
            {
                _base  = value.GetFirst(3);
                _quote = value.GetLast(3);
            }
            else if (value.Length == 8)
            {
                _base  = value.GetFirst(4);
                _quote = value.GetLast(4);
            }

            var ab = Kraken.ToAsset(_base);
            var aq = Kraken.ToAsset(_quote);

            if (!ab.IsNull() && !aq.IsNull())
            {
                return(new Tuple <Asset, Asset>(ab.Value, aq.Value));
            }

            return(null);
        }
コード例 #2
0
        public static Asset[] ToAsset(string[] values)
        {
            if (values.IsNullOrEmpty())
            {
                return(null);
            }

            List <Asset> list = new List <Asset>();

            foreach (string s in values)
            {
                var a = Kraken.ToAsset(s);
                list.AddValueDistinct(a);
            }

            return(list.ToArray());
        }
コード例 #3
0
        /// <summary>
        /// Returns all available assets, if _sasset is defined, only complementary assets are returned
        /// </summary>
        /// <param name="_sasset"></param>
        /// <returns></returns>
        public Kraken.Asset[] TradableAsset(string _sasset)
        {
            if (AssetPairs == null || AssetPairs.Length <= 0)
            {
                return(null);
            }

            var _asset = Kraken.ToAsset(_sasset);

            List <Kraken.Asset> result = new List <Kraken.Asset>();

            for (int i = 0; i < AssetPairs.Length; i++)
            {
                string sbase  = AssetPairs[i].Base;
                string squote = AssetPairs[i].Quote;
                var    abase  = Kraken.ToAsset(sbase);
                var    aquote = Kraken.ToAsset(squote);

                if (abase == null || aquote == null)
                {
                    continue;
                }



                if (_asset != null && _asset.HasValue)
                {
                    if (_asset.Value == abase.Value)
                    {
                        result.Add(aquote.Value); //add quote if base is specified asset
                    }
                    else if (_asset.Value == aquote.Value)
                    {
                        result.Add(abase.Value); //add base if quote is specified asset
                    }
                }
                else
                {
                    result.Add(abase.Value);  //add base
                    result.Add(aquote.Value); //add quote
                }
            }

            return(result.Distinct().ToArray());
        }
コード例 #4
0
        public Kraken.Asset[] AvailableAssets()
        {
            var balances = this.AvailableBalances();

            if (balances.IsNullOrEmpty())
            {
                return(null);
            }

            string[]            keys   = Balances.Keys.ToArray();
            List <Kraken.Asset> result = new List <Kraken.Asset>();

            foreach (var b in balances)
            {
                result.AddIfValueIsNotNull(Kraken.ToAsset(b.AssetName));
            }

            return(result.ToArray());
        }
コード例 #5
0
        /// <summary>
        /// returns unit value (ask) of asset in units of specified currency
        /// </summary>
        /// <param name="tickers"></param>
        /// <param name="_asset"></param>
        /// <param name="_currency"></param>
        /// <returns></returns>
        public static decimal?GetValueInCurrency(this Ticker[] tickers, Kraken.Asset _asset, Kraken.Currency _currency, decimal assetAmount = 1)
        {
            if (tickers == null || tickers.Length <= 0)
            {
                return(null);
            }

            if (_asset == Kraken.ToAsset(_currency))
            {
                return(1);
            }

            if (Kraken.IsCurrency(_asset))
            {
                decimal?ask1 = tickers.GetValueInCurrency(Kraken.Asset.XBT, Kraken.ToCurrency(_asset), 1);
                decimal?ask2 = tickers.GetValueInCurrency(Kraken.Asset.XBT, _currency, 1);
                if (ask1.IsNull() || ask2.IsNull())
                {
                    return(null);
                }

                return((decimal)ask2.Value / ask1.Value);
            }

            Kraken.Asset acurrency = Kraken.ToAsset(_currency);
            Ticker       ticker    = tickers.GetAny(_asset, acurrency);

            if (ticker == null)
            {
                return(null);
            }

            if (ticker.IsBase(_asset) && ticker.IsQuote(acurrency))
            {
                return(ticker.Ask[0] * assetAmount);
            }
            else if (ticker.IsBase(acurrency) && ticker.IsQuote(_asset))
            {
                return(((decimal)1 / ticker.Ask[0]) * assetAmount);
            }

            return(null);
        }
コード例 #6
0
        public static Asset[] ToAsset(Cryptocurrency[] values)
        {
            if (values == null)
            {
                return(null);
            }

            List <Asset> results = new List <Asset>();

            foreach (Cryptocurrency cc in values)
            {
                var asset = Kraken.ToAsset(cc.GetEnumName());
                if (asset != null && asset.HasValue)
                {
                    results.Add(asset.Value);
                }
            }

            return(results.ToArray());
        }
コード例 #7
0
        public Asset AssetInfo(Kraken.Asset?asset)
        {
            if (asset == null || !asset.HasValue || AssetInfos == null || AssetInfos.Length <= 0)
            {
                return(null);
            }

            for (int i = 0; i < AssetInfos.Length; i++)
            {
                Kraken.Asset?name = Kraken.ToAsset(AssetInfos[i].Name);

                if (name == null || !name.HasValue || name.Value != asset.Value)
                {
                    continue;
                }

                return(AssetInfos[i]);
            }

            return(null);
        }
コード例 #8
0
 public Asset AssetInfo(string sasset)
 {
     return(AssetInfo(Kraken.ToAsset(sasset)));
 }
コード例 #9
0
 public static Asset ToAsset(Cryptocurrency value)
 {
     return(Kraken.ToAsset(value.GetEnumName()).Value);
 }