private IEnumerable <(TimeSeries, Color)> GetIndicators() { CandleTimeSeries series = Context.Instance.HistoryCandleTimeSeries.Candles .ToCandleTimeSeries(); return(UtilsPresenter.GetIndicators(series, view.IndicatorPeriod, view.SmoothingPeriod)); }
public Tendency Classify(DateTime day, CandleTimeSeries series) { AverageDirectionalMovementIndex adx = AverageDirectionalMovementIndex.Create(directionalIndexPeriod, averagePeriod); double adxValue = adx.GetValueAt(series, day.Date); double adxSlope = 0; DateTime previousDay = day.Date.Subtract(TimeSpan.FromDays(1)); bool containsPreviousDayCandle = series.ContainsCandleAt(previousDay); if (containsPreviousDayCandle) { double previousDayAdxValue = adx.GetValueAt(series, previousDay); adxSlope = (adxValue - previousDayAdxValue) / 1; } DirectionalMovementPlus diPlus = DirectionalMovementPlus.Create(); double diPlusValue = diPlus.GetValueAt(series, day.Date); DirectionalMovementMinus diMinus = DirectionalMovementMinus.Create(); double diMinusValue = diMinus.GetValueAt(series, day.Date); if (adxValue >= adxMinimumValue && adxSlope >= 0) { return(diPlusValue > diMinusValue ? Tendency.Up : Tendency.Down); } return(Tendency.Range); }
private void View_LoadDataRequest() { CandleTimeSeries data = GetCandleTimeSeries(); IEnumerable <(TimeSeries, Color)> indicators = GetIndicators(); view.LoadData(data, indicators); }
public PriceVariationAdxSustainedSlopeMaxProvider(CandleTimeSeries candleSeries, TimeSeries dx, TimeSeries adx, TimeSeries diPlus, TimeSeries diMinus) { this.candleSeries = candleSeries; this.dx = dx; this.adx = adx; this.diPlus = diPlus; this.diMinus = diMinus; }
public Trader(IWallet wallet, IBroker broker, List <IStrategy> strategies, CandleTimeSeries series, TimeSpan workPeriod) { this.wallet = wallet; this.broker = broker; this.strategies = strategies; this.series = series; this.workPeriod = workPeriod; }
public BenefitFollowingStrategyProvider(CandleTimeSeries series, TimeSeries dx, TimeSeries adx, TimeSeries diPlus, TimeSeries diMinus) { this.series = series; this.dx = dx; this.adx = adx; this.diPlus = diPlus; this.diMinus = diMinus; }
public CandleQuantityAdxSustainedSlopeDataProvider(CandleTimeSeries series, TimeSeries dx, TimeSeries adx, TimeSeries diPlus, TimeSeries diMinus) { this.series = series; this.dx = dx; this.adx = adx; this.diPlus = diPlus; this.diMinus = diMinus; }
private void updateLevels(CandleTimeSeries series) { var last = series.DataReveresed.First(); var fp = series.Data.First().ClosePrice; var lp = last.ClosePrice; var mp = (fp + lp) / 2f; series.YLevels["FIRST_PRICE"].Value = fp; series.YLevels["MID_PRICE"].Value = mp; series.YLevels["LAST_PRICE"].Value = lp; }
private IEnumerable <DailyClassification> DoAnalysis(IDailyClassificationMethod method) { CandleTimeSeries series = Context.Instance.HistoryCandleTimeSeries; IEnumerable <DailyClassification> classifications = series.Candles .Where(candle => candle.Start >= view.GetStartDay() && candle.Start <= view.GetEndDay()) .Select(candle => new DailyClassification(candle: candle, classification: method.Classify(candle.Start.Date, series))); return(classifications); }
private void btnConnect_Click(object sender, EventArgs e) { m_Data = new CandleTimeSeries("My data", 0); // m_Data.MaxSamples = 10; var sd = DateTime.Now.AddSeconds(-500); var samples = CandleSample.GenerateRandom(300, sd, 1000, 10, 20, 8, 120.0f); samples.ForEach( s => m_Data.Add(s) ); m_Data.Views.Register( new CandleView("Candles", 0)); m_Data.Views.Register( new CandleMidLineView("MidLineHiLo", 1) { MidLineType = MidLineType.HighLow, LineStyle = new LineStyle{ Color = Color.FromArgb(200, 255, 0,0), Width = 2} }); m_Data.Views.Register( new CandleMidLineView("MidLineOpCl1", 2) { MidLineType = MidLineType.OpenClose, LineStyle = new LineStyle{ Color = Color.FromArgb(200, 50, 0, 200), Width = 1.5f, DashStyle = System.Drawing.Drawing2D.DashStyle.Dot} }); m_Data.Views.Register( new CandleView("Candles2", 0, "MLPane"){ BlackWhite = true }); m_Data.Views.Register( new CandleMidLineView("MidLineOpCl2", 1, "MLPane") { MidLineType = MidLineType.OpenClose, LineStyle = new LineStyle{ Color = Color.FromArgb(200, 255, 180, 0), Width = 3f} }); // m_Data.Views.Register( new CandleView("Avg1", 0, "Another Pane0")); // m_Data.Views.Register( new CandleView("Avg2", 0, "Another Pane1")); //m_Data.Views.Register( new CandleView("Avg3", 0, "Another Pane2")); //m_Data.Views.Register( new CandleView("Avg4", 0, "Another Pane3")); //m_Data.Views.Register( new CandleView("Avg5", 0, "Another Pane4")); //m_Data.Views.Register( new CandleView("Avg6", 0, "Another Pane5")); chart.Series = m_Data; }
public static IEnumerable <(TimeSeries, Color)> GetIndicators(CandleTimeSeries series , int indicatorPeriod , int smoothingPeriod , DateTime?startDate = null) { if (startDate == null) { startDate = series.Candles.Min(candle => candle.Start); } DirectionalIndicatorPlus diPlus = DirectionalIndicatorPlus.Create(indicatorPeriod); TimeSeries diPlusSeries = series.Candles .Where((candle, index) => index > 0 && candle.Start >= startDate) .Select(candle => new DateValue(candle.Start, diPlus[series, candle.Start])) .ToTimeSeries(DiPlusIndicatorName); yield return(diPlusSeries, Color.Blue); DirectionalIndicatorMinus diMinus = DirectionalIndicatorMinus.Create(indicatorPeriod); TimeSeries diMinusSeries = series.Candles .Where((candle, index) => index > 0 && candle.Start >= startDate) .Select(candle => new DateValue(candle.Start, diMinus[series, candle.Start])) .ToTimeSeries(DiMinusIndicatorName); yield return(diMinusSeries, Color.Red); DirectionalMovementIndex dx = DirectionalMovementIndex.Create(indicatorPeriod); TimeSeries dxSeries = series.Candles .Where((candle, index) => index > 0 && candle.Start >= startDate) .Select(candle => new DateValue(candle.Start, dx[series, candle.Start])) .ToTimeSeries(DxIndicatorName); yield return(dxSeries, Color.DarkSlateGray); AverageDirectionalMovementIndex adx = AverageDirectionalMovementIndex.Create(indicatorPeriod, smoothingPeriod); TimeSeries adxSeries = series.Candles .Where((candle, index) => index > 0 && candle.Start >= startDate) .Select(candle => new DateValue(candle.Start, adx[series, candle.Start])) .ToTimeSeries(AdxIndicatorName); yield return(adxSeries, Color.DarkGray); }
private void reset() { m_SD = DateTime.UtcNow; // m_stat_TotalCalls = 0; m_Data = new CandleTimeSeries("Throughput", 0); m_Data.Views.Register(new CandleView("Candles", 0)); //m_Data.Views.Register( // new CandleMidLineView("MidLineHiLo", 1) // { // MidLineType = MidLineType.OpenClose, // LineStyle = new LineStyle{ Color = Color.FromArgb(200, 255, 0,0), Width = 1} // }); chart.Series = m_Data; }
public void LoadData(CandleTimeSeries candleSeries, IEnumerable <TimeSeries> indicators) { Dictionary <string, TimeSeries> inds = indicators .ToDictionary(i => i.Name); diPlus = inds[UtilsPresenter.DiPlusIndicatorName]; diMinus = inds[UtilsPresenter.DiMinusIndicatorName]; adx = inds[UtilsPresenter.AdxIndicatorName]; dx = inds[UtilsPresenter.DxIndicatorName]; series = candleSeries; DataTable table = GetStatistics(); view.LoadData(table); }
private void btnConnect_Click(object sender, EventArgs e) { if (m_Data != null) { return; } m_Data = new CandleTimeSeries("My data", 0); var sd = DateTime.Now.AddSeconds(-500); var op = 120.11f; var cp = 123.23f; var hp = 200.92f; var lp = 110.11f; for (var i = 0; i < 150; i++) { m_Data.Add( new CandleSample(sd) { OpenPrice = op, ClosePrice = cp, HighPrice = hp, LowPrice = lp, BuyVolume = 23, SellVolume = 8 }); op += ExternalRandomGenerator.Instance.NextScaledRandomInteger(-2, +2); cp += ExternalRandomGenerator.Instance.NextScaledRandomInteger(-2, +2); hp += ExternalRandomGenerator.Instance.NextScaledRandomInteger(-2, +2); lp += ExternalRandomGenerator.Instance.NextScaledRandomInteger(-2, +2); sd = sd.AddSeconds(1); } m_Data.Views.Register(new CandleView("Candles", 0)); m_Data.Views.Register(new CandleView("Avg1", 0, "Another Pane0")); m_Data.Views.Register(new CandleView("Avg2", 0, "Another Pane1")); //m_Data.Views.Register( new CandleView("Avg3", 0, "Another Pane2")); //m_Data.Views.Register( new CandleView("Avg4", 0, "Another Pane3")); //m_Data.Views.Register( new CandleView("Avg5", 0, "Another Pane4")); //m_Data.Views.Register( new CandleView("Avg6", 0, "Another Pane5")); chart.Series = m_Data; }
private void btnConnect_Click(object sender, EventArgs e) { if (m_Data!=null) return; m_Data = new CandleTimeSeries("My data", 0); var sd = DateTime.Now.AddSeconds(-500); var op = 120.11f; var cp = 123.23f; var hp = 200.92f; var lp = 110.11f; for (var i=0; i<150; i++) { m_Data.Add( new CandleSample( sd ) { OpenPrice = op, ClosePrice = cp, HighPrice=hp, LowPrice=lp, BuyVolume=23, SellVolume=8 }); op += ExternalRandomGenerator.Instance.NextScaledRandomInteger(-2, +2); cp += ExternalRandomGenerator.Instance.NextScaledRandomInteger(-2, +2); hp += ExternalRandomGenerator.Instance.NextScaledRandomInteger(-2, +2); lp += ExternalRandomGenerator.Instance.NextScaledRandomInteger(-2, +2); sd = sd.AddSeconds(1); } m_Data.Views.Register( new CandleView("Candles", 0)); m_Data.Views.Register( new CandleView("Avg1", 0, "Another Pane0")); m_Data.Views.Register( new CandleView("Avg2", 0, "Another Pane1")); //m_Data.Views.Register( new CandleView("Avg3", 0, "Another Pane2")); //m_Data.Views.Register( new CandleView("Avg4", 0, "Another Pane3")); //m_Data.Views.Register( new CandleView("Avg5", 0, "Another Pane4")); //m_Data.Views.Register( new CandleView("Avg6", 0, "Another Pane5")); chart.Series = m_Data; }
public Tendency Classify(DateTime day, CandleTimeSeries candleSeries) { TimeSeries series = GetTimeSeries(candleSeries); DateTime dayBefore = day.AddDays(-1); double slowMaValue = series.GetExponentialMovingAverageAt(dayBefore, slowMovingAveragePeriod); double mediumMaValue = series.GetExponentialMovingAverageAt(dayBefore, mediumMovingAveragePeriod); double fastMaValue = series.GetExponentialMovingAverageAt(dayBefore, fastMovingAveragePeriod); List <double> values = new List <double> { slowMaValue, mediumMaValue, fastMaValue }; if (values.IsSorted()) { return(Tendency.Up); } return(values.IsDescendantlySorted() ? Tendency.Down : Tendency.Range); }
private void LoadSeriesIndicators( AdxInputsPresenter adxInputsPresenter, MovingAverageInputsPresenter movingAverageInputsPresenter, SeriesIndicatorPresenter seriesPresenter) { if (view.SelectedDay == DateTime.MinValue) { return; } CandleTimeSeries series = Context.Instance.HistoryCandleTimeSeries.Candles .Where(candle => candle.Start >= view.SelectedDay.Date.AddMonths(-3) && candle.Start <= view.SelectedDay.Date) .ToCandleTimeSeries(); IEnumerable <(TimeSeries, Color)> indicators = UtilsPresenter.GetIndicators( series: Context.Instance.HistoryCandleTimeSeries, indicatorPeriod: adxInputsPresenter.GetDxPeriod(), smoothingPeriod: adxInputsPresenter.GetMovingAveragePeriod()); TimeSeries timeSeries = series.Candles .Select(candle => new DateValue(candle.Start, candle.Close)) .ToTimeSeries(); TimeSeries slowMovingAverage = timeSeries .GetExponentialMovingAverage(movingAverageInputsPresenter.SlowMovingAveragePeriod) .ToTimeSeries("Slow MA"); TimeSeries mediumMovingAverage = timeSeries .GetExponentialMovingAverage(movingAverageInputsPresenter.MediumMovingAveragePeriod) .ToTimeSeries("Medium MA"); TimeSeries fastMovingAverage = timeSeries .GetExponentialMovingAverage(movingAverageInputsPresenter.FastMovingAveragePeriod) .ToTimeSeries("Fast MA"); seriesPresenter.LoadData( series: series, indicators: indicators, slowMovingAverage: slowMovingAverage, mediumMovingAverage: mediumMovingAverage, fastMovingAverage: fastMovingAverage ); }
private void btnSynthCandles_Click(object sender, EventArgs e) { using(var fs = new LocalFileSystem()) { var sdb = new SecDBFileReader(fs, new FileSystemSessionConnectParams(), tbSecDBFile.Text); //var tradedata = sdb.GetAllStreamData() // .Where( s => s is SecDBFileReader.TradeSample) // .Cast<SecDBFileReader.TradeSample>() // .Select( t => new CandleSample(t.TimeStamp) // { // OpenPrice = t.Price, // ClosePrice = t.Price, // HighPrice = t.Price, // LowPrice = t.Price // } // ); var data = sdb.GetAllStreamData().Where(s => s is SecDBFileReader.TradeSample).SynthesizeCandles(tbSecPeriod.Text.AsUInt(), (cs, qs, i) => {}, (cs, ts, i) => // "Beautifier function" { if (i==0) cs.OpenPrice = ts.Price; cs.HighPrice = Math.Max(cs.HighPrice, ts.Price); cs.LowPrice = cs.LowPrice!=0f ? Math.Min( cs.LowPrice , ts.Price) : ts.Price; cs.ClosePrice = ts.Price; if (ts.IsQty) { if (ts.Side==SecDBFileReader.TradeSample.SideType.Buy) cs.BuyVolume += ts.Qty; else cs.SellVolume += ts.Qty; } } ); m_Data = new CandleTimeSeries("Candles", 0); m_Data.Views.Register( new CandleView("Candle View", 1) { ShowYLevels = true, ShowBalloons = true }); //m_Data.Views.Register( // new CandleMidLineView("MidLineHiLo", 1) // { // MidLineType = MidLineType.HighLow, // LineStyle = new LineStyle{ Color = Color.FromArgb(200, 255, 0,0), Width = 2} // }); m_Data.Views.Register( new CandleBuySellView("BuySell", 2){} ); data.ForEach( s => m_Data.Add( s )); m_Data.YLevels.Register( new TimeSeries.YLevel("Lo", 0){Value = m_Data.Data.Min(cs=>cs.ClosePrice), AffectsScale = true, HLineStyle = new LineStyle{Color=Color.Red, Width =2}}); m_Data.YLevels.Register( new TimeSeries.YLevel("Hi", 0){Value = m_Data.Data.Max(cs=>cs.ClosePrice), AffectsScale = true, HLineStyle = new LineStyle{Color=Color.Blue, Width =2}}); chart.Series = m_Data; } }
public CandleQuantityProvider(CandleTimeSeries series) { this.series = series; }
private void btnLoadSecDB_Click(object sender, EventArgs e) { using(var fs = new LocalFileSystem()) { var sdb = new SecDBFileReader(fs, new FileSystemSessionConnectParams(), tbSecDBFile.Text); Text = "Exchange: {0}, Origin time: {1}, {2}".Args(sdb.SystemHeader.Exchange, sdb.SystemHeader.Date+sdb.SystemHeader.OriginLocalTimeOffset, sdb.SystemHeader.OriginLocalTimeName); MessageBox.Show( sdb.Headers.ToJSON() ); m_Data = new CandleTimeSeries("From file", 0); m_Data.YLevels.Register( new TimeSeries.YLevel("LAST_PRICE", 0){Value = 0f});//, HLineStyle = new LineStyle{Color=Color.Red}}); m_Data.Views.Register( new CandleView("Candles", 0){ ShowYLevels = true, ShowBalloons = true } ); m_Data.Views.Register( new CandleBuySellView("BuySell", 0){} ); m_Data.Views.Register( new CandleMidLineView("MidLineHiLo", 1) { MidLineType = MidLineType.HighLow, LineStyle = new LineStyle{ Color = Color.FromArgb(200, 255, 0,0), Width = 2} }); m_Data.Views.Register( new CandleMidLineView("MidLineOpCl1", 2) { MidLineType = MidLineType.OpenClose, LineStyle = new LineStyle{ Color = Color.FromArgb(200, 50, 0, 200), Width = 1.5f, DashStyle = System.Drawing.Drawing2D.DashStyle.Dot} }); m_Data.MaxSamples = 100000; var data = sdb.GetCandleDataAsCandleSamples( sdb.CandlesMetadata.Resolutions.Min() ); data.ForEach( s => m_Data.Add( s )); m_Data.YLevels["LAST_PRICE"].Value = m_Data.DataReveresed.First().ClosePrice; m_Data.YLevels.Register( new TimeSeries.YLevel("Lo", 0){Value = m_Data.Data.Min(cs=>cs.LowPrice), AffectsScale = false, HLineStyle = new LineStyle{Color=Color.Red, Width =2}}); m_Data.YLevels.Register( new TimeSeries.YLevel("Hi", 0){Value = m_Data.Data.Max(cs=>cs.HighPrice), AffectsScale = false, HLineStyle = new LineStyle{Color=Color.Blue, Width =2}}); m_Data.Views.Register( new CandleView("Candles2", 0, "MLPane"){ BlackWhite = true, ShowBalloons = true}); m_Data.Views.Register( new CandleMidLineView("MidLineOpCl2", 1, "MLPane") { MidLineType = MidLineType.OpenClose, ShowYLevels = true, LineStyle = new LineStyle{ Color = Color.FromArgb(200, 255, 180, 0), Width = 3f} }); chart.Series = m_Data; //chart.NotifySeriesChange(); } }
private void loadData() { if (m_SecDBFile==null) { chart.Series = null; return; } var series = new CandleTimeSeries("Candles", 0); m_OriginalDataFromFile = m_SecDBFile.GetAllStreamData() .SynthesizeCandles(m_SecResolution) .ToArray(); m_OriginalDataFromFile.ForEach( s => series.Add( s )); series.Views.Register( new CandleView("Candles", 1) { ShowYLevels = true, ShowBalloons = true }); series.Views.Register( new CandleBuySellView("Volume", 2) { Visible = chkVolumes.Checked, Kind = getVolumeKind() } ); series.Views.Register( new CandleMidLineView("MidLine", 3) { MidLineType = MidLineType.HighLow, LineStyle = new LineStyle{ Color = Color.FromArgb(200, 255, 0,0), Width = 2}, Visible = chkMidLines.Checked }); series.YLevels.Register( new TimeSeries.YLevel("FIRST_PRICE", 1) { Visible = chkMidLevels.Checked, HLineStyle = new LineStyle{ Color = Color.FromArgb(255, 20, 10), DashStyle = System.Drawing.Drawing2D.DashStyle.Dash} }); series.YLevels.Register( new TimeSeries.YLevel("MID_PRICE", 2) { Visible = chkMidLevels.Checked, HLineStyle = new LineStyle{ Color = Color.FromArgb(0, 180, 80), DashStyle = System.Drawing.Drawing2D.DashStyle.Dot} }); series.YLevels.Register( new TimeSeries.YLevel("LAST_PRICE", 3) { Value = series.DataReveresed.First().ClosePrice, HLineStyle = new LineStyle{ Color = Color.FromArgb(120, 40, 255), DashStyle = System.Drawing.Drawing2D.DashStyle.Dash} }); updateLevels(series); chart.Series = series; }
public CandleBodyStandardDeviationProvider(CandleTimeSeries series) { this.series = series; }
private void btnSynthCandles_Click(object sender, EventArgs e) { using (var fs = new LocalFileSystem()) { var sdb = new SecDBFileReader(fs, new FileSystemSessionConnectParams(), tbSecDBFile.Text); //var tradedata = sdb.GetAllStreamData() // .Where( s => s is SecDBFileReader.TradeSample) // .Cast<SecDBFileReader.TradeSample>() // .Select( t => new CandleSample(t.TimeStamp) // { // OpenPrice = t.Price, // ClosePrice = t.Price, // HighPrice = t.Price, // LowPrice = t.Price // } // ); var data = sdb.GetAllStreamData().Where(s => s is SecDBFileReader.TradeSample).SynthesizeCandles(tbSecPeriod.Text.AsUInt(), (cs, qs, i) => {}, (cs, ts, i) => // "Beautifier function" { if (i == 0) { cs.OpenPrice = ts.Price; } cs.HighPrice = Math.Max(cs.HighPrice, ts.Price); cs.LowPrice = cs.LowPrice != 0f ? Math.Min(cs.LowPrice, ts.Price) : ts.Price; cs.ClosePrice = ts.Price; if (ts.IsQty) { if (ts.Side == SecDBFileReader.TradeSample.SideType.Buy) { cs.BuyVolume += ts.Qty; } else { cs.SellVolume += ts.Qty; } } } ); m_Data = new CandleTimeSeries("Candles", 0); m_Data.Views.Register( new CandleView("Candle View", 1) { ShowYLevels = true, ShowBalloons = true }); //m_Data.Views.Register( // new CandleMidLineView("MidLineHiLo", 1) // { // MidLineType = MidLineType.HighLow, // LineStyle = new LineStyle{ Color = Color.FromArgb(200, 255, 0,0), Width = 2} // }); m_Data.Views.Register(new CandleBuySellView("BuySell", 2) { }); data.ForEach(s => m_Data.Add(s)); m_Data.YLevels.Register(new TimeSeries.YLevel("Lo", 0) { Value = m_Data.Data.Min(cs => cs.ClosePrice), AffectsScale = true, HLineStyle = new LineStyle { Color = Color.Red, Width = 2 } }); m_Data.YLevels.Register(new TimeSeries.YLevel("Hi", 0) { Value = m_Data.Data.Max(cs => cs.ClosePrice), AffectsScale = true, HLineStyle = new LineStyle { Color = Color.Blue, Width = 2 } }); chart.Series = m_Data; } }
public CandleBodyAverageProvider(CandleTimeSeries s) { series = s; }
public ITransaction GetTradeInfo(CandleTimeSeries series, DateTime date) { return(f(series, date)); }
private TimeSeries GetTimeSeries(CandleTimeSeries series) => series.Candles .Select(candle => new DateValue(candle.Start, candle.Close)) .ToTimeSeries();
public CandleBodyDataProvider(CandleTimeSeries series) { this.series = series; }
public double this[CandleTimeSeries series, DateTime date] => GetValueAt(series, date);
public double GetValueAt(CandleTimeSeries series, DateTime date) { return f(series, date); }
public void LoadData( CandleTimeSeries series, IEnumerable <(TimeSeries, Color)> indicators,
private void updateLevels(CandleTimeSeries series) { var last = series.DataReveresed.First(); var fp = series.Data.First().ClosePrice; var lp = last.ClosePrice; var mp = (fp + lp) / 2f; series.YLevels["FIRST_PRICE"].Value = fp; series.YLevels["MID_PRICE"].Value = mp; series.YLevels["LAST_PRICE"].Value = lp; }
private void btnLoadSecDB_Click(object sender, EventArgs e) { using (var fs = new LocalFileSystem()) { var sdb = new SecDBFileReader(fs, new FileSystemSessionConnectParams(), tbSecDBFile.Text); Text = "Exchange: {0}, Origin time: {1}, {2}".Args(sdb.SystemHeader.Exchange, sdb.SystemHeader.Date + sdb.SystemHeader.OriginLocalTimeOffset, sdb.SystemHeader.OriginLocalTimeName); MessageBox.Show(sdb.Headers.ToJSON()); m_Data = new CandleTimeSeries("From file", 0); m_Data.YLevels.Register(new TimeSeries.YLevel("LAST_PRICE", 0) { Value = 0f }); //, HLineStyle = new LineStyle{Color=Color.Red}}); m_Data.Views.Register(new CandleView("Candles", 0) { ShowYLevels = true, ShowBalloons = true }); m_Data.Views.Register(new CandleBuySellView("BuySell", 0) { }); m_Data.Views.Register( new CandleMidLineView("MidLineHiLo", 1) { MidLineType = MidLineType.HighLow, LineStyle = new LineStyle { Color = Color.FromArgb(200, 255, 0, 0), Width = 2 } }); m_Data.Views.Register( new CandleMidLineView("MidLineOpCl1", 2) { MidLineType = MidLineType.OpenClose, LineStyle = new LineStyle { Color = Color.FromArgb(200, 50, 0, 200), Width = 1.5f, DashStyle = System.Drawing.Drawing2D.DashStyle.Dot } }); m_Data.MaxSamples = 100000; var data = sdb.GetCandleDataAsCandleSamples(sdb.CandlesMetadata.Resolutions.Min()); data.ForEach(s => m_Data.Add(s)); m_Data.YLevels["LAST_PRICE"].Value = m_Data.DataReveresed.First().ClosePrice; m_Data.YLevels.Register(new TimeSeries.YLevel("Lo", 0) { Value = m_Data.Data.Min(cs => cs.LowPrice), AffectsScale = false, HLineStyle = new LineStyle { Color = Color.Red, Width = 2 } }); m_Data.YLevels.Register(new TimeSeries.YLevel("Hi", 0) { Value = m_Data.Data.Max(cs => cs.HighPrice), AffectsScale = false, HLineStyle = new LineStyle { Color = Color.Blue, Width = 2 } }); m_Data.Views.Register(new CandleView("Candles2", 0, "MLPane") { BlackWhite = true, ShowBalloons = true }); m_Data.Views.Register( new CandleMidLineView("MidLineOpCl2", 1, "MLPane") { MidLineType = MidLineType.OpenClose, ShowYLevels = true, LineStyle = new LineStyle { Color = Color.FromArgb(200, 255, 180, 0), Width = 3f } }); chart.Series = m_Data; //chart.NotifySeriesChange(); } }
private IEnumerable<CandleSample> getDataPerScroll(CandleTimeSeries cdata) { return cdata.Data;//todo SKIP depending on scroll bar position }
private void btnConnect_Click(object sender, EventArgs e) { m_Data = new CandleTimeSeries("My data", 0); // m_Data.MaxSamples = 10; var sd = DateTime.Now.AddSeconds(-500); var samples = CandleSample.GenerateRandom(300, sd, 1000, 10, 20, 8, 120.0f); samples.ForEach(s => m_Data.Add(s)); m_Data.Views.Register(new CandleView("Candles", 0)); m_Data.Views.Register( new CandleMidLineView("MidLineHiLo", 1) { MidLineType = MidLineType.HighLow, LineStyle = new LineStyle { Color = Color.FromArgb(200, 255, 0, 0), Width = 2 } }); m_Data.Views.Register( new CandleMidLineView("MidLineOpCl1", 2) { MidLineType = MidLineType.OpenClose, LineStyle = new LineStyle { Color = Color.FromArgb(200, 50, 0, 200), Width = 1.5f, DashStyle = System.Drawing.Drawing2D.DashStyle.Dot } }); m_Data.Views.Register(new CandleView("Candles2", 0, "MLPane") { BlackWhite = true }); m_Data.Views.Register( new CandleMidLineView("MidLineOpCl2", 1, "MLPane") { MidLineType = MidLineType.OpenClose, LineStyle = new LineStyle { Color = Color.FromArgb(200, 255, 180, 0), Width = 3f } }); // m_Data.Views.Register( new CandleView("Avg1", 0, "Another Pane0")); // m_Data.Views.Register( new CandleView("Avg2", 0, "Another Pane1")); //m_Data.Views.Register( new CandleView("Avg3", 0, "Another Pane2")); //m_Data.Views.Register( new CandleView("Avg4", 0, "Another Pane3")); //m_Data.Views.Register( new CandleView("Avg5", 0, "Another Pane4")); //m_Data.Views.Register( new CandleView("Avg6", 0, "Another Pane5")); chart.Series = m_Data; }
public static double GetPriceVariation(List <DateTime> g, CandleTimeSeries series, bool upTendency = true) => upTendency ? series[g.Max(date => date)].Close - series[g.Min(date => date)].Close : series[g.Max(date => date)].Close - series[g.Min(date => date)].Close;
private void loadData() { if (m_SecDBFile == null) { chart.Series = null; return; } var series = new CandleTimeSeries("Candles", 0); m_OriginalDataFromFile = m_SecDBFile.GetAllStreamData() .SynthesizeCandles(m_SecResolution) .ToArray(); m_OriginalDataFromFile.ForEach(s => series.Add(s)); series.Views.Register( new CandleView("Candles", 1) { ShowYLevels = true, ShowBalloons = true }); series.Views.Register(new CandleBuySellView("Volume", 2) { Visible = chkVolumes.Checked, Kind = getVolumeKind() }); series.Views.Register( new CandleMidLineView("MidLine", 3) { MidLineType = MidLineType.HighLow, LineStyle = new LineStyle { Color = Color.FromArgb(200, 255, 0, 0), Width = 2 }, Visible = chkMidLines.Checked }); series.YLevels.Register( new TimeSeries.YLevel("FIRST_PRICE", 1) { Visible = chkMidLevels.Checked, HLineStyle = new LineStyle { Color = Color.FromArgb(255, 20, 10), DashStyle = System.Drawing.Drawing2D.DashStyle.Dash } }); series.YLevels.Register( new TimeSeries.YLevel("MID_PRICE", 2) { Visible = chkMidLevels.Checked, HLineStyle = new LineStyle { Color = Color.FromArgb(0, 180, 80), DashStyle = System.Drawing.Drawing2D.DashStyle.Dot } }); series.YLevels.Register( new TimeSeries.YLevel("LAST_PRICE", 3) { Value = series.DataReveresed.First().ClosePrice, HLineStyle = new LineStyle { Color = Color.FromArgb(120, 40, 255), DashStyle = System.Drawing.Drawing2D.DashStyle.Dash } }); updateLevels(series); chart.Series = series; }
public CandleRangeDataProvider(CandleTimeSeries series) { this.series = series; }