Interface improved

This commit is contained in:
7u83 2017-01-12 01:44:50 +01:00
parent 80e48e1ee0
commit 68d7925f82
2 changed files with 105 additions and 90 deletions

View File

@ -16,8 +16,6 @@ public class Exchange extends Thread {
BID, ASK
}
IDGenerator account_id = new IDGenerator();
private class Account implements Comparable {
@ -77,7 +75,15 @@ public class Exchange extends Thread {
return d > 0 ? 1 : -1;
}
return left.id < right.id ? -1 : 1;
if(left.id<right.id)
return -1;
if(left.id>right.id)
return 1;
return 0;
// return left.id < right.id ? -1 : 1;
}
}
@ -277,6 +283,7 @@ public class Exchange extends Thread {
}
public class OrderBookItem {
public long id;
public double limit;
public double volume;
@ -297,9 +304,9 @@ public class Exchange extends Thread {
Order o = it.next();
OrderBookItem n = new OrderBookItem();
n.id=o.id;
n.limit=o.limit;
n.volume=o.volume;
n.id = o.id;
n.limit = o.limit;
n.volume = o.volume;
ret.add(n);
//System.out.print("Order_old" + o.limit);
@ -353,23 +360,35 @@ public class Exchange extends Thread {
dst.shares += shares;
}
public boolean cancelOrder(double account_id, long order_id){
public boolean cancelOrder(double account_id, long order_id) {
Account a = accounts.get(account_id);
if (a==null){
if (a == null) {
return false;
}
boolean ret=false;
boolean ret = false;
tradelock.lock();
Order o = a.orders.get(order_id);
if (o != null){
order_books.get(o.type).remove(o);
a.orders.remove(o.id);
ret=true;
}
// System.out.print("The Order:"+o.limit+"\n");
if (o != null) {
TreeSet ob =order_books.get(o.type);
System.out.print("We have the orderbook"+ob.size()+"\n");
System.out.print("Want to remove:"+o.limit+" "+o.volume+" "+o.id+"\n");
boolean rc = ob.remove(o);
System.out.print("My first rc = :" + rc);
a.orders.remove(o.id);
ret = true;
}
tradelock.unlock();
this.updateBookReceivers(OrderType.BID);
@ -385,7 +404,7 @@ public class Exchange extends Thread {
tradelock.lock();
TreeSet<Order_old> book = this.selectOrderBook(o.type);
book.remove(o);
/* this.updateBookReceivers(o.type);
/* this.updateBookReceivers(o.type);
o.account.pending.remove(o);
o.status = OrderStatus.canceled;
tradelock.unlock();
@ -427,8 +446,8 @@ public class Exchange extends Thread {
TreeSet<Order> bid = order_books.get(OrderType.BID);
TreeSet<Order> ask = order_books.get(OrderType.ASK);
double volume_total=0;
double money_total=0;
double volume_total = 0;
double money_total = 0;
while (!bid.isEmpty() && !ask.isEmpty()) {
@ -452,19 +471,18 @@ public class Exchange extends Thread {
b.volume -= volume;
a.volume -= volume;
volume_total+=volume;
money_total+=price*volume;
volume_total += volume;
money_total += price * volume;
removeOrderIfExecuted(a);
removeOrderIfExecuted(b);
}
Quote q = new Quote();
q.price=money_total/volume_total;
q.volume=volume_total;
q.time=System.currentTimeMillis();
q.price = money_total / volume_total;
q.volume = volume_total;
q.time = System.currentTimeMillis();
System.out.print("Price" + q.price + "," + q.volume + "\n");
@ -645,19 +663,19 @@ public class Exchange extends Thread {
return o.id;
}
public double getBestLimit(OrderType type){
public double getBestLimit(OrderType type) {
Order o = order_books.get(type).first();
if (o==null){
if (o == null) {
return -1;
}
return o.limit;
}
public int getNumberOfOpenOrders(double account_id){
Account a=accounts.get(account_id);
if (a==null)
public int getNumberOfOpenOrders(double account_id) {
Account a = accounts.get(account_id);
if (a == null) {
return 0;
}
return a.orders.size();
}
@ -672,50 +690,48 @@ public class Exchange extends Thread {
ad.money = a.money;
ad.shares = a.shares;
ad.orders=new ArrayList<OrderData>();
ad.orders = new ArrayList<OrderData>();
ad.orders.iterator();
a.orders.values();
Set s =a.orders.keySet();
Set s = a.orders.keySet();
Iterator it = s.iterator();
System.out.print("Keys list"+s.size()+"\n");
while (it.hasNext()){
long x = (long)it.next();
System.out.print("X"+x+"\n");
System.out.print("Keys list" + s.size() + "\n");
while (it.hasNext()) {
long x = (long) it.next();
System.out.print("X" + x + "\n");
Order o = a.orders.get(x);
System.out.print("oGot: "+o.limit+" "+o.volume+"\n");
System.out.print("oGot: " + o.limit + " " + o.volume + "\n");
OrderData od = new OrderData();
od.id=o.id;
od.limit=o.limit;
od.volume=o.volume;
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){
public ArrayList<OrderData> getOpenOrders(double account_id) {
Account a = accounts.get(account_id);
if (a==null)
if (a == null) {
return null;
}
ArrayList <OrderData>al = new ArrayList();
ArrayList<OrderData> al = new ArrayList();
Iterator it = a.orders.entrySet().iterator();
while (it.hasNext()){
Order o = (Order)it.next();
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;
od.limit = o.limit;
od.volume = o.initial_volume;
od.executed = o.initial_volume - o.volume;
od.id = o.id;
al.add(od);
}

View File

@ -54,9 +54,9 @@ public class RandomTrader extends AutoTrader {
long event(){
System.out.print("Hello world Iam a trader\n");
this.cancelOrders();
return this.cancelOrders();
// doBuy();
return 10000;
}
@ -142,13 +142,12 @@ public class RandomTrader extends AutoTrader {
System.out.print("Killing: "+od.id+"\n");
}
}
else{
doBuy();
}
return 10000;
return 15000;
}