Пример #1
0
        public List <PredictionTransfer> GetPrediction(string symbol, SymbolTransfer coinTicker)
        {
            List <PredictionTransfer> predictionList = new List <PredictionTransfer>();

            //1 - List models available for symbol
            var symbolPair    = Helper.GetSymbolPair(symbol);
            var rootFolder    = Environment.CurrentDirectory + "/aiModel/" + symbolPair + "/";
            var modelPathList = Directory.GetFiles(rootFolder, symbol + "*", SearchOption.AllDirectories);

            if (modelPathList.Length == 0)
            {
                return(predictionList);
            }

            //3 - Iterate throw model and fire prediction
            foreach (var modelPath in modelPathList)
            {
                PredictionTransfer prediction = new PredictionTransfer();

                var fromIndex = Path.GetFileName(modelPath).IndexOf("-") + 1;
                var toIndex   = Path.GetFileName(modelPath).Length - fromIndex - 4;
                prediction.ModelName = Path.GetFileName(modelPath).Substring(fromIndex, toIndex);

                prediction.FuturePrice = Math.Round(CalculatePrediction(coinTicker, modelPath).FuturePrice, 2);
                predictionList.Add(prediction);
            }

            return(predictionList);
        }
Пример #2
0
        public SymbolTransfer GetSymbolData(string symbol, string interval)
        {
            string apiUrl = string.Format("https://api.binance.com/api/v1/ticker/24hr?symbol={0}", symbol);

            //Get data from Binance API
            SymbolTransfer coin = HttpHelper.GetApiData <SymbolTransfer>(new Uri(apiUrl));

            //Add indicator RSI / MACD
            QuotationTransfer ct = GetIndicator(symbol, "1d");

            coin.Rsi      = ct.Rsi;
            coin.Macd     = ct.Macd;
            coin.MacdSign = ct.MacdSign;
            coin.MacdHist = ct.MacdHist;

            //Add Prediction sub list
            AIController aiController = new AIController();

            coin.Prediction = aiController.GetPrediction(symbol, coin);

            //Add short symbol
            Misc.Helper.ShortenSymbol(ref coin);

            return(coin);
        }
Пример #3
0
        private CoinPrediction CalculatePrediction(SymbolTransfer coin, string modelPath)
        {
            //Load model
            ITransformer loadedModel = LoadModel(modelPath);

            //Predict future price
            return(PredictFuturePrice(coin, loadedModel));
        }
Пример #4
0
        private static CoinPrediction PredictFuturePrice(SymbolTransfer coin, ITransformer model)
        {
            MLContext      mlContext          = new MLContext();
            var            predictionFunction = mlContext.Model.CreatePredictionEngine <CoinData, CoinPrediction>(model);
            CoinPrediction prediction         = predictionFunction.Predict(new CoinData
            {
                Volume   = (float)coin.Volume,
                Open     = (float)coin.OpenPrice,
                Rsi      = (float)coin.Rsi,
                MacdHist = (float)coin.MacdHist,
            });

            return(prediction);
        }
Пример #5
0
        private bool GetTopIndicator(SymbolTransfer symbolTransfer)
        {
            symbolTransfer.Prediction = new List <PredictionTransfer>();
            QuotationTransfer ct = GetIndicator(symbolTransfer.Symbol, "1d");

            symbolTransfer.Rsi      = ct.Rsi;
            symbolTransfer.Macd     = ct.Macd;
            symbolTransfer.MacdSign = ct.MacdSign;
            symbolTransfer.MacdHist = ct.MacdHist;
            symbolTransfer.Prediction.Add(new PredictionTransfer()
            {
                FuturePrice = ct.FuturePrice
            });
            return(true);
        }
Пример #6
0
        public static void ShortenSymbol(ref SymbolTransfer symbol)
        {
            symbol.SymbolShort = symbol.Symbol;

            if (symbol.Symbol.Substring(symbol.Symbol.Length - 3) == BaseMarket.ETH.ToString())
            {
                symbol.SymbolShort = symbol.Symbol.Substring(0, symbol.Symbol.Length - 3) + "/" + BaseMarket.ETH.ToString();
            }

            if (symbol.Symbol.Substring(symbol.Symbol.Length - 3) == BaseMarket.BNB.ToString())
            {
                symbol.SymbolShort = symbol.Symbol.Substring(0, symbol.Symbol.Length - 3) + "/" + BaseMarket.BNB.ToString();
            }
            if (symbol.Symbol.Substring(symbol.Symbol.Length - 3) == BaseMarket.BTC.ToString())
            {
                symbol.SymbolShort = symbol.Symbol.Substring(0, symbol.Symbol.Length - 3) + "/" + BaseMarket.BTC.ToString();
            }
            if (symbol.Symbol.Substring(symbol.Symbol.Length - 4) == BaseMarket.USDT.ToString())
            {
                symbol.SymbolShort = symbol.Symbol.Substring(0, symbol.Symbol.Length - 4) + "/" + BaseMarket.USDT.ToString();
            }
        }