Oderbook updates are now working.
This commit is contained in:
parent
da871d1a09
commit
e699e376ac
@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
@ -25,6 +25,8 @@
|
||||
*/
|
||||
package Gui;
|
||||
|
||||
import SeSim.Exchange.*;
|
||||
import SeSim.Order.*;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
@ -34,8 +36,12 @@ import java.util.ArrayList;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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")
|
||||
|
@ -25,6 +25,7 @@
|
||||
*/
|
||||
package Gui;
|
||||
|
||||
import SeSim.Exchange;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Formatter;
|
||||
import java.util.concurrent.Callable;
|
||||
@ -35,48 +36,59 @@ 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 {
|
||||
/**
|
||||
* OderBook Class
|
||||
*/
|
||||
public abstract class OrderBook extends javax.swing.JPanel implements Exchange.BookReceiver{
|
||||
|
||||
String pattern;
|
||||
public DateCellRenderer(String pattern){
|
||||
this.pattern = pattern;
|
||||
}
|
||||
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);
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
Color hdr_color = Color.LIGHT_GRAY;
|
||||
|
||||
@Override
|
||||
public void UpdateOrderBook() {
|
||||
// System.out.print("I have got an update on bid\n");
|
||||
model.update();
|
||||
}
|
||||
|
||||
|
||||
boolean getDesc() {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected class SListModel extends AbstractTableModel {
|
||||
protected OrderBookListModel model;
|
||||
|
||||
private ArrayList m;
|
||||
protected class OrderBookListModel extends AbstractTableModel {
|
||||
|
||||
private ArrayList list;
|
||||
private boolean desc = false;
|
||||
|
||||
public SListModel() {
|
||||
public OrderBookListModel() {
|
||||
update();
|
||||
}
|
||||
|
||||
m = getArrayList();
|
||||
|
||||
public void update(){
|
||||
list = getOrderBook();
|
||||
this.fireTableDataChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -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) {
|
||||
@ -137,34 +149,16 @@ public abstract class OrderBook extends javax.swing.JPanel {
|
||||
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.setDefaultRenderer(new OrderBookCellRenderer());
|
||||
|
||||
}
|
||||
|
||||
|
@ -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>
|
@ -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
|
||||
}
|
@ -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;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -3,7 +3,7 @@ package SeSim;
|
||||
public class BuyOrder extends Order implements Comparable<Order> {
|
||||
|
||||
public BuyOrder(){
|
||||
type=OrderType.buy;
|
||||
type=OrderType.bid;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
import SeSim.Order.OrderStatus;
|
||||
import SeSim.Order.OrderType;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -47,13 +48,44 @@ 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:
|
||||
|
||||
case sell:
|
||||
return ask.add(o);
|
||||
System.out.print("Exchange adding bid oder \n");
|
||||
ret = bid.add(o);
|
||||
break;
|
||||
|
||||
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) {
|
||||
public Order SendOrder(Order o) {
|
||||
|
||||
boolean rc = InitOrder(o);
|
||||
if (!rc)
|
||||
return null;
|
||||
|
||||
Lock();
|
||||
o.timestamp = System.currentTimeMillis();
|
||||
boolean rc = InitOrder(o);
|
||||
System.out.print(o.timestamp + " TS:\n");
|
||||
o.id = orderid++;
|
||||
addOrder(o);
|
||||
OrderMatching();
|
||||
Unlock();
|
||||
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,6 @@ package SeSim;
|
||||
public class SellOrder extends Order {
|
||||
|
||||
public SellOrder(){
|
||||
type=OrderType.sell;
|
||||
type=OrderType.ask;
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user