diff --git a/src/StockExchange/Order.java b/src/StockExchange/Order.java index ef15f37..ebcc870 100644 --- a/src/StockExchange/Order.java +++ b/src/StockExchange/Order.java @@ -3,14 +3,22 @@ package StockExchange; public abstract class Order implements Comparable { /** - * when + * When the order was created */ public long timestamp = 0; + + /** + * Number of shares + */ public long size; + + /** + * Limit price + */ public double limit; -// long time; - double money = 0; -// public long shares=0; + + // double money = 0; + public long id = 0; public Account account = null; diff --git a/src/StockExchange/RandomTrader.java b/src/StockExchange/RandomTrader.java index 34e1ed6..de2077f 100644 --- a/src/StockExchange/RandomTrader.java +++ b/src/StockExchange/RandomTrader.java @@ -3,127 +3,111 @@ package StockExchange; import java.util.Random; import StockExchange.Order.OrderStatus; -public class RandomTrader extends ThreadedTrader{ +public class RandomTrader extends ThreadedTrader { // public Account account=new Account(); - Exchange ex=null; - Random rand = new Random(); - - public String name; - - // my current order - private Order myorder=null; - + Exchange ex = null; + Random rand = new Random(); - public RandomTrader (Exchange ex, long shares, double money){ - account.money=money; - account.shares=shares; - this.ex=ex; - } + public String name; - public void DoBuy() - { - - if (myorder!=null) - return; - - if (account.money <= 0) - return; - - double perc = rand.nextDouble() * 1.0; - double lp = ex.lastprice; - double limit = lp/100 * perc + lp; + // my current order + private Order myorder = null; + public RandomTrader(Exchange ex, long shares, double money) { + account.money = money; + account.shares = shares; + this.ex = ex; + } - long size = (int)(account.money/(limit*1)); - - - myorder = account.Buy(size, limit, ex); - return; - } + public void DoBuy() { - public void DoSell() - { - if (myorder!=null) - return; - - if (account.shares<=0) - return; - - double perc = rand.nextDouble() * 1.0; - double lp = ex.lastprice; - double limit = lp - lp/100 * perc; - - long size = (int)(account.shares); - - - myorder= account.Sell(size, limit, ex); - } + if (myorder != null) { + return; + } - - - - public void trade(){ + if (account.money <= 0) { + return; + } - if (myorder != null) - { - long age = myorder.getAge(); - if (myorder.status == OrderStatus.executed) - { - myorder=null; - // System.out.println(name); - // System.out.println("----------------------"); - // account.print_current(); - return; - } - - - if (myorder.getAge()>10){ - //System.out.println("Shall cancel now"); - //System.out.println(myorder.status); - ex.CancelOrder(myorder); - myorder=null; - return; - } - - return; - } + double perc = rand.nextDouble() * 1.0; + double lp = ex.lastprice; + double limit = lp / 100 * perc + lp; - - - - - - // What to do? - int action = rand.nextInt(3); -/* System.out.print(name); + long size = (int) (account.money / (limit * 1)); + + myorder = account.Buy(size, limit, ex); + return; + } + + public void DoSell() { + if (myorder != null) { + return; + } + + if (account.shares <= 0) { + return; + } + + double perc = rand.nextDouble() * 1.0; + double lp = ex.lastprice; + double limit = lp - lp / 100 * perc; + + long size = (int) (account.shares); + + myorder = account.Sell(size, limit, ex); + } + + public void trade() { + + if (myorder != null) { + long age = myorder.getAge(); + if (myorder.status == OrderStatus.executed) { + myorder = null; + // System.out.println(name); + // System.out.println("----------------------"); + // account.print_current(); + return; + } + + if (myorder.getAge() > 10) { + //System.out.println("Shall cancel now"); + //System.out.println(myorder.status); + ex.CancelOrder(myorder); + myorder = null; + return; + } + + return; + } + + // What to do? + int action = rand.nextInt(3); + /* System.out.print(name); System.out.println("---------------------------"); System.out.print("Action:"); System.out.println(action); - */ -/* if (action==0) + */ + /* if (action==0) { DoSell(); return; } - */ - - if (action == 1) - { - DoBuy(); - return; - } + */ - if (action == 2) - { - DoSell(); - return; - } - - - } - -/* public void run(){ + if (action == 1) { + DoBuy(); + return; + } + + if (action == 2) { + DoSell(); + return; + } + + } + + /* public void run(){ while (true) { try{ @@ -140,7 +124,5 @@ public class RandomTrader extends ThreadedTrader{ } } - */ - + */ } - diff --git a/src/StockExchange/SellOrder.java b/src/StockExchange/SellOrder.java index fb9ac25..41fb7f7 100644 --- a/src/StockExchange/SellOrder.java +++ b/src/StockExchange/SellOrder.java @@ -2,15 +2,15 @@ package StockExchange; public class SellOrder extends Order { - @Override - public int compareTo(Order o) { - - if (o.limit < limit) { - return 1; - } - if (o.limit > limit) { - return -1; - } - return 0; - } + @Override + public int compareTo(Order o) { + + if (o.limit < limit) { + return 1; + } + if (o.limit > limit) { + return -1; + } + return 0; + } } diff --git a/src/StockExchange/ThreadedTrader.java b/src/StockExchange/ThreadedTrader.java index 581e9f0..0a391a6 100644 --- a/src/StockExchange/ThreadedTrader.java +++ b/src/StockExchange/ThreadedTrader.java @@ -1,26 +1,23 @@ package StockExchange; -public abstract class ThreadedTrader extends Thread implements Trader { - - protected long sleeptime=100; - - public void RandomTrader (Exchange ex, long shares, double money){ - // this.ex=ex; - - } - - public void run(){ - while (true) - { - try{ - sleep(sleeptime); - } - catch(InterruptedException e) { - System.out.println("Interrupted"); - } - trade(); - } - } - +public abstract class ThreadedTrader extends Thread implements Trader { + + protected long sleeptime = 100; + + public void RandomTrader(Exchange ex, long shares, double money) { + // this.ex=ex; + + } + + public void run() { + while (true) { + try { + sleep(sleeptime); + } catch (InterruptedException e) { + System.out.println("Interrupted"); + } + trade(); + } + } } diff --git a/src/StockExchange/Trader.java b/src/StockExchange/Trader.java index 2fbbdb1..066b7ea 100644 --- a/src/StockExchange/Trader.java +++ b/src/StockExchange/Trader.java @@ -1,10 +1,11 @@ package StockExchange; +public interface Trader { -public interface Trader{ - String name = null; - public void trade(); - public Account account=new Account(); + String name = null; + + public void trade(); + public Account account = new Account(); // public Exchange ex=null; - -}; \ No newline at end of file + +}; diff --git a/src/StockExchange/TraderRun.java b/src/StockExchange/TraderRun.java index 8422429..d808905 100644 --- a/src/StockExchange/TraderRun.java +++ b/src/StockExchange/TraderRun.java @@ -1,20 +1,20 @@ package StockExchange; -public class TraderRun extends Thread{ - public String tname = ""; - public Exchange ex; - - public void run(){ - while (true) - { - try{ - sleep(100); - } - catch(InterruptedException e) { - System.out.println("Interrupted"); - } - -/* +public class TraderRun extends Thread { + + public String tname = ""; + public Exchange ex; + + @Override + public void run() { + while (true) { + try { + sleep(100); + } catch (InterruptedException e) { + System.out.println("Interrupted"); + } + + /* System.out.printf("%s locking\n", tname); ex.Lock(); System.out.printf("%s locked\n", tname); @@ -29,9 +29,8 @@ public class TraderRun extends Thread{ System.out.printf("%s unlocking\n", tname); // ex.Free(); System.out.printf("%s unlocked\n", tname); -*/ - - } - } - + */ + } + } + }