From 56ed56bd00410988dd006c76bf4c13c9e692a20f Mon Sep 17 00:00:00 2001 From: 7u83 <7u83@mail.ru> Date: Mon, 2 Oct 2017 16:15:33 +0200 Subject: [PATCH] more chartwork for better charts --- nbproject/private/private.xml | 41 ++-------------- nbproject/project.properties | 2 +- src/chart/ChartTestDialog.form | 3 -- src/chart/ChartTestDialog.java | 9 ++++ src/chart/OHLCChartPainter.java | 87 +++++++++++++++++++++++++++++++-- src/sesim/OHLCData.java | 3 ++ 6 files changed, 100 insertions(+), 45 deletions(-) diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml index efd8e7f..fa95d00 100644 --- a/nbproject/private/private.xml +++ b/nbproject/private/private.xml @@ -3,43 +3,10 @@ - file:/home/tube/NetBeansProjects/SeSim/src/traders/RandomTraderA.java - file:/home/tube/NetBeansProjects/SeSim/test/sesim/Test.java - file:/home/tube/NetBeansProjects/SeSim/src/gui/StatisticsPanel.java - file:/home/tube/NetBeansProjects/SeSim/src/gui/tools/NummericCellRenderer.java - file:/home/tube/NetBeansProjects/SeSim/src/sesim/AutoTraderInterface.java - file:/home/tube/NetBeansProjects/SeSim/src/chart/ChartTestDialog.java - file:/home/tube/NetBeansProjects/SeSim/src/traders/ManTrader/ManTraderConsoleDialog.java - file:/home/tube/NetBeansProjects/SeSim/src/sesim/AutoTraderLoader.java - file:/home/tube/NetBeansProjects/SeSim/src/traders/ManTrader/ManTrader.java - file:/home/tube/NetBeansProjects/SeSim/src/chart/NewPanel.java - file:/home/tube/NetBeansProjects/SeSim/src/gui/SeSimApplication.java - file:/home/tube/NetBeansProjects/SeSim/src/gui/Globals.java - file:/home/tube/NetBeansProjects/SeSim/src/traders/RandomTraderB.java - file:/home/tube/NetBeansProjects/SeSim/src/sesim/Logger.java - file:/home/tube/NetBeansProjects/SeSim/src/gui/EditPreferencesDialog.java - file:/home/tube/NetBeansProjects/SeSim/src/gui/QuotePanel.java - file:/home/tube/NetBeansProjects/SeSim/src/sesim/AutoTraderBase.java - file:/home/tube/NetBeansProjects/SeSim/src/gui/Statistics.java - file:/home/tube/NetBeansProjects/SeSim/src/gui/EditStrategies.java - file:/home/tube/NetBeansProjects/SeSim/src/gui/MainChart.java - file:/home/tube/NetBeansProjects/SeSim/src/chart/Chart.java - file:/home/tube/NetBeansProjects/SeSim/src/sesim/Clock.java - file:/home/tube/NetBeansProjects/SeSim/src/sesim/OHLCData.java - file:/home/tube/NetBeansProjects/SeSim/src/sesim/IDGenerator.java - file:/home/tube/NetBeansProjects/SeSim/src/sesim/MinMax.java - file:/home/tube/NetBeansProjects/SeSim/src/sesim/AutoTraderGui.java - file:/home/tube/NetBeansProjects/SeSim/src/sesim/Exchange.java - file:/home/tube/NetBeansProjects/SeSim/src/gui/jp99.java - file:/home/tube/NetBeansProjects/SeSim/src/sesim/Locker.java - file:/home/tube/NetBeansProjects/SeSim/src/gui/orderbook/OrderBook.java - file:/home/tube/NetBeansProjects/SeSim/src/chart/ChartPanal.java - file:/home/tube/NetBeansProjects/SeSim/src/sesim/OHLCDataItem.java - file:/home/tube/NetBeansProjects/SeSim/src/gui/AboutDialog.java - file:/home/tube/NetBeansProjects/SeSim/src/chart/Chart1.java - file:/home/tube/NetBeansProjects/SeSim/src/chart/ChartPainter.java - file:/home/tube/NetBeansProjects/SeSim/README.md - file:/home/tube/NetBeansProjects/SeSim/src/gui/TestChartdialog.java + file:/home/tobias/v/SeSim/src/chart/OHLCChartPainter.java + file:/home/tobias/v/SeSim/src/chart/Chart.java + file:/home/tobias/v/SeSim/src/chart/XLegendChartPainter.java + file:/home/tobias/v/SeSim/src/chart/NewPanel.java diff --git a/nbproject/project.properties b/nbproject/project.properties index 176c08e..74d8885 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -1,4 +1,4 @@ -#Sun, 01 Oct 2017 22:43:43 +0200 +#Mon, 02 Oct 2017 16:12:59 +0200 annotation.processing.enabled=true annotation.processing.enabled.in.editor=false annotation.processing.processors.list= diff --git a/src/chart/ChartTestDialog.form b/src/chart/ChartTestDialog.form index 1bc311e..5eae9c8 100644 --- a/src/chart/ChartTestDialog.form +++ b/src/chart/ChartTestDialog.form @@ -3,9 +3,6 @@
- - - diff --git a/src/chart/ChartTestDialog.java b/src/chart/ChartTestDialog.java index c6abf45..bc39774 100644 --- a/src/chart/ChartTestDialog.java +++ b/src/chart/ChartTestDialog.java @@ -49,6 +49,15 @@ public class ChartTestDialog extends javax.swing.JDialog implements QuoteReceive ChartPainter p = new XLegendChartPainter(); chart12.addChartPainter(p); Globals.se.addQuoteReceiver(this); + + + this.chart11.xbar=this.jScrollBar1; + this.jScrollBar1.addAdjustmentListener(chart11); + p = new OHLCChartPainter(); + this.chart11.addChartPainter(p); + + + } /** diff --git a/src/chart/OHLCChartPainter.java b/src/chart/OHLCChartPainter.java index 20ab4bb..2ded304 100644 --- a/src/chart/OHLCChartPainter.java +++ b/src/chart/OHLCChartPainter.java @@ -25,11 +25,15 @@ */ package chart; +import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import javax.swing.JPanel; import javax.swing.JScrollBar; +import sesim.MinMax; import sesim.OHLCData; +import sesim.OHLCDataItem; +import static sun.awt.geom.Curve.prev; /** * @@ -37,16 +41,91 @@ import sesim.OHLCData; */ public class OHLCChartPainter extends ChartPainter { + private float iwidth; + private MinMax mm; + private Dimension dim; + private float y_scaling; + + + float getY(float y) { +//c_yscaling = ctx.rect.height / c_mm.getDiff(); +// float ys = dim.height / mm.getDiff(); + if (mm.isLog()) { +// return rect.height + rect.y - ((float) Math.log(y) - c_mm.getMin()) * ys; + } + return (dim.height - ((y - mm.getMin()) * y_scaling)) ; + + + } + + private void drawCandleItem(Graphics2D g, int prevx, int x, OHLCDataItem prev, OHLCDataItem i) { + + if (i.open < i.close) { + int xl = (int) (x + iwidth / 2); + + g.setColor(Color.BLACK); + g.drawLine(xl, (int) getY(i.close), xl, (int) getY(i.high)); + g.drawLine(xl, (int) getY(i.low), xl, (int) getY(i.open)); + + float w = iwidth; + float h = (int) (getY(i.open) - getY(i.close)); + + g.setColor(Color.GREEN); + g.fillRect((int) (x), (int) getY(i.close), (int) w, (int) h); + g.setColor(Color.BLACK); + g.drawRect((int) (x), (int) getY(i.close), (int) w, (int) h); + + } else { + int xl = (int) (x + iwidth / 2); + g.setColor(Color.RED); + g.drawLine(xl, (int) getY(i.high), xl, (int) getY(i.close)); + g.drawLine(xl, (int) getY(i.open), xl, (int) getY(i.low)); + + float w = iwidth; + float h = (int) (getY(i.close) - getY(i.open)); + + g.fillRect((int) (x), (int) getY(i.open), (int) w, (int) h); + g.setColor(Color.BLACK); + g.drawRect((int) (x), (int) getY(i.open), (int) w, (int) h); + + } + + } + @Override public void drawChart(Graphics2D g, JScrollBar sb, OHLCData data, JPanel p, ChartDef def) { init(g); + + iwidth = (float) ((def.x_unit_width * em_width) * 0.9f); + int first_bar = def.x_scrollbar.getValue(); - Dimension size = p.getSize(); - int bars = (int) (size.width / (def.x_unit_width * em_width)); - for (int b=0; b0 && first_bar= data.size()) { OHLCDataItem di = data.get(data.size() - 1); return new MinMax(di.low, di.high);