OpenSeSim/src/main/java/chart/Chart.java

183 lines
4.6 KiB
Java
Raw Normal View History

2017-01-08 03:14:27 +01:00
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package chart;
import java.awt.*;
2017-01-08 13:16:00 +01:00
import sesim.Exchange.*;
import sesim.Quote;
import gui.MainWin;
2017-01-08 03:14:27 +01:00
/**
*
* @author 7u83 <7u83@mail.ru>
*/
2017-01-09 08:25:29 +01:00
public class Chart extends javax.swing.JPanel implements QuoteReceiver {
2017-01-08 03:14:27 +01:00
/**
* Creates new form Chart
*/
public Chart() {
initComponents();
2017-01-09 08:25:29 +01:00
if (MainWin.se == null) {
return;
}
2017-01-08 13:16:00 +01:00
MainWin.se.addQuoteReceiver(this);
2017-01-08 03:14:27 +01:00
//Graphics g = this.getGraphics();
//g.drawString("Hello world", 0, 0);
}
2017-01-09 08:25:29 +01:00
int item_width = 10;
int items = 350;
long ntime = -1;
2017-01-08 13:16:00 +01:00
OHLCData data;
2017-01-09 08:25:29 +01:00
OHLCDataItem current = null;
long rasterTime(long time) {
long rt = time / 5000;
return rt * 5000;
}
private void realTimeAdd(long time, float price, float volume) {
/* System.out.print("Diff:"
+(ntime-time)
+"\n"
);
*/
if (time > ntime) {
System.out.print("new raster ----------------------------------\n");
current = null;
ntime = rasterTime(time) + 5000;
// System.out.print(ntime+"\n");
// System.out.print((time)+"\n");
// System.exit(0);
}
if (current == null) {
current = new OHLCDataItem(price, price, price, price, volume);
2017-01-08 13:16:00 +01:00
return;
}
2017-01-09 08:25:29 +01:00
boolean rc = current.update(price, volume);
if (rc) {
2017-01-08 13:16:00 +01:00
System.out.print("Updated -"
2017-01-09 08:25:29 +01:00
+ " High:"
+ current.high
+ " Low:"
+ current.low
+ " Volume"
+ current.volume
+ "("
+ time
+ ")"
+ "\n"
2017-01-08 13:16:00 +01:00
);
}
2017-01-09 08:25:29 +01:00
2017-01-08 13:16:00 +01:00
}
2017-01-09 08:25:29 +01:00
private void getData() {
2017-01-08 13:16:00 +01:00
}
2017-01-09 08:25:29 +01:00
private void draw(Graphics2D g) {
2017-01-08 13:16:00 +01:00
this.getSize();
2017-01-09 08:25:29 +01:00
int pwidth = item_width * items;
this.setPreferredSize(new Dimension(pwidth, 400));
g.setColor(Color.RED);
g.drawLine(0,0,100,100);
for (int i = 0; i < items; i++) {
int x = i * this.item_width;
g.drawLine(x, 0, x, 50);
}
2017-01-08 13:16:00 +01:00
2017-01-09 08:25:29 +01:00
2017-01-08 13:16:00 +01:00
2017-01-09 08:25:29 +01:00
if (this.current == null) {
return;
2017-01-08 13:16:00 +01:00
}
2017-01-09 08:25:29 +01:00
g.setColor(Color.BLUE);
g.drawLine(0, 0, 100, (int) ((this.current.close-80.0)*80.0));
2017-01-08 13:16:00 +01:00
}
2017-01-08 03:14:27 +01:00
@Override
public void paintComponent(Graphics go) {
super.paintComponent(go);
2017-01-09 08:25:29 +01:00
2017-01-08 08:48:31 +01:00
Graphics2D g = (Graphics2D) go;
2017-01-08 13:16:00 +01:00
g.setColor(Color.GRAY);
2017-01-08 08:48:31 +01:00
2017-01-08 03:14:27 +01:00
g.setBackground(Color.BLACK);
2017-01-08 08:48:31 +01:00
// g.get
2017-01-08 03:14:27 +01:00
Rectangle bounds = g.getDeviceConfiguration().getBounds();
2017-01-08 08:48:31 +01:00
System.out.print(bounds.width + "\n");
2017-01-08 03:14:27 +01:00
//g.fillRect(0, 0, 100, 100);
2017-01-08 08:48:31 +01:00
Dimension d = this.getSize();
2017-01-08 13:16:00 +01:00
//g.drawString("Hello world", 810, 10);
//g.drawLine(0, 0, d.width, d.height);
//this.setPreferredSize(new Dimension(2000,4000));
draw(g);
2017-01-08 03:14:27 +01:00
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
2017-01-08 13:16:00 +01:00
setBackground(java.awt.Color.white);
setBorder(javax.swing.BorderFactory.createTitledBorder(""));
setPreferredSize(new java.awt.Dimension(300, 300));
2017-01-08 08:48:31 +01:00
setRequestFocusEnabled(false);
2017-01-08 03:14:27 +01:00
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
2017-01-08 13:16:00 +01:00
.addGap(0, 316, Short.MAX_VALUE)
2017-01-08 03:14:27 +01:00
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
2017-01-08 13:16:00 +01:00
.addGap(0, 280, Short.MAX_VALUE)
2017-01-08 03:14:27 +01:00
);
}// </editor-fold>//GEN-END:initComponents
2017-01-08 13:16:00 +01:00
@Override
public void UpdateQuote(Quote q) {
2017-01-09 08:25:29 +01:00
// System.out.print("Quote Received\n");
this.realTimeAdd(q.time, (float) q.price, (float)q.volume);
2017-01-09 08:25:29 +01:00
// this.invalidate();
this.repaint();
2017-01-08 13:16:00 +01:00
}
2017-01-08 03:14:27 +01:00
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
}