Oderbook updates are now working.

This commit is contained in:
7u83 2016-12-28 02:21:24 +01:00
parent da871d1a09
commit e699e376ac
16 changed files with 167 additions and 606 deletions

View File

@ -25,6 +25,8 @@
*/
package Gui;
import SeSim.Exchange.*;
import SeSim.Order.*;
import java.util.ArrayList;
/**
@ -34,8 +36,8 @@ import java.util.ArrayList;
public class AskBook extends OrderBook {
@Override
ArrayList getArrayList() {
return MainWin.se.getAskBook(10);
ArrayList getOrderBook() {
return MainWin.se.getOrderBook(OrderType.ask,10);
}
@Override
@ -44,7 +46,7 @@ public class AskBook extends OrderBook {
}
public AskBook(){
System.out.print("init askbook\n");
MainWin.se.addBookReceiver(OrderType.ask, this);
}

View File

@ -25,17 +25,23 @@
*/
package Gui;
import SeSim.Exchange.*;
import SeSim.Order.*;
import java.util.ArrayList;
/**
*
* @author 7u83 <7u83@mail.ru>
*/
public class BidBook extends OrderBook{
public class BidBook extends OrderBook {
@Override
ArrayList getArrayList() {
return MainWin.se.getBidBook(10);
ArrayList getOrderBook() {
return MainWin.se.getOrderBook(OrderType.bid,40);
}
BidBook(){
MainWin.se.addBookReceiver(OrderType.bid,this);
}
}

View File

@ -86,12 +86,13 @@ public class ControlPanel extends javax.swing.JPanel {
private void SellButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SellButtonActionPerformed
System.out.print("SellPressed\n");
// MainWin.myAccount.Sell(100, 520.0, MainWin.se);
MainWin.myAccount.sell(100, 13.0);
}//GEN-LAST:event_SellButtonActionPerformed
private void BuyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BuyButtonActionPerformed
System.out.print("Buy Pressed\n");
//MainWin.myAccount.Buy(100, 120.0, MainWin.se);
MainWin.myAccount.Buy(100, 1.0, MainWin.se);
MainWin.myAccount.buy(100, 1.0);
}//GEN-LAST:event_BuyButtonActionPerformed

View File

@ -47,6 +47,9 @@ public class MainWin extends javax.swing.JFrame {
* Creates new form MainWin
*/
public MainWin() {
myTrader.sell(100, 230);
myTrader.sell(10, 123.12);
initComponents();
@ -163,11 +166,12 @@ public class MainWin extends javax.swing.JFrame {
SeSim.SellOrder so = new SeSim.SellOrder();
/* SeSim.SellOrder so = new SeSim.SellOrder();
so.limit = 20.0;
so.volume = 12;
so.timestamp = 12;
se.SendOrder(so);
*/
try {
// Set cross-platform Java L&F (also called "Metal")

View File

@ -25,6 +25,7 @@
*/
package Gui;
import SeSim.Exchange;
import java.util.ArrayList;
import java.util.Formatter;
import java.util.concurrent.Callable;
@ -35,53 +36,64 @@ import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
/**
*
* @author 7u83 <7u83@mail.ru>
*/
public abstract class OrderBook extends javax.swing.JPanel {
abstract ArrayList getArrayList();
public class DateCellRenderer extends DefaultTableCellRenderer {
String pattern;
public DateCellRenderer(String pattern){
this.pattern = pattern;
/**
* OderBook Class
*/
public abstract class OrderBook extends javax.swing.JPanel implements Exchange.BookReceiver{
abstract ArrayList getOrderBook();
private Color hdr_color = Color.LIGHT_GRAY;
private class OrderBookCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
DefaultTableCellRenderer renderer
= (DefaultTableCellRenderer) super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
renderer.setBackground(hdr_color);
return renderer;
}
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
DefaultTableCellRenderer renderer = (DefaultTableCellRenderer)super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
renderer.setBackground(hdr_color);
//renderer.setBorder(BorderFactory.createLineBorder(Color.BLACK));
// renderer.setText("Halloe");
return renderer;
@Override
public void UpdateOrderBook() {
// System.out.print("I have got an update on bid\n");
model.update();
}
}
Color hdr_color = Color.LIGHT_GRAY;
boolean getDesc() {
return false;
}
protected OrderBookListModel model;
protected class SListModel extends AbstractTableModel {
protected class OrderBookListModel extends AbstractTableModel {
private ArrayList m;
private ArrayList list;
private boolean desc = false;
public SListModel() {
m = getArrayList();
public OrderBookListModel() {
update();
}
public void update(){
list = getOrderBook();
this.fireTableDataChanged();
}
@Override
public String getColumnName(int c) {
switch(c){
switch (c) {
case 0:
return "ID";
case 1:
@ -94,7 +106,7 @@ public abstract class OrderBook extends javax.swing.JPanel {
@Override
public int getRowCount() {
return m.size();
return list.size();
}
@Override
@ -106,9 +118,9 @@ public abstract class OrderBook extends javax.swing.JPanel {
public Object getValueAt(int r, int c) {
SeSim.Order o;
if (!getDesc()) {
o = (SeSim.Order) m.get(r);
o = (SeSim.Order) list.get(r);
} else {
o = (SeSim.Order) m.get(m.size() - r - 1);
o = (SeSim.Order) list.get(list.size() - r - 1);
}
Formatter f = new Formatter();
switch (c) {
@ -130,41 +142,23 @@ public abstract class OrderBook extends javax.swing.JPanel {
public OrderBook() {
System.out.print("init Orderbook]\n");
initComponents();
this.setBorder(BorderFactory.createEmptyBorder());
this.orderBookScroller.setBorder(BorderFactory.createBevelBorder(0));
if (MainWin.se == null) {
return;
}
this.orderBookList.setModel(new SListModel());
model = new OrderBookListModel();
this.orderBookList.setModel(model);
orderBookList.setBorder(BorderFactory.createEmptyBorder());
JTableHeader h = this.orderBookList.getTableHeader();
h.setBackground(hdr_color);
h.setForeground(Color.green);
// h.setDefaultRenderer(this.orderBookList.getCellRenderer(0, 0));
// h.setBorder(BorderFactory.createLineBorder(Color.yellow));
h.setDefaultRenderer(new DateCellRenderer("Hhu"));
/* h.getColumnModel().getColumn(0).setCellRenderer(new TableCellRenderer(){
@Override
public Component getTableCellRendererComponent(
JTable x, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
JComponent component = (JComponent)orderBookList.getTableHeader().getDefaultRenderer().getTableCellRendererComponent(orderBookList, value, false, false, -1, -2);
component.setBackground(new Color(250, 250, 250));
component.setBorder(BorderFactory.createEmptyBorder());
return component;
}
});
*/
h.setBackground(hdr_color);
h.setForeground(Color.green);
h.setDefaultRenderer(new OrderBookCellRenderer());
}

View File

@ -1,389 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.8" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
<AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-56,0,0,1,-112"/>
</AuxValues>
<SubComponents>
<Component class="javax.swing.JLabel" name="l_id">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="89" green="bf" red="f5" type="rgb"/>
</Property>
<Property name="text" type="java.lang.String" value="#09100"/>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.MatteColorBorderInfo">
<MatteColorBorder/>
</Border>
</Property>
<Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
<Color id="Default Cursor"/>
</Property>
<Property name="focusable" type="boolean" value="false"/>
<Property name="horizontalTextPosition" type="int" value="2"/>
<Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[6, 200]"/>
</Property>
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[6, 200]"/>
</Property>
<Property name="name" type="java.lang.String" value="NNN" noResource="true"/>
<Property name="opaque" type="boolean" value="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="5.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="l_money">
<Properties>
<Property name="text" type="java.lang.String" value="213.7"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="2" gridY="0" gridWidth="5" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="1.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="l_volume">
<Properties>
<Property name="text" type="java.lang.String" value="21"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="12" gridY="0" gridWidth="5" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
<LayoutCode>
<CodeStatement>
<CodeExpression id="1_layout">
<CodeVariable name="layout" type="4096" declaredType="java.awt.GridBagLayout"/>
<ExpressionOrigin>
<ExpressionProvider type="CodeConstructor">
<CodeConstructor class="java.awt.GridBagLayout" parameterTypes=""/>
</ExpressionProvider>
</ExpressionOrigin>
</CodeExpression>
<StatementProvider type="CodeExpression">
<CodeExpression id="1_layout"/>
</StatementProvider>
</CodeStatement>
<CodeStatement>
<CodeExpression id="1_layout"/>
<StatementProvider type="CodeField">
<CodeField name="columnWidths" class="java.awt.GridBagLayout"/>
</StatementProvider>
<Parameters>
<CodeExpression id="2">
<ExpressionOrigin>
<Value type="[I" editor="org.netbeans.modules.form.layoutsupport.delegates.GridBagLayoutSupport$IntArrayPropertyEditor">
<PropertyValue value="[0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0]"/>
</Value>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="1_layout"/>
<StatementProvider type="CodeField">
<CodeField name="rowHeights" class="java.awt.GridBagLayout"/>
</StatementProvider>
<Parameters>
<CodeExpression id="3">
<ExpressionOrigin>
<Value type="[I" editor="org.netbeans.modules.form.layoutsupport.delegates.GridBagLayoutSupport$IntArrayPropertyEditor">
<PropertyValue value="[0]"/>
</Value>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="4">
<ExpressionOrigin>
<ExpressionProvider type="ComponentRef">
<ComponentRef name="."/>
</ExpressionProvider>
</ExpressionOrigin>
</CodeExpression>
<StatementProvider type="CodeMethod">
<CodeMethod name="setLayout" class="java.awt.Container" parameterTypes="java.awt.LayoutManager"/>
</StatementProvider>
<Parameters>
<CodeExpression id="1_layout"/>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="5_gridBagConstraints">
<CodeVariable name="gridBagConstraints" type="20480" declaredType="java.awt.GridBagConstraints"/>
<ExpressionOrigin>
<ExpressionProvider type="CodeConstructor">
<CodeConstructor class="java.awt.GridBagConstraints" parameterTypes=""/>
</ExpressionProvider>
</ExpressionOrigin>
</CodeExpression>
<StatementProvider type="CodeExpression">
<CodeExpression id="5_gridBagConstraints"/>
</StatementProvider>
</CodeStatement>
<CodeStatement>
<CodeExpression id="5_gridBagConstraints"/>
<StatementProvider type="CodeField">
<CodeField name="gridx" class="java.awt.GridBagConstraints"/>
</StatementProvider>
<Parameters>
<CodeExpression id="6">
<ExpressionOrigin>
<Value type="int" value="0"/>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="5_gridBagConstraints"/>
<StatementProvider type="CodeField">
<CodeField name="gridy" class="java.awt.GridBagConstraints"/>
</StatementProvider>
<Parameters>
<CodeExpression id="7">
<ExpressionOrigin>
<Value type="int" value="0"/>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="5_gridBagConstraints"/>
<StatementProvider type="CodeField">
<CodeField name="fill" class="java.awt.GridBagConstraints"/>
</StatementProvider>
<Parameters>
<CodeExpression id="8">
<ExpressionOrigin>
<Value type="int" value="2"/>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="5_gridBagConstraints"/>
<StatementProvider type="CodeField">
<CodeField name="anchor" class="java.awt.GridBagConstraints"/>
</StatementProvider>
<Parameters>
<CodeExpression id="9">
<ExpressionOrigin>
<Value type="int" value="17"/>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="5_gridBagConstraints"/>
<StatementProvider type="CodeField">
<CodeField name="weightx" class="java.awt.GridBagConstraints"/>
</StatementProvider>
<Parameters>
<CodeExpression id="10">
<ExpressionOrigin>
<Value type="double" value="5.0"/>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="4"/>
<StatementProvider type="CodeMethod">
<CodeMethod name="add" class="java.awt.Container" parameterTypes="java.awt.Component, java.lang.Object"/>
</StatementProvider>
<Parameters>
<CodeExpression id="11_l_id">
<CodeVariable name="l_id" type="8194" declaredType="javax.swing.JLabel"/>
<ExpressionOrigin>
<ExpressionProvider type="ComponentRef">
<ComponentRef name="l_id"/>
</ExpressionProvider>
</ExpressionOrigin>
</CodeExpression>
<CodeExpression id="5_gridBagConstraints"/>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="12_gridBagConstraints">
<CodeVariable name="gridBagConstraints"/>
<ExpressionOrigin>
<ExpressionProvider type="CodeConstructor">
<CodeConstructor class="java.awt.GridBagConstraints" parameterTypes=""/>
</ExpressionProvider>
</ExpressionOrigin>
</CodeExpression>
<StatementProvider type="CodeExpression">
<CodeExpression id="12_gridBagConstraints"/>
</StatementProvider>
</CodeStatement>
<CodeStatement>
<CodeExpression id="12_gridBagConstraints"/>
<StatementProvider type="CodeField">
<CodeField name="gridx" class="java.awt.GridBagConstraints"/>
</StatementProvider>
<Parameters>
<CodeExpression id="13">
<ExpressionOrigin>
<Value type="int" value="2"/>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="12_gridBagConstraints"/>
<StatementProvider type="CodeField">
<CodeField name="gridy" class="java.awt.GridBagConstraints"/>
</StatementProvider>
<Parameters>
<CodeExpression id="14">
<ExpressionOrigin>
<Value type="int" value="0"/>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="12_gridBagConstraints"/>
<StatementProvider type="CodeField">
<CodeField name="gridwidth" class="java.awt.GridBagConstraints"/>
</StatementProvider>
<Parameters>
<CodeExpression id="15">
<ExpressionOrigin>
<Value type="int" value="5"/>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="12_gridBagConstraints"/>
<StatementProvider type="CodeField">
<CodeField name="anchor" class="java.awt.GridBagConstraints"/>
</StatementProvider>
<Parameters>
<CodeExpression id="16">
<ExpressionOrigin>
<Value type="int" value="17"/>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="12_gridBagConstraints"/>
<StatementProvider type="CodeField">
<CodeField name="weightx" class="java.awt.GridBagConstraints"/>
</StatementProvider>
<Parameters>
<CodeExpression id="17">
<ExpressionOrigin>
<Value type="double" value="1.0"/>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="4"/>
<StatementProvider type="CodeMethod">
<CodeMethod name="add" class="java.awt.Container" parameterTypes="java.awt.Component, java.lang.Object"/>
</StatementProvider>
<Parameters>
<CodeExpression id="18_l_money">
<CodeVariable name="l_money" type="8194" declaredType="javax.swing.JLabel"/>
<ExpressionOrigin>
<ExpressionProvider type="ComponentRef">
<ComponentRef name="l_money"/>
</ExpressionProvider>
</ExpressionOrigin>
</CodeExpression>
<CodeExpression id="12_gridBagConstraints"/>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="19_gridBagConstraints">
<CodeVariable name="gridBagConstraints"/>
<ExpressionOrigin>
<ExpressionProvider type="CodeConstructor">
<CodeConstructor class="java.awt.GridBagConstraints" parameterTypes=""/>
</ExpressionProvider>
</ExpressionOrigin>
</CodeExpression>
<StatementProvider type="CodeExpression">
<CodeExpression id="19_gridBagConstraints"/>
</StatementProvider>
</CodeStatement>
<CodeStatement>
<CodeExpression id="19_gridBagConstraints"/>
<StatementProvider type="CodeField">
<CodeField name="gridx" class="java.awt.GridBagConstraints"/>
</StatementProvider>
<Parameters>
<CodeExpression id="20">
<ExpressionOrigin>
<Value type="int" value="12"/>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="19_gridBagConstraints"/>
<StatementProvider type="CodeField">
<CodeField name="gridy" class="java.awt.GridBagConstraints"/>
</StatementProvider>
<Parameters>
<CodeExpression id="21">
<ExpressionOrigin>
<Value type="int" value="0"/>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="19_gridBagConstraints"/>
<StatementProvider type="CodeField">
<CodeField name="gridwidth" class="java.awt.GridBagConstraints"/>
</StatementProvider>
<Parameters>
<CodeExpression id="22">
<ExpressionOrigin>
<Value type="int" value="5"/>
</ExpressionOrigin>
</CodeExpression>
</Parameters>
</CodeStatement>
<CodeStatement>
<CodeExpression id="4"/>
<StatementProvider type="CodeMethod">
<CodeMethod name="add" class="java.awt.Container" parameterTypes="java.awt.Component, java.lang.Object"/>
</StatementProvider>
<Parameters>
<CodeExpression id="23_l_volume">
<CodeVariable name="l_volume" type="8194" declaredType="javax.swing.JLabel"/>
<ExpressionOrigin>
<ExpressionProvider type="ComponentRef">
<ComponentRef name="l_volume"/>
</ExpressionProvider>
</ExpressionOrigin>
</CodeExpression>
<CodeExpression id="19_gridBagConstraints"/>
</Parameters>
</CodeStatement>
</LayoutCode>
</Form>

View File

@ -1,102 +0,0 @@
/*
* Copyright (c) 2016, 7u83 <7u83@mail.ru>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package Gui;
/**
*
* @author 7u83 <7u83@mail.ru>
*/
public class OrderBookCell extends javax.swing.JPanel {
/**
* Creates new form OrderBookCell
*/
public OrderBookCell() {
initComponents();
}
/**
* 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() {
java.awt.GridBagConstraints gridBagConstraints;
l_id = new javax.swing.JLabel();
l_money = new javax.swing.JLabel();
l_volume = new javax.swing.JLabel();
java.awt.GridBagLayout layout = new java.awt.GridBagLayout();
layout.columnWidths = new int[] {0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0};
layout.rowHeights = new int[] {0};
setLayout(layout);
l_id.setBackground(new java.awt.Color(245, 191, 137));
l_id.setText("#09100");
l_id.setVerticalAlignment(javax.swing.SwingConstants.TOP);
l_id.setBorder(new javax.swing.border.MatteBorder(null));
l_id.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
l_id.setFocusable(false);
l_id.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
l_id.setMaximumSize(new java.awt.Dimension(6, 200));
l_id.setMinimumSize(new java.awt.Dimension(6, 200));
l_id.setName("NNN"); // NOI18N
l_id.setOpaque(true);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 5.0;
add(l_id, gridBagConstraints);
l_money.setText("213.7");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 5;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
add(l_money, gridBagConstraints);
l_volume.setText("21");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 12;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 5;
add(l_volume, gridBagConstraints);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel l_id;
private javax.swing.JLabel l_money;
private javax.swing.JLabel l_volume;
// End of variables declaration//GEN-END:variables
}

View File

@ -31,6 +31,7 @@ import javax.swing.AbstractListModel;
import javax.swing.table.AbstractTableModel;
import java.util.ArrayList;
import java.util.Formatter;
import static java.lang.Thread.sleep;
/**
*

View File

@ -50,30 +50,25 @@ final public class Account {
TreeSet pending;
public SellOrder sell(long volume, double limit) {
public Order sell(long volume, double limit) {
SellOrder o = new SellOrder();
o.account = this;
o.limit = limit;
o.volume = volume;
orderpending = true;
se.SendOrder(o);
return o;
return se.SendOrder(o);
}
public BuyOrder Buy(long size, double limit, Exchange ex) {
if (size * limit > money) {
public Order buy(long volume, double limit) {
if (volume * limit > money) {
return null;
}
BuyOrder o = new BuyOrder();
o.limit = limit;
o.volume = size;
o.volume = volume;
o.account = this;
orderpending = true;
ex.SendOrder(o);
return o;
return se.SendOrder(o);
}
/*

View File

@ -3,7 +3,7 @@ package SeSim;
public class BuyOrder extends Order implements Comparable<Order> {
public BuyOrder(){
type=OrderType.buy;
type=OrderType.bid;
}
}

View File

@ -4,6 +4,7 @@ import java.util.*;
import java.util.concurrent.*;
import SeSim.Order.OrderStatus;
import SeSim.Order.OrderType;
/**
*
@ -47,12 +48,43 @@ public class Exchange extends Thread {
}
/**
*
* Bookreceiver Interface
*/
public interface BookReceiver {
void UpdateOrderBook();
}
private ArrayList<BookReceiver> ask_bookreceivers = new ArrayList<>();
private ArrayList<BookReceiver> bid_bookreceivers = new ArrayList<>();
private ArrayList <BookReceiver> selectBookReceiver(OrderType t){
switch (t){
case ask:
return ask_bookreceivers;
case bid:
return bid_bookreceivers;
}
return null;
}
public void addBookReceiver(OrderType t, BookReceiver br){
ArrayList <BookReceiver> bookreceivers;
bookreceivers = selectBookReceiver(t);
bookreceivers.add(br);
}
void UpdateBookReceivers(OrderType t) {
ArrayList <BookReceiver> bookreceivers;
bookreceivers = selectBookReceiver(t);
Iterator<BookReceiver> i = bookreceivers.iterator();
while (i.hasNext()) {
i.next().UpdateOrderBook();
}
}
// Here we store the list of quote receivers
private final TreeSet<QuoteReceiver> qrlist;
@ -98,7 +130,25 @@ public class Exchange extends Thread {
available.release();
}
private ArrayList<Order> getBook(TreeSet<Order> book, int depth) {
private TreeSet<Order> selectOrderBook(OrderType t){
switch(t){
case bid:
return this.bid;
case ask:
return this.ask;
}
return null;
}
public ArrayList<Order> getOrderBook(OrderType t, int depth) {
TreeSet <Order> book = selectOrderBook(t);
if (book==null)
return null;
ArrayList<Order> ret = new ArrayList<>();
Iterator<Order> it = book.iterator();
for (int i = 0; i < depth && it.hasNext(); i++) {
@ -112,26 +162,7 @@ public class Exchange extends Thread {
}
/**
* Get the "ask" orderbook
*
* @param depth Number oder Orders to retrieve from orderbook
* @return Orderbook
*/
public ArrayList<Order> getAskBook(int depth) {
return getBook(ask, depth);
}
/**
* Get the "bid" oderbook
*
* @param depth Number oder Orders to retrieve from orderbook
* @return Orderbook
*/
public ArrayList<Order> getBidBook(int depth) {
return getBook(bid, depth);
}
public void print_current() {
@ -282,29 +313,43 @@ public class Exchange extends Thread {
return true;
}
// Add an order to the orderbook
private boolean addOrder(Order o) {
boolean ret=false;
switch (o.type) {
case buy:
return bid.add(o);
case bid:
System.out.print("Exchange adding bid oder \n");
ret = bid.add(o);
break;
case sell:
return ask.add(o);
case ask:
System.out.print("Exchange adding ask oder \n");
ret = ask.add(o);
break;
}
return false;
if (ret)
this.UpdateBookReceivers(o.type);
return ret;
}
public void SendOrder(Order o) {
Lock();
o.timestamp = System.currentTimeMillis();
public Order SendOrder(Order o) {
boolean rc = InitOrder(o);
if (!rc)
return null;
Lock();
o.timestamp = System.currentTimeMillis();
System.out.print(o.timestamp + " TS:\n");
o.id = orderid++;
addOrder(o);
OrderMatching();
Unlock();
return o;
}
/*

View File

@ -36,7 +36,7 @@ public class MTrader extends Trader {
// System.out.println("HW");
long size = (int) (account.money / limit);
account.Buy(size, limit, ex);
account.buy(size, limit);
}

View File

@ -41,7 +41,7 @@ public abstract class Order implements Comparable<Order> {
if (r==0)
return 0;
if (type==OrderType.sell)
if (type==OrderType.ask)
return 1-r;
return r;
@ -82,8 +82,8 @@ public abstract class Order implements Comparable<Order> {
open, executed, canceled
}
enum OrderType {
buy,sell
public enum OrderType {
bid,ask
}
OrderStatus status = OrderStatus.open;

View File

@ -39,7 +39,7 @@ public class RandomTrader extends Trader {
long size = (int) (account.money / (limit * 1));
myorder = account.Buy(size, limit, ex);
myorder = account.buy(size, limit);
return;
}

View File

@ -3,6 +3,6 @@ package SeSim;
public class SellOrder extends Order {
public SellOrder(){
type=OrderType.sell;
type=OrderType.ask;
}
}

View File

@ -32,6 +32,10 @@ public abstract class Trader {
public abstract void trade();
public Account account;
public void sell(long shares, double limit){
account.sell(shares, limit);
}
/**
* Construct a Trader object
*/