public void TestGetInstrument(string instrumentName) { var instrument = new Instrument(instrumentName, InstrumentType.Bond); _repository.AddInstrument(instrument); Assert.AreEqual(instrument, _repository.GetInstrument(instrumentName)); }
public async Task <IActionResult> GetInstrument(int id) { var items = await _repository.GetInstrument(id); var itemsDto = _mapper.Map <DtoOutputInstrumentForSingleSelect>(items); return(Ok(itemsDto)); }
public async Task <IActionResult> GetInstrument(int id) { var item = await _repo.GetInstrument(id); if (item == null) { return(NotFound()); } var itemDto = _mapper.Map <DtoInstrument>(item); return(Ok(itemDto)); }
public static async void Bash() { var stringArray = string.Empty; var symbol = "DE30"; var interval = "M1"; var instrument = await _instrumentRepository.GetInstrument(symbol); var chart = await _chartRepository.GetChartAsync(symbol, interval, 200, instrument.Precision); var quotations = chart.Quotations.Skip(chart.Quotations.Count - 120).ToList();; foreach (var item in quotations) { stringArray += $"{item.Close}/{item.Open}/{item.Low}/{item.High}/{item.Volume}/{item.Time} "; } var process = new Process { StartInfo = new ProcessStartInfo { FileName = "cmd.exe", RedirectStandardInput = true, UseShellExecute = false, RedirectStandardOutput = true, } }; process.Start(); // Pass multiple commands to cmd.exe using (var sw = process.StandardInput) { if (sw.BaseStream.CanWrite) { // Vital to activate Anaconda sw.WriteLine(@"C:\Users\pawel\Anaconda3\Scripts\activate.bat"); // Activate your environment sw.WriteLine("activate test4"); // run your script. You can also pass in arguments sw.WriteLine($@"redictNextMove.py {stringArray}"); } } while (!process.StandardOutput.EndOfStream) { var line = process.StandardOutput.ReadLine(); Console.WriteLine(line); if (line.Contains("BUY")) { await _accountRepository.MakeTransactionBuyAsync(30, 8, (double)1, instrument, "M1"); } else if (line.Contains("SELL")) { await _accountRepository.MakeTransactionSellAsync(30, 8, (double)1, instrument, "M1"); } } Console.ReadKey(); }
public async Task <ChartView> EmaView(string symbol, string interval, int candles, DateTime dateFrom, int ema) { var listModel = new List <ChartWithEma>(); var instrument = await _instrumentRepository.GetInstrument(symbol); var chart = await _chartRepository.GetChartRangeTimeAsync(symbol, interval, dateFrom, candles, instrument.Precision); var timeArray = chart.Quotations.Select(x => x.Time.ConvertDateTimeToTicks()).ToArray(); var openArray = chart.Quotations.Select(x => x.Open).ToArray(); var highArray = chart.Quotations.Select(x => x.High).ToArray(); var lowArray = chart.Quotations.Select(x => x.Low).ToArray(); var closeArray = chart.Quotations.Select(x => x.Close).ToArray(); var emasH = Indicators.EMA(closeArray, ema); listModel.AddRange(chart.Quotations.Select( x => new ChartWithEma { Time = x.Time.ConvertDateTimeToTicks(), Open = x.Open, High = x.High, Low = x.Low, Close = x.Close, })); var buyTrades = listModel.Where(x => x.TypeAction == "B").ToList(); var sellTrades = listModel.Where(x => x.TypeAction == "S").ToList(); var c = CombineArrays(timeArray, openArray, highArray, lowArray, closeArray); var series = new List <dynamic>() { CombineArrays(timeArray, openArray, highArray, lowArray, closeArray), CombineArrays(timeArray.Skip(ema).ToArray(), emasH.Skip(ema).ToArray()), }; var chartView = new ChartView { Series = series }; return(chartView); }
public async Task <InsideBarView> GetInsideBar(string symbol) { var instrument = await _instrumentRepository.GetInstrument(symbol); var chart = await _chartRepository.GetChartAsync(symbol, "D1", 10, instrument.Precision); chart.SetInsideBar(DateTime.Now.AddDays(-1)); if (chart.InsideBar != null) { return(new InsideBarView { HighInsideBar = chart.InsideBar.HighInsideBar, LowInsideBar = chart.InsideBar.LowInsideBar, HighMotherInsideBar = chart.InsideBar.HighMotherInsideBar, LowMotherInsideBar = chart.InsideBar.LowMotherInsideBar, Symbol = chart.Symbol, Side = chart.InsideBar.Side }); } return(new InsideBarView()); }
public async Task GenerateClosePriceWithVolume(string symbol, string interval) { var instrument = await _instrumentRepository.GetInstrument(symbol); var chart = await _chartRepository.GetChartMonthlyAsync(symbol, interval, 6, instrument.Precision); var maxhour = chart.Quotations.Max(x => x.Time.Hour); var minhour = chart.Quotations.Min(x => x.Time.Hour); var maxMinute = chart.Quotations.Max(x => x.Time.Minute); var minMinute = chart.Quotations.Min(x => x.Time.Minute); var maxDay = chart.Quotations.Max(x => (int)x.Time.DayOfWeek); var minDay = chart.Quotations.Min(x => (int)x.Time.DayOfWeek); using (var textWriter = new StreamWriter(@"cloePriceOhlc.csv")) { var writer = new CsvWriter(textWriter, CultureInfo.CurrentCulture); writer.Configuration.Delimiter = ","; writer.WriteField("Hour"); writer.WriteField("Minute"); writer.WriteField("Day"); writer.WriteField("Close"); writer.WriteField("Open"); writer.WriteField("Low"); writer.WriteField("High"); writer.WriteField("Volume"); writer.WriteField("Time"); writer.NextRecord(); foreach (var item in chart.Quotations) { var hourNormalization = (item.Time.Hour - minhour) / (maxhour - minhour); var minuteNormalization = (item.Time.Minute - minMinute) / (maxMinute - minMinute); var dayNormalization = ((int)item.Time.DayOfWeek - minDay) / (maxDay - minDay); writer.WriteField(hourNormalization); writer.WriteField(minuteNormalization); writer.WriteField(dayNormalization); writer.WriteField(item.Close.ToString().Replace(",", ".")); writer.WriteField(item.Open.ToString().Replace(",", ".")); writer.WriteField(item.Low.ToString().Replace(",", ".")); writer.WriteField(item.High.ToString().Replace(",", ".")); writer.WriteField(item.Volume); writer.WriteField(item.Time); writer.NextRecord(); } } using (var textWriter = new StreamWriter(@"resultsOhlc.csv")) { var writer = new CsvWriter(textWriter, CultureInfo.CurrentCulture); writer.Configuration.Delimiter = ","; writer.WriteField("Buy"); writer.WriteField("Sell"); writer.WriteField("None"); writer.WriteField("Time"); writer.NextRecord(); for (var i = 120; i < chart.Quotations.Count - 15; i++) { var futurePrices = chart.Quotations.GetRange(i, 15).Select(x => new { x.Close, x.Low, x.High }).ToArray(); var futureFirst = futurePrices.First(); var futureMin = futurePrices.Min(x => x.Low); var futureMax = futurePrices.Max(x => x.High); //bad signal high pin var badSignal = false; foreach (var item in futurePrices) { if (item.High - item.Low > 40) { badSignal = true; } } for (int j = 0; j <= futurePrices.Count() - 2; j++) { if (Math.Abs(futurePrices[j].Close - futurePrices[j + 1].Close) > 40) { badSignal = true; } } var time = chart.Quotations[i].Time; if (badSignal) { writer.WriteField(false); writer.WriteField(false); writer.WriteField(true); writer.WriteField(time); writer.NextRecord(); continue; } if (futureMax - futureFirst.High > 20 && futureFirst.Low - futureMin < 10) { writer.WriteField(true); writer.WriteField(false); writer.WriteField(false); writer.WriteField(time); writer.NextRecord(); } else if (futureFirst.Low - futureMin > 20 && futureMax - futureFirst.High < 10) { writer.WriteField(false); writer.WriteField(true); writer.WriteField(false); writer.WriteField(time); writer.NextRecord(); } else { writer.WriteField(false); writer.WriteField(false); writer.WriteField(true); writer.WriteField(time); writer.NextRecord(); } } } }
public async Task <Chart> GetChart(string symbol, string interval, int candles) { var instrument = await _instrumentRepository.GetInstrument(symbol); return(await _chartRepository.GetChartAsync(symbol, interval, candles, instrument.Precision)); }