Some refactoring, dead code removed etc.

This commit is contained in:
7u83 2017-12-10 23:10:27 +01:00
parent 989e35a7be
commit c3812b7660
3 changed files with 39 additions and 166 deletions

View File

@ -1,4 +1,4 @@
#Sun, 10 Dec 2017 18:56:38 +0100
#Sun, 10 Dec 2017 23:09:50 +0100
annotation.processing.enabled=true
annotation.processing.enabled.in.editor=false
annotation.processing.processors.list=

View File

@ -210,14 +210,14 @@ public class Exchange {
*/
}
void updateOHLCData(Stock stock,Quote q) {
/* void updateOHLCData(Stock stock,Quote q) {
Iterator<OHLCData> it = stock.ohlc_data.values().iterator();
while (it.hasNext()) {
OHLCData data = it.next();
data.realTimeAdd(q.time, (float) q.price, (float) q.volume);
}
}
*/
ArrayList<Indicator> indicators;
void updateIndicators(Quote q) {
@ -310,8 +310,8 @@ public class Exchange {
buy_orders = 0;
sell_orders = 0;
timer = new Scheduler(); // timer = new Scheduler();
// random = new Random(12);
random = new Random();
random = new Random(12);
//random = new Random();
// quoteHistory = new TreeSet();
getDefaultStock().reset();
@ -379,43 +379,6 @@ public class Exchange {
}
class Executor extends Thread {
@Override
public void run() {
/* Stock stock = getDefaultStock();
synchronized (this) {
try {
while (true) {
this.wait();
Order o;
while (null != (o = stock.order_queue.poll())) {
addOrderToBook(o);
Account a = o.account;
a.orders.put(o.id, o);
a.update(o);
executeOrders(getDefaultStock());
}
updateBookReceivers(OrderType.SELLLIMIT);
updateBookReceivers(OrderType.BUYLIMIT);
}
} catch (InterruptedException ex) {
Logger.getLogger(Exchange.class.getName()).log(Level.SEVERE, null, ex);
}
}
*/
}
}
final Executor executor = new Executor();
/**
* Start the exchange
*/
@ -432,30 +395,6 @@ public class Exchange {
timer.terminate();
}
/*
class BidBook extends TreeSet {
TreeSet t = new TreeSet();
boolean hallo() {
t.comparator();
return true;
}
}
*/
/* public SortedSet<Quote> getQuoteHistory(long start) {
Quote s = new Quote();
s.time = start * 1000;
s.id = 0;
TreeSet<Quote> result = new TreeSet<>();
result.addAll(this.quoteHistory.tailSet(s));
return result;
}
*/
public final String CFG_MONEY_DECIMALS = "money_decimals";
public final String CFG_SHARES_DECIMALS = "shares_decimals";
@ -550,7 +489,7 @@ public class Exchange {
public Quote getBestPrice_0(Stock stock) {
synchronized (executor) {
synchronized (stock) {
SortedSet<Order> bid = stock.order_books.get(OrderType.BUYLIMIT);
SortedSet<Order> ask = stock.order_books.get(OrderType.SELLLIMIT);
@ -715,7 +654,7 @@ public class Exchange {
return null;
}
ArrayList<Order> ret;
synchronized (executor) {
synchronized (stock) {
ret = new ArrayList<>();
@ -778,7 +717,7 @@ public class Exchange {
Order o;
// System.out.printf("Getting executor %d\n", Thread.currentThread().getId());
synchronized (executor) {
synchronized (stock) {
// System.out.printf("Have executor %d\n", Thread.currentThread().getId());
o = a.orders.get(order_id);
@ -831,25 +770,15 @@ public class Exchange {
public double fairValue = 0;
private void removeOrderIfExecuted(Stock stock, Order o) {
if (o.getAccount().getOwner().getName().equals("Tobias0")) {
// System.out.printf("Tobias 0 test\n");
}
if (o.volume != 0) {
if (o.getAccount().getOwner().getName().equals("Tobias0")) {
// System.out.printf("Patially remove tobias\n");
}
o.status = OrderStatus.PARTIALLY_EXECUTED;
o.account.update(o);
return;
}
if (o.getAccount().getOwner().getName().equals("Tobias0")) {
// System.out.printf("Fully remove tobias\n");
}
o.account.orders.remove(o.id);
SortedSet book = stock.order_books.get(o.type);
@ -878,7 +807,7 @@ public class Exchange {
sl.remove(s);
s.type = OrderType.SELL;
addOrderToBook(s);
stock.addOrderToBook(s);
// System.out.printf("Stoploss hit %f %f\n", s.volume, s.limit);
}
@ -921,7 +850,7 @@ public class Exchange {
Stock stock = getDefaultStock();
stock.quoteHistory.add(q);
updateOHLCData(stock,q);
stock.updateOHLCData(q);
updateQuoteReceivers(q);
}
@ -930,7 +859,6 @@ public class Exchange {
*/
public void executeOrders(Stock stock) {
// System.out.printf("Exec Orders\n");
SortedSet<Order> bid = stock.order_books.get(OrderType.BUYLIMIT);
SortedSet<Order> ask = stock.order_books.get(OrderType.SELLLIMIT);
@ -1031,26 +959,8 @@ public class Exchange {
long buy_orders = 0;
long sell_orders = 0;
private void addOrderToBook(Stock stock, Order o) {
stock.order_books.get(o.type).add(o);
switch (o.type) {
case BUY:
case BUYLIMIT:
buy_orders++;
break;
case SELL:
case SELLLIMIT:
sell_orders++;
break;
}
// System.out.printf("B/S %d/%d Failed B/S: %d/%d\n", buy_orders, sell_orders,buy_failed,sell_failed);
}
private void addOrderToBook(Order o) {
addOrderToBook(getDefaultStock(), o);
}
long buy_failed = 0;
long sell_failed = 0;
@ -1065,7 +975,7 @@ public class Exchange {
public long createOrder(double account_id,
String stocksymbol, OrderType type, double volume, double limit) {
Stock stock = this.getStock(stocksymbol);
Stock stock = getStock(stocksymbol);
Account a = accounts.get(account_id);
if (a == null) {
@ -1094,12 +1004,12 @@ public class Exchange {
return -1;
}
synchronized (executor) {
synchronized (stock) {
//num_orders++;
statistics.orders++;
addOrderToBook(o);
stock.addOrderToBook(o);
a.orders.put(o.id, o);
a.update(o);
@ -1139,65 +1049,5 @@ public class Exchange {
return accounts.get(account_id);
}
/*public AccountData getAccountData(double account_id_generator) {
tradelock.lock();
Account a = accounts.get(account_id_generator);
tradelock.unlock();
if (a == null) {
return null;
}
AccountData ad = new AccountData();
ad.id = account_id_generator;
ad.money = a.money;
ad.shares = a.shares;
ad.orders = new ArrayList<>();
ad.orders.iterator();
a.orders.values();
Set s = a.orders.keySet();
Iterator it = s.iterator();
while (it.hasNext()) {
long x = (long) it.next();
Order o = a.orders.get(x);
OrderData od = new OrderData();
od.id = o.id;
od.limit = o.limit;
od.volume = o.volume;
ad.orders.add(od);
}
//System.exit(0);
//a.orders.keySet();
//KeySet ks = a.orders.keySet();
return ad;
}
*/
/* public ArrayList<OrderData> getOpenOrders(double account_id_generator) {
Account a = accounts.get(account_id_generator);
if (a == null) {
return null;
}
ArrayList<OrderData> al = new ArrayList();
Iterator it = a.orders.entrySet().iterator();
while (it.hasNext()) {
Order o = (Order) it.next();
OrderData od = new OrderData();
od.limit = o.limit;
od.volume = o.initial_volume;
od.executed = o.initial_volume - o.volume;
od.id = o.id;
al.add(od);
}
return al;
}
*/
}

View File

@ -75,7 +75,7 @@ public class Stock {
/**
* Histrory of quotes
*/
public TreeSet<Quote> quoteHistory;
public TreeSet<Quote> quoteHistory;
HashMap<Integer, OHLCData> ohlc_data = new HashMap<>();
@ -108,4 +108,27 @@ public class Stock {
return data;
}
protected void updateOHLCData(Quote q) {
Iterator<OHLCData> it = ohlc_data.values().iterator();
while (it.hasNext()) {
OHLCData data = it.next();
data.realTimeAdd(q.time, (float) q.price, (float) q.volume);
}
}
protected void addOrderToBook(Order o) {
order_books.get(o.type).add(o);
switch (o.type) {
case BUY:
case BUYLIMIT:
break;
case SELL:
case SELLLIMIT:
break;
}
}
}