コード例 #1
0
        /// <summary>
        /// this pair must be confirmed with ticker or assetpairs to be valid
        /// </summary>
        /// <param name="_base"></param>
        /// <param name="_quote"></param>
        /// <returns></returns>
        public static string ToPairString(Kraken.Asset _base, Kraken.Asset _quote)
        {
            string sbase  = _base.GetEnumName();
            string squote = _quote.GetEnumName();

            if (sbase.IsNullOrEmpty() || squote.IsNullOrEmpty())
            {
                return(null);
            }

            if (Kraken.IsCurrency(_base))
            {
                sbase = "Z" + sbase;
            }
            else if (Kraken.IsCryptocurrency(_base))
            {
                sbase = "X" + sbase;
            }

            if (Kraken.IsCurrency(_quote))
            {
                squote = "Z" + squote;
            }
            else if (Kraken.IsCryptocurrency(_quote))
            {
                squote = "X" + squote;
            }

            return(sbase + squote);
        }
コード例 #2
0
        public AssetPair GetAssetPairAny(Kraken.Asset?_assetFirst, Kraken.Asset?_assetSecond)
        {
            if (_assetFirst.IsNull() || _assetSecond.IsNull() || _assetFirst.ValueEquals(_assetSecond))
            {
                return(null);
            }

            string pairFirst  = Kraken.ToPairString(_assetFirst.Value, _assetSecond.Value);
            string pairSecond = Kraken.ToPairString(_assetSecond.Value, _assetFirst.Value);


            var resultFirs = this.GetAssetPair(pairFirst);

            if (resultFirs != null)
            {
                return(resultFirs);
            }

            var resultSecond = this.GetAssetPair(pairSecond);

            if (resultSecond != null)
            {
                return(resultSecond);
            }

            return(null);
        }
コード例 #3
0
 public static bool IsCurrency(this Asset asset)
 {
     if (asset == null)
     {
         return(false);
     }
     return(Kraken.IsCurrency(asset.GetEnumName()));
 }
コード例 #4
0
        public static bool IsAsset(string value)
        {
            if (Kraken.IsCryptocurrency(value) || Kraken.IsCurrency(value))
            {
                return(true);
            }

            return(false);
        }
コード例 #5
0
        public static Currency?ToCurrency(Asset?value)
        {
            if (value == null || !value.HasValue)
            {
                return(null);
            }

            return(Kraken.ToCurrency(value.GetEnumName()));
        }
コード例 #6
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);
        }
コード例 #7
0
        public static string[] ToString(Asset[] values)
        {
            if (values == null)
            {
                return(null);
            }

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

            foreach (var a in values)
            {
                list.AddIfValueIsNotNull(Kraken.ToString(a));
            }

            return(list.ToArray());
        }
コード例 #8
0
        public static string[] ToString(Tuple <Asset, Asset>[] values, AssetToupleFormat format = AssetToupleFormat.NamesSeparated)
        {
            if (values.IsNullOrEmpty())
            {
                return(null);
            }

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

            foreach (var v in values)
            {
                list.AddIfValueIsNotNull(Kraken.ToString(v, format));
            }

            return(list.ToArray());
        }
コード例 #9
0
        /// <summary>
        /// Returns Base,Quote asset touples
        /// </summary>
        /// <param name="values"></param>
        /// <returns></returns>
        public static Tuple <Asset, Asset>[] ToAssetTouple(string[] values)
        {
            if (values.IsNullOrEmpty())
            {
                return(null);
            }

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

            foreach (string s in values)
            {
                list.AddIfValueIsNotNull(Kraken.ToAssetTouple(s));
            }

            return(list.ToArray());
        }
コード例 #10
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());
        }
コード例 #11
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());
        }
コード例 #12
0
        public static Ticker Get(this Ticker[] tickers, Kraken.Asset _base, Kraken.Asset _quote)
        {
            if (tickers == null || tickers.Length <= 0)
            {
                return(null);
            }

            string pair = Kraken.ToPairString(_base, _quote);

            foreach (Ticker ticker in tickers)
            {
                if (ticker.Name == pair)
                {
                    return(ticker);
                }
            }

            return(null);
        }
コード例 #13
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);
        }
コード例 #14
0
        public Kraken.Cryptocurrency[] AvailableCryptocurrency()
        {
            var balances = this.AvailableBalances();

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

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

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

            return(result.ToArray());
        }
コード例 #15
0
        /// <summary>
        /// Returns first pair that matches any combination of first and second asset
        /// </summary>
        /// <param name="tickers"></param>
        /// <param name="_assetFirst"></param>
        /// <param name="_assetSecond"></param>
        /// <returns></returns>
        public static Ticker GetAny(this Ticker[] tickers, Kraken.Asset?_assetFirst, Kraken.Asset?_assetSecond)
        {
            if (tickers.IsNullOrEmpty() || _assetFirst.IsNull() || _assetSecond.IsNull() || _assetFirst.ValueEquals(_assetSecond))
            {
                return(null);
            }

            string pairFirst  = Kraken.ToPairString(_assetFirst.Value, _assetSecond.Value);
            string pairSecond = Kraken.ToPairString(_assetSecond.Value, _assetFirst.Value);

            foreach (Ticker ticker in tickers)
            {
                if (ticker.Name == pairFirst || ticker.Name == pairSecond)
                {
                    return(ticker);
                }
            }

            return(null);
        }
コード例 #16
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());
        }
コード例 #17
0
        public static Currency[] ToCurrency(Asset[] values)
        {
            if (values == null)
            {
                return(null);
            }

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

            foreach (Asset a in values)
            {
                string name = a.GetEnumName();

                if (Kraken.IsCurrency(a))
                {
                    results.Add(Kraken.ToCurrency(a));
                }
            }

            return(results.ToArray());
        }
コード例 #18
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);
        }
コード例 #19
0
 public static Asset ToAsset(Cryptocurrency value)
 {
     return(Kraken.ToAsset(value.GetEnumName()).Value);
 }
コード例 #20
0
 public Kraken.Asset[] TradableAsset(Kraken.Asset?asset = null)
 {
     return(TradableAsset(Kraken.ToString(asset)));
 }
コード例 #21
0
 public Kraken.Cryptocurrency[] TradableCryptocurrency(Kraken.Asset?asset = null)
 {
     return(TradableCryptocurrency(Kraken.ToString(asset)));
 }
コード例 #22
0
 public Asset AssetInfo(string sasset)
 {
     return(AssetInfo(Kraken.ToAsset(sasset)));
 }
コード例 #23
0
 public static Currency ToCurrency(Asset value)
 {
     return(Kraken.ToCurrency(value.GetEnumName()).Value);
 }
コード例 #24
0
 public Kraken.Cryptocurrency[] TradableCryptocurrency(string _sasset)
 {
     return(Kraken.ToCryptocurrency(TradableAsset(_sasset)));
 }