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); }
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); }
private CoinPrediction CalculatePrediction(SymbolTransfer coin, string modelPath) { //Load model ITransformer loadedModel = LoadModel(modelPath); //Predict future price return(PredictFuturePrice(coin, loadedModel)); }
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); }
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); }
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(); } }