diff --git a/nb-configuration.xml b/nb-configuration.xml
new file mode 100644
index 0000000..df2f8ba
--- /dev/null
+++ b/nb-configuration.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+ bsd
+
+
diff --git a/src/main/java/chart/Chart.form b/src/main/java/chart/Chart.form
index ebc46c9..74576d7 100644
--- a/src/main/java/chart/Chart.form
+++ b/src/main/java/chart/Chart.form
@@ -2,13 +2,16 @@
diff --git a/src/main/java/gui/MainWin.java b/src/main/java/gui/MainWin.java
index 1f37e56..cdd90b6 100644
--- a/src/main/java/gui/MainWin.java
+++ b/src/main/java/gui/MainWin.java
@@ -41,7 +41,7 @@ import javax.swing.*;
*/
public class MainWin extends javax.swing.JFrame {
- static sesim.Exchange se;
+ static public sesim.Exchange se;
static sesim.Account myAccount;
static traders.ManTrader myTrader;
@@ -52,7 +52,15 @@ public class MainWin extends javax.swing.JFrame {
initComponents();
-
+ AutoTraderLIst at = new AutoTraderLIst();
+// RandomTraderConfig rcfg = new RandomTraderConfig();
+ SwitchingTraderConfig rcfg = new SwitchingTraderConfig();
+ at.add(1000, rcfg, se, 100, 0);
+ at.add(1000, rcfg, se, 0, 10000);
+
+
+ SwitchingTraderConfig scfg = new SwitchingTraderConfig();
+ at.add(1, scfg, se, 1000000, 0);
}
@@ -69,13 +77,14 @@ public class MainWin extends javax.swing.JFrame {
jMenuItem1 = new javax.swing.JMenuItem();
controlPanel2 = new gui.ControlPanel();
orderBookPanel1 = new gui.OrderBookPanel();
- jScrollPane1 = new javax.swing.JScrollPane();
- chart2 = new chart.Chart();
+ fullChart2 = new chart.FullChart();
MainMenu = new javax.swing.JMenuBar();
FileMenu = new javax.swing.JMenu();
FileNew = new javax.swing.JMenuItem();
FileRun = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
+ jMenu1 = new javax.swing.JMenu();
+ jMenuItem2 = new javax.swing.JMenuItem();
jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
@@ -90,21 +99,7 @@ public class MainWin extends javax.swing.JFrame {
setMinimumSize(new java.awt.Dimension(640, 480));
getContentPane().add(controlPanel2, java.awt.BorderLayout.LINE_END);
getContentPane().add(orderBookPanel1, java.awt.BorderLayout.LINE_START);
-
- javax.swing.GroupLayout chart2Layout = new javax.swing.GroupLayout(chart2);
- chart2.setLayout(chart2Layout);
- chart2Layout.setHorizontalGroup(
- chart2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGap(0, 231, Short.MAX_VALUE)
- );
- chart2Layout.setVerticalGroup(
- chart2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGap(0, 572, Short.MAX_VALUE)
- );
-
- jScrollPane1.setViewportView(chart2);
-
- getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
+ getContentPane().add(fullChart2, java.awt.BorderLayout.CENTER);
FileMenu.setBackground(new java.awt.Color(254, 203, 1));
FileMenu.setText("File");
@@ -131,6 +126,14 @@ public class MainWin extends javax.swing.JFrame {
jMenu2.setText("Edit");
MainMenu.add(jMenu2);
+ jMenu1.setText("Help");
+
+ jMenuItem2.setText("About");
+ jMenuItem2.setToolTipText("About this Software");
+ jMenu1.add(jMenuItem2);
+
+ MainMenu.add(jMenu1);
+
setJMenuBar(MainMenu);
pack();
@@ -171,27 +174,19 @@ public class MainWin extends javax.swing.JFrame {
tr.start();
*/
- AutoTraderLIst at = new AutoTraderLIst();
-// RandomTraderConfig rcfg = new RandomTraderConfig();
- SwitchingTraderConfig rcfg = new SwitchingTraderConfig();
- at.add(1000, rcfg, se, 100, 0);
- at.add(1000, rcfg, se, 0, 10000);
-
- SwitchingTraderConfig scfg = new SwitchingTraderConfig();
- at.add(1, scfg, se, 1000000, 0);
// at.add(10, rcfg, se, 1000000, 0);
- try {
+ /* try {
// Set cross-platform Java L&F (also called "Metal")
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
} catch (UnsupportedLookAndFeelException | ClassNotFoundException |
InstantiationException | IllegalAccessException e) {
}
-
+*/
/* Set the Nimbus look and feel */
//
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
@@ -229,12 +224,13 @@ public class MainWin extends javax.swing.JFrame {
private javax.swing.JMenuItem FileNew;
private javax.swing.JMenuItem FileRun;
private javax.swing.JMenuBar MainMenu;
- private chart.Chart chart2;
private gui.ControlPanel controlPanel2;
+ private chart.FullChart fullChart2;
private javax.swing.JButton jButton1;
+ private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuItem jMenuItem1;
- private javax.swing.JScrollPane jScrollPane1;
+ private javax.swing.JMenuItem jMenuItem2;
private gui.OrderBookPanel orderBookPanel1;
// End of variables declaration//GEN-END:variables
}
diff --git a/src/main/java/sesim/BuyOrder.java b/src/main/java/sesim/BuyOrder.java
index a706ccf..d4a5e86 100644
--- a/src/main/java/sesim/BuyOrder.java
+++ b/src/main/java/sesim/BuyOrder.java
@@ -3,7 +3,7 @@ package sesim;
public class BuyOrder extends Order implements Comparable {
public BuyOrder(){
- type=OrderType.bid;
+ super(OrderType.bid);
}
}
diff --git a/src/main/java/sesim/Exchange.java b/src/main/java/sesim/Exchange.java
index ae50abe..d3cad49 100644
--- a/src/main/java/sesim/Exchange.java
+++ b/src/main/java/sesim/Exchange.java
@@ -221,6 +221,10 @@ public class Exchange extends Thread {
}
+ /**
+ *
+ * @param o
+ */
public void cancelOrder(Order o) {
tradelock.lock();
TreeSet book = this.selectOrderBook(o.type);
@@ -249,7 +253,100 @@ public class Exchange extends Thread {
long nextQuoteId = 0;
- private void executeOrders() {
+ /**
+ *
+ */
+ protected void executeOrders() {
+
+ while (!bid.isEmpty() && !ask.isEmpty()) {
+
+ Order b = bid.first();
+ Order a = ask.first();
+
+ if (b.limit < a.limit) {
+ // no match, nothing to do
+ return;
+ }
+
+ double price = b.id < a.id ? b.limit : a.limit;
+ long volume = b.volume>=a.volume ? a.volume : b.volume;
+
+
+
+ if (a.volume == 0) {
+ // This order is fully executed, remove
+ a.account.orderpending = false;
+ a.status = OrderStatus.executed;
+
+ a.account.pending.remove(a);
+
+ ask.pollFirst();
+ this.updateBookReceivers(OrderType.ask);
+ continue;
+ }
+
+ if (b.volume == 0) {
+ // This order is fully executed, remove
+ b.account.orderpending = false;
+ b.status = OrderStatus.executed;
+ b.account.pending.remove(b);
+ bid.pollFirst();
+ this.updateBookReceivers(OrderType.bid);
+ continue;
+ }
+
+ if (b.limit >= a.limit) {
+
+ price = b.id < a.id ? b.limit : a.limit;
+
+ /* if (b.id < a.id) {
+ price = b.limit;
+ } else {
+ price = a.limit;
+ }
+ */
+
+
+ if (b.volume >= a.volume) {
+ volume = a.volume;
+ } else {
+ volume = b.volume;
+ }
+
+ transferShares(a.account, b.account, volume, price);
+
+ // b.account.Buy(a.account, volume, price);
+ b.volume -= volume;
+ a.volume -= volume;
+
+ lastprice = price;
+ lastsvolume = volume;
+
+ Quote q = new Quote();
+
+ q.volume = volume;
+ q.price = price;
+ q.time = System.currentTimeMillis();
+
+ q.ask = a.limit;
+ q.bid = b.limit;
+ q.id = nextQuoteId++;
+
+ this.updateQuoteReceivers(q);
+ this.updateBookReceivers(OrderType.bid);
+ this.updateBookReceivers(OrderType.ask);
+
+
+ quoteHistory.add(q);
+ continue;
+
+ }
+
+ return;
+ }
+ }
+
+ private void executeOrdersX() {
while (!bid.isEmpty() && !ask.isEmpty()) {
@@ -285,15 +382,15 @@ public class Exchange extends Thread {
if (b.limit >= a.limit) {
double price;
-
- price = b.id= a.volume) {
diff --git a/src/main/java/sesim/Order.java b/src/main/java/sesim/Order.java
index ffed02a..2051901 100644
--- a/src/main/java/sesim/Order.java
+++ b/src/main/java/sesim/Order.java
@@ -25,12 +25,13 @@ public abstract class Order implements Comparable {
/**
* Type of order
*/
- public OrderType type;
+ public final OrderType type;
public Account account = null;
protected int compareLimit(Order o){
+
int r=0;
if (o.limit < limit) {
r=-1;
@@ -58,13 +59,7 @@ public abstract class Order implements Comparable {
if (r!=0)
return r;
- /* if (o.timestamp> timestamp)
- return -1;
-
- if (o.timestampid)
return -1;
@@ -104,7 +99,7 @@ public abstract class Order implements Comparable {
return String.format("%d", volume);
}
- Order() {
-
+ Order(OrderType type) {
+ this.type=type;
}
}
diff --git a/src/main/java/sesim/SellOrder.java b/src/main/java/sesim/SellOrder.java
index e6a9c29..b6b72fe 100644
--- a/src/main/java/sesim/SellOrder.java
+++ b/src/main/java/sesim/SellOrder.java
@@ -3,6 +3,6 @@ package sesim;
public class SellOrder extends Order {
public SellOrder(){
- type=OrderType.ask;
+ super(OrderType.ask);
}
}