From 9b86599f0388b2b077535d2b8a52f32acb02422b Mon Sep 17 00:00:00 2001 From: 7u83 <7u83@mail.ru> Date: Sun, 10 Dec 2017 12:52:24 +0100 Subject: [PATCH] Included stock symbol in order creation. --- nbproject/project.properties | 2 +- src/sesim/Exchange.java | 37 ++++++++++++++------ src/sesim/Stock.java | 2 ++ src/traders/ManTrader/CreateOrderDialog.java | 2 +- src/traders/ManTrader/ManTraderConsole.java | 12 +++++-- src/traders/RandomTraderA.java | 4 +-- src/traders/RandomTraderB.java | 4 +-- 7 files changed, 43 insertions(+), 20 deletions(-) diff --git a/nbproject/project.properties b/nbproject/project.properties index 171ff64..3c7afc7 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -1,4 +1,4 @@ -#Sun, 10 Dec 2017 09:32:20 +0100 +#Sun, 10 Dec 2017 12:50:27 +0100 annotation.processing.enabled=true annotation.processing.enabled.in.editor=false annotation.processing.processors.list= diff --git a/src/sesim/Exchange.java b/src/sesim/Exchange.java index 50a140b..34fa61a 100644 --- a/src/sesim/Exchange.java +++ b/src/sesim/Exchange.java @@ -57,6 +57,11 @@ public class Exchange { public Stock getDefaultStock(){ return getStock(DEFAULT_STOCK); } + + public String getDefaultStockSymbol(){ + return DEFAULT_STOCK; + } + ConcurrentLinkedQueue order_queue = new ConcurrentLinkedQueue(); @@ -698,12 +703,14 @@ public class Exchange { } } - // long time = 0; - //double theprice = 12.9; -// long orderid = 1; - //double lastprice = 100.0; - // long lastsvolume; - // private final Locker tradelock = new Locker(); + + /** + * + * @param stock + * @param type + * @param depth + * @return + */ public ArrayList getOrderBook(Stock stock, OrderType type, int depth) { SortedSet book = stock.order_books.get(type); @@ -735,7 +742,10 @@ public class Exchange { return getOrderBook(getDefaultStock(),type,depth); } - + /** + * + * @return + */ public Quote getLastQuoete() { if (this.quoteHistory.isEmpty()) { return null; @@ -857,6 +867,7 @@ public class Exchange { removeOrderIfExecuted(getDefaultStock(),o); } + void checkSLOrders(Stock stock, double price) { SortedSet sl = stock.order_books.get(OrderType.STOPLOSS); SortedSet ask = stock.order_books.get(OrderType.SELLLIMIT); @@ -1054,17 +1065,23 @@ public class Exchange { * @param limit * @return order_id */ - public long createOrder(double account_id, OrderType type, double volume, double limit) { + public long createOrder(double account_id, + String stocksymbol, OrderType type, double volume, double limit) { + + Stock stock = this.getStock(stocksymbol); + Account a = accounts.get(account_id); if (a == null) { - System.out.printf("Order not places account\n"); return -1; } Order o = new Order(order_id_generator.getNext(), timer.currentTimeMillis(), a, type, roundShares(volume), roundMoney(limit)); + + o.stock=stock; + if (o.volume <= 0 || o.limit <= 0) { switch (o.type) { @@ -1077,12 +1094,10 @@ public class Exchange { buy_failed++; break; } - // System.out.printf("Order ffailed %f %f \n",o.volume,o.limit); return -1; } -// System.out.printf("Getting executor in create Order\n", Thread.currentThread().getId()); synchronized (executor) { //num_orders++; diff --git a/src/sesim/Stock.java b/src/sesim/Stock.java index 33afe69..b8151a1 100644 --- a/src/sesim/Stock.java +++ b/src/sesim/Stock.java @@ -58,5 +58,7 @@ public class Stock { } protected final HashMap> order_books; + + } diff --git a/src/traders/ManTrader/CreateOrderDialog.java b/src/traders/ManTrader/CreateOrderDialog.java index 9158af3..5e39f80 100644 --- a/src/traders/ManTrader/CreateOrderDialog.java +++ b/src/traders/ManTrader/CreateOrderDialog.java @@ -191,7 +191,7 @@ public class CreateOrderDialog extends javax.swing.JDialog { new Thread() { @Override public void run() { - Globals.se.createOrder(account.getID(), type, volume, limit); + Globals.se.createOrder(account.getID(), Globals.se.getDefaultStockSymbol(), type, volume, limit); } }.start(); diff --git a/src/traders/ManTrader/ManTraderConsole.java b/src/traders/ManTrader/ManTraderConsole.java index 5d0bf01..9c24f5b 100644 --- a/src/traders/ManTrader/ManTraderConsole.java +++ b/src/traders/ManTrader/ManTraderConsole.java @@ -176,7 +176,9 @@ public class ManTraderConsole extends javax.swing.JPanel { System.out.printf("Should buy: %f %f\n",volume,limit); - long createOrder = trader.getSE().createOrder(trader.getAccount().getID(), OrderType.BUYLIMIT, volume, limit); + long createOrder = trader.getSE().createOrder(trader.getAccount().getID(), + trader.getSE().getDefaultStockSymbol(), + OrderType.BUYLIMIT, volume, limit); System.out.printf("The retval is %d",createOrder); // this.ordersList.account=this.trader.getAccount(); @@ -191,7 +193,9 @@ public class ManTraderConsole extends javax.swing.JPanel { System.out.printf("Should sell: %f %f\n",volume,limit); - long createOrder = trader.getSE().createOrder(trader.getAccount().getID(), OrderType.SELLLIMIT, volume, limit); + long createOrder = trader.getSE().createOrder(trader.getAccount().getID(), + trader.getSE().getDefaultStockSymbol(), + OrderType.SELLLIMIT, volume, limit); System.out.printf("The retval is %d",createOrder); }//GEN-LAST:event_sellButtonActionPerformed @@ -201,7 +205,9 @@ public class ManTraderConsole extends javax.swing.JPanel { System.out.printf("Should stoploss: %f %f\n",volume,limit); - long createOrder = trader.getSE().createOrder(trader.getAccount().getID(), OrderType.STOPLOSS, volume, limit); + long createOrder = trader.getSE().createOrder(trader.getAccount().getID(), + trader.getSE().getDefaultStockSymbol(), + OrderType.STOPLOSS, volume, limit); System.out.printf("The retval is %d",createOrder); }//GEN-LAST:event_stopLossButtonActionPerformed diff --git a/src/traders/RandomTraderA.java b/src/traders/RandomTraderA.java index bc3eaed..b8d0765 100644 --- a/src/traders/RandomTraderA.java +++ b/src/traders/RandomTraderA.java @@ -405,7 +405,7 @@ public class RandomTraderA extends AutoTraderBase implements AccountListener { // System.out.printf("Buy Order wont work\n"); // return false; // } - long rc = se.createOrder(account_id, type, volume, limit); + long rc = se.createOrder(account_id, se.getDefaultStockSymbol(),type, volume, limit); if (rc == -1) { @@ -445,7 +445,7 @@ public class RandomTraderA extends AutoTraderBase implements AccountListener { // return false; // } // System.out.printf("Create a Sell Order %f %f!!!!\n", volume, limit); - long rc = se.createOrder(account_id, type, volume, limit); + long rc = se.createOrder(account_id, se.getDefaultStockSymbol(), type, volume, limit); return rc != -1; } diff --git a/src/traders/RandomTraderB.java b/src/traders/RandomTraderB.java index a09aa4c..afdaa63 100644 --- a/src/traders/RandomTraderB.java +++ b/src/traders/RandomTraderB.java @@ -296,7 +296,7 @@ public class RandomTraderB extends AutoTraderBase { return false; } - se.createOrder(account_id, type, volume, limit); + se.createOrder(account_id, se.getDefaultStockSymbol(), type, volume, limit); return true; @@ -334,7 +334,7 @@ public class RandomTraderB extends AutoTraderBase { return false; } - se.createOrder(account_id, type, volume, limit); + se.createOrder(account_id, se.getDefaultStockSymbol(), type, volume, limit); return true;