/// <summary>
        /// scope= get:arbitrage
        /// cmd= 'get arbit @p0'.
        /// @p0 parameter for desired currency
        /// </summary>
        /// <returns></returns>
        public override async Task GetArbitrage()
        {
            int parameterCount = 1;

            var parameterSet = new List <CommandParameter>
            {
                new CommandParameter
                {
                    Depth          = 2,
                    ParameterValue = Parameters[0].ToLower(),
                    ParameterSet   = new List <string>
                    {
                        "eth",
                        "btc",
                        "xrp",
                        "ltc",
                        "all"
                    }
                }
            };

            var validateResp = ValidateParameters(parameterSet, parameterCount);

            if (validateResp.ResponseCode != ResponseCode.Success)
            {
                var errorMessage = GetSlackExecutionErrorMessage(validateResp.ResponseData);

                if (validateResp.ResponseData == 2 && Parameters[0].ToLower() != "all")
                {
                    //post depth=2 message => Given crypto currency either not found or not supported.
                    errorMessage.text = string.Format(errorMessage.text, Parameters[0], "Eth, Btc, Ltc, Xrp");
                }

                await PostMessage(errorMessage);

                return;
            }

            var currency = Statics.GetCurrency(Parameters[0]);

            //get crypto currencies by currency
            var cryptoCurrencies = GetCryptoCurrencies(currency);

            var successMessage = SlackMessageGenerator.GetArbitrageMessage(cryptoCurrencies, currency);

            await PostMessage(GetSlackExecutionSuccessMessage(successMessage));
        }