Work on charting
This commit is contained in:
parent
14127f08b5
commit
d6b975eea2
@ -3,4 +3,4 @@ do.depend=false
|
|||||||
do.jar=true
|
do.jar=true
|
||||||
javac.debug=true
|
javac.debug=true
|
||||||
javadoc.preview=true
|
javadoc.preview=true
|
||||||
user.properties.file=/home/tobias/.netbeans/8.1/build.properties
|
user.properties.file=/home/tube/.netbeans/8.1/build.properties
|
||||||
|
@ -3,17 +3,39 @@
|
|||||||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
|
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
|
||||||
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
|
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
|
||||||
<group>
|
<group>
|
||||||
<file>file:/home/tobias/NetBeansProjects/SeSim/src/Gui/AskBook.java</file>
|
<file>file:/home/tube/NetBeansProjects/SeSim/additional/README.txt</file>
|
||||||
<file>file:/home/tobias/NetBeansProjects/SeSim/src/Traders/RandomTraderConfig.java</file>
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/SeSim/Trader.java</file>
|
||||||
<file>file:/home/tobias/NetBeansProjects/SeSim/src/Gui/Chart.java</file>
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/SeSim/Locker.java</file>
|
||||||
<file>file:/home/tobias/NetBeansProjects/SeSim/src/Traders/RandomTrader.java</file>
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/SeSim/Order.java</file>
|
||||||
<file>file:/home/tobias/NetBeansProjects/SeSim/src/Gui/MainWin.java</file>
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Gui/ControlPanel.java</file>
|
||||||
<file>file:/home/tobias/NetBeansProjects/SeSim/src/SeSim/Exchange.java</file>
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/SeSim/Quote.java</file>
|
||||||
<file>file:/home/tobias/NetBeansProjects/SeSim/nbproject/configs/Sesim.properties</file>
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Gui/MainWin.java</file>
|
||||||
<file>file:/home/tobias/NetBeansProjects/SeSim/nbproject/configs/JWS_generated.properties</file>
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Gui/OrderBook.java</file>
|
||||||
<file>file:/home/tobias/NetBeansProjects/SeSim/src/SeSim/AutoTraderLIst.java</file>
|
<file>file:/home/tube/NetBeansProjects/SeSim/manifest.mf</file>
|
||||||
<file>file:/home/tobias/NetBeansProjects/SeSim/src/SeSim/SellOrder.java</file>
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/SeSim/TraderConfig.java</file>
|
||||||
<file>file:/home/tobias/NetBeansProjects/SeSim/nbproject/build-impl.xml</file>
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/SeSim/Account.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Gui/QuotePanel.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/SeSim/Exchange.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Gui/NewPanel.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Gui/Chart.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Traders/RandomTraderConfig.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Gui/AskBook.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/SeSim/AutoTrader.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Gui/BidBook.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Traders/SwitchingTrader.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/build.xml</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Gui/OrderBookPanel.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Traders/RandomTrader.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Gui/test.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/SeSim/AutoTraderLIst.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/SeSim/BuyOrder.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Traders/ManTrader.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/README.md</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Gui/CandlestickDemo.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/SeSim/Logger.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/Traders/SwitchingTraderConfig.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/src/SeSim/SellOrder.java</file>
|
||||||
|
<file>file:/home/tube/NetBeansProjects/SeSim/LICENSE</file>
|
||||||
</group>
|
</group>
|
||||||
</open-files>
|
</open-files>
|
||||||
</project-private>
|
</project-private>
|
||||||
|
@ -25,6 +25,8 @@
|
|||||||
*/
|
*/
|
||||||
package Gui;
|
package Gui;
|
||||||
|
|
||||||
|
import SeSim.Exchange.*;
|
||||||
|
import SeSim.*;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
@ -51,7 +53,6 @@ import org.jfree.data.xy.DefaultOHLCDataset;
|
|||||||
import org.jfree.data.xy.OHLCDataItem;
|
import org.jfree.data.xy.OHLCDataItem;
|
||||||
import org.jfree.data.xy.XYDataset;
|
import org.jfree.data.xy.XYDataset;
|
||||||
|
|
||||||
import SeSim.Exchange.*;
|
|
||||||
import SeSim.Quote;
|
import SeSim.Quote;
|
||||||
import java.util.SortedSet;
|
import java.util.SortedSet;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
@ -68,8 +69,8 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver {
|
|||||||
public Chart() {
|
public Chart() {
|
||||||
initComponents();
|
initComponents();
|
||||||
|
|
||||||
// String stockSymbol = "Schliemanz Koch AG";
|
String stockSymbol = "Schliemanz Koch AG";
|
||||||
String stockSymbol = "MSFT";
|
//String stockSymbol = "MSFT";
|
||||||
|
|
||||||
DateAxis domainAxis = new DateAxis("Date");
|
DateAxis domainAxis = new DateAxis("Date");
|
||||||
NumberAxis rangeAxis = new NumberAxis("Price");
|
NumberAxis rangeAxis = new NumberAxis("Price");
|
||||||
@ -87,6 +88,7 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver {
|
|||||||
//Now create the chart and chart panel
|
//Now create the chart and chart panel
|
||||||
JFreeChart chart = new JFreeChart(stockSymbol, null, mainPlot, false);
|
JFreeChart chart = new JFreeChart(stockSymbol, null, mainPlot, false);
|
||||||
ChartPanel chartPanel = new ChartPanel(chart);
|
ChartPanel chartPanel = new ChartPanel(chart);
|
||||||
|
|
||||||
chartPanel.setPreferredSize(new Dimension(500, 270));
|
chartPanel.setPreferredSize(new Dimension(500, 270));
|
||||||
|
|
||||||
add(chartPanel);
|
add(chartPanel);
|
||||||
@ -115,65 +117,51 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected OHLCDataItem getOhlcData(long first, long last, SortedSet<Quote> quotes) {
|
||||||
|
|
||||||
|
Quote s = new Quote();
|
||||||
|
|
||||||
|
s.time = first;
|
||||||
|
|
||||||
protected OHLCDataItem getOhlcData(long first, long last, SortedSet <Quote> quotes ){
|
SortedSet<Quote> l = quotes.tailSet(s);
|
||||||
Quote e=new Quote();
|
|
||||||
e.time=first;
|
|
||||||
e.id=0;
|
|
||||||
|
|
||||||
Quote qq = quotes.first();
|
double open = 0;
|
||||||
System.out.print(String.format
|
double high = 0;
|
||||||
("Quote First %f %d %d \n", qq.price,qq.time,qq.id)
|
double low = 0;
|
||||||
);
|
double close = 0;
|
||||||
|
double volume=0;
|
||||||
|
|
||||||
System.out.print("Qzitesn"+quotes.size() +"\n");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Quote z = new Quote();
|
|
||||||
z.id=-1;
|
|
||||||
z.time=0;
|
|
||||||
|
|
||||||
|
|
||||||
SortedSet<Quote> l = quotes.tailSet(z);
|
|
||||||
|
|
||||||
System.exit(0);
|
|
||||||
|
|
||||||
double open=0;
|
|
||||||
double high=0;
|
|
||||||
double low=0;
|
|
||||||
double close=0;
|
|
||||||
double volume;
|
|
||||||
|
|
||||||
Iterator <Quote>it = l.iterator();
|
|
||||||
|
|
||||||
|
Iterator<Quote> it = l.iterator();
|
||||||
|
|
||||||
Quote q;
|
Quote q;
|
||||||
q = it.next();
|
|
||||||
open=q.price;
|
|
||||||
|
|
||||||
high=q.price;
|
|
||||||
low=q.price;
|
|
||||||
volume = q.volume;
|
|
||||||
|
|
||||||
|
|
||||||
while (it.hasNext() && q.time<last){
|
if (it.hasNext()) {
|
||||||
|
q = it.next();
|
||||||
|
open = q.price;
|
||||||
|
high = q.price;
|
||||||
|
low = q.price;
|
||||||
|
volume = q.volume;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
q = new Quote();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
while (it.hasNext() && q.time < last) {
|
||||||
q = it.next();
|
q = it.next();
|
||||||
|
|
||||||
|
if (q.price > high) {
|
||||||
if (q.price>high)
|
|
||||||
high = q.price;
|
high = q.price;
|
||||||
if (q.price<low)
|
}
|
||||||
low=q.price;
|
if (q.price < low) {
|
||||||
|
low = q.price;
|
||||||
|
}
|
||||||
|
|
||||||
volume += q.volume;
|
volume += q.volume;
|
||||||
|
|
||||||
}
|
}
|
||||||
close=q.price;
|
close = q.price;
|
||||||
|
|
||||||
Date date = new Date(first);
|
Date date = new Date(first);
|
||||||
return new OHLCDataItem(
|
return new OHLCDataItem(
|
||||||
@ -181,46 +169,23 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected OHLCDataItem[] getData() {
|
protected OHLCDataItem[] getData() {
|
||||||
|
|
||||||
List<OHLCDataItem> data = new ArrayList<>();
|
List<OHLCDataItem> data = new ArrayList<>();
|
||||||
|
|
||||||
SortedSet <Quote>s = MainWin.se.getQuoteHistory(60);
|
long ct;
|
||||||
this.getOhlcData(0, System.currentTimeMillis(), s);
|
ct = Exchange.getCurrentTimeSeconds(10);
|
||||||
|
|
||||||
|
SortedSet<Quote> h = MainWin.se.getQuoteHistory(ct - 60);
|
||||||
|
|
||||||
|
for (long i = (ct - 60)*1000; i < (ct + 10)*1000; i += 10*1000) {
|
||||||
|
OHLCDataItem d = getOhlcData(i, i + 10*1000, h);
|
||||||
|
data.add(d);
|
||||||
|
}
|
||||||
|
|
||||||
Iterator <Quote>i = s.iterator();
|
System.out.print(data.size() + "\n");
|
||||||
|
// System.exit(0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// OHLCDataItem item = new OHLCDataItem();
|
|
||||||
|
|
||||||
|
|
||||||
long t=0;
|
|
||||||
// if ()
|
|
||||||
|
|
||||||
|
|
||||||
// Quote q = i.next();
|
|
||||||
// OHLCDataItem item = new OHLCDataItem(
|
|
||||||
// date, open, high, low, close, volume);
|
|
||||||
|
|
||||||
/* double open =
|
|
||||||
double high =
|
|
||||||
double low =
|
|
||||||
double close =
|
|
||||||
double volume = Double.parseDouble(st.nextToken());
|
|
||||||
double adjClose = Double.parseDouble(st.nextToken());
|
|
||||||
*/
|
|
||||||
|
|
||||||
// data.add(item);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//return data.toArray(new <OHLCDataItem> rdata[]);
|
|
||||||
return data.toArray(new OHLCDataItem[data.size()]);
|
return data.toArray(new OHLCDataItem[data.size()]);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -292,12 +257,12 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver {
|
|||||||
public void UpdateQuote(Quote q) {
|
public void UpdateQuote(Quote q) {
|
||||||
return;
|
return;
|
||||||
//q.print();
|
//q.print();
|
||||||
/* SortedSet s = MainWin.se.getQuoteHistory(60);
|
/* SortedSet h = MainWin.se.getQuoteHistory(60);
|
||||||
System.out.print(
|
System.out.print(
|
||||||
"SortedSet size:"
|
"SortedSet size:"
|
||||||
+ s.size()
|
+ h.size()
|
||||||
+ "\n"
|
+ "\n"
|
||||||
);
|
);
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,23 +27,89 @@ package Gui;
|
|||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author tobias
|
* @author tobias
|
||||||
*/
|
*/
|
||||||
public class test {
|
public class test {
|
||||||
public static void main(String args[]){
|
|
||||||
SortedSet <String>s = new TreeSet<>();
|
|
||||||
s.add("b");
|
|
||||||
s.add("e");
|
|
||||||
s.add("z");
|
|
||||||
|
|
||||||
SortedSet <String> ts = s.tailSet("d");
|
static class Problem {
|
||||||
|
|
||||||
SortedSet <String> ts2 = ts.tailSet("n");
|
class Elem implements Comparable {
|
||||||
|
|
||||||
|
public int id;
|
||||||
|
|
||||||
|
public Elem(int id) {
|
||||||
|
this.id = id;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compareTo(Object o) {
|
||||||
|
Elem e = (Elem) o;
|
||||||
|
return id - e.id;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
SortedSet<Elem> s = new TreeSet<>();
|
||||||
|
s.add(new Elem(1));
|
||||||
|
s.add(new Elem(7));
|
||||||
|
s.add(new Elem(12));
|
||||||
|
Elem e = new Elem(5);
|
||||||
|
|
||||||
|
SortedSet<Elem> ts = exclusiveTailSet(s, e);
|
||||||
|
|
||||||
|
Elem e2 = new Elem(0);
|
||||||
|
|
||||||
|
// SortedSet<Elem> ts2 = exclusiveTailSet(ts,e);
|
||||||
|
SortedSet<Elem> ts2 = ts.tailSet(e2);
|
||||||
|
|
||||||
|
e.id = 99;
|
||||||
|
|
||||||
|
System.out.print(String.format("First: %s\n", ts.first().id));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static class NoProblem {
|
||||||
|
public void run(){
|
||||||
|
SortedSet<Integer> s=new TreeSet<>();
|
||||||
|
|
||||||
|
s.add(10);
|
||||||
|
s.add(20);
|
||||||
|
s.add(30);
|
||||||
|
s.add(40);
|
||||||
|
s.add(50);
|
||||||
|
s.add(60);
|
||||||
|
|
||||||
|
int e1 = 15;
|
||||||
|
SortedSet l1 = s.tailSet(e1);
|
||||||
|
|
||||||
|
int e2 = -1;
|
||||||
|
|
||||||
|
SortedSet l2 = l1.tailSet(e2);
|
||||||
|
|
||||||
|
System.out.print("First:"+l2.first()+"\n");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <Ta> SortedSet<Ta> exclusiveTailSet(SortedSet<Ta> ts, Ta elem) {
|
||||||
|
Iterator<Ta> iter = ts.tailSet(elem).iterator();
|
||||||
|
|
||||||
|
return ts.tailSet(iter.next());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String args[]) {
|
||||||
|
NoProblem p = new NoProblem();
|
||||||
|
p.run();
|
||||||
|
|
||||||
|
|
||||||
System.out.print(String.format("First: %s\n", ts2.first()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,36 +27,36 @@ public class Exchange extends Thread {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public SortedSet <Quote> getQuoteHistory(int seconds){
|
public static long getCurrentTimeSeconds(long div) {
|
||||||
Quote last = quoteHistory.last();
|
long ct = System.currentTimeMillis() / 1000*div;
|
||||||
long ct = last.time - seconds * 1000;
|
return ct * div;
|
||||||
Quote e = new Quote();
|
}
|
||||||
e.time=ct;
|
|
||||||
e.time=-1;
|
|
||||||
e.id=3;
|
|
||||||
SortedSet <Quote> qqq =this.quoteHistory;
|
|
||||||
|
|
||||||
|
public static long getCurrentTimeSeconds(){
|
||||||
|
return getCurrentTimeSeconds(1);
|
||||||
|
}
|
||||||
|
|
||||||
SortedSet<Quote> l = quoteHistory.tailSet(e);
|
public SortedSet<Quote> getQuoteHistory(long start) {
|
||||||
e.id=-1;
|
|
||||||
SortedSet<Quote> ll = l.tailSet(e);
|
|
||||||
|
|
||||||
int size = qqq.size();
|
Quote s = new Quote();
|
||||||
long fid = qqq.first().id;
|
s.time = start;
|
||||||
|
s.time = 2;
|
||||||
|
s.id = 2;
|
||||||
|
|
||||||
System.out.print("SS0: "+qqq.first().id+"\n");
|
TreeSet<Quote> result = new TreeSet<>();
|
||||||
|
result.addAll(this.quoteHistory.tailSet(s));
|
||||||
|
|
||||||
|
return result;
|
||||||
return ll;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* public SortedSet<Quote> getQuoteHistory(int seconds) {
|
||||||
|
Quote last = quoteHistory.last();
|
||||||
|
return this.getQuoteHistory(seconds, last.time);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// Class to describe an executed order
|
// Class to describe an executed order
|
||||||
|
|
||||||
|
|
||||||
// QuoteReceiver has to be implemented by objects that wants
|
// QuoteReceiver has to be implemented by objects that wants
|
||||||
// to receive quote updates
|
// to receive quote updates
|
||||||
public interface QuoteReceiver {
|
public interface QuoteReceiver {
|
||||||
@ -100,11 +100,10 @@ public class Exchange extends Thread {
|
|||||||
i.next().UpdateOrderBook();
|
i.next().UpdateOrderBook();
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
sleep(10);
|
sleep(10);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
System.out.println("I was Interrupted");
|
System.out.println("I was Interrupted");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,12 +136,15 @@ public class Exchange extends Thread {
|
|||||||
public TreeSet<Order> bid;
|
public TreeSet<Order> bid;
|
||||||
public TreeSet<Order> ask;
|
public TreeSet<Order> ask;
|
||||||
|
|
||||||
|
private Locker tradelock = new Locker();
|
||||||
|
|
||||||
|
/*
|
||||||
private final Semaphore available = new Semaphore(1, true);
|
private final Semaphore available = new Semaphore(1, true);
|
||||||
|
|
||||||
private void Lock() {
|
private void Lock() {
|
||||||
try {
|
try {
|
||||||
available.acquire();
|
available.acquire();
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException s) {
|
||||||
System.out.println("Interrupted\n");
|
System.out.println("Interrupted\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,7 +153,7 @@ public class Exchange extends Thread {
|
|||||||
private void Unlock() {
|
private void Unlock() {
|
||||||
available.release();
|
available.release();
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
private TreeSet<Order> selectOrderBook(OrderType t) {
|
private TreeSet<Order> selectOrderBook(OrderType t) {
|
||||||
|
|
||||||
switch (t) {
|
switch (t) {
|
||||||
@ -222,13 +224,13 @@ public class Exchange extends Thread {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void cancelOrder(Order o) {
|
public void cancelOrder(Order o) {
|
||||||
Lock();
|
tradelock.lock();
|
||||||
TreeSet<Order> book = this.selectOrderBook(o.type);
|
TreeSet<Order> book = this.selectOrderBook(o.type);
|
||||||
book.remove(o);
|
book.remove(o);
|
||||||
this.updateBookReceivers(o.type);
|
this.updateBookReceivers(o.type);
|
||||||
o.account.pending.remove(o);
|
o.account.pending.remove(o);
|
||||||
o.status = OrderStatus.canceled;
|
o.status = OrderStatus.canceled;
|
||||||
Unlock();
|
tradelock.unlock();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,7 +249,7 @@ public class Exchange extends Thread {
|
|||||||
src.money += price * volume;
|
src.money += price * volume;
|
||||||
}
|
}
|
||||||
|
|
||||||
long nextQuoteId=0;
|
long nextQuoteId = 0;
|
||||||
|
|
||||||
public void OrderMatching() {
|
public void OrderMatching() {
|
||||||
|
|
||||||
@ -320,26 +322,22 @@ public class Exchange extends Thread {
|
|||||||
q.price = price;
|
q.price = price;
|
||||||
q.time = System.currentTimeMillis();
|
q.time = System.currentTimeMillis();
|
||||||
|
|
||||||
|
q.ask = a.limit;
|
||||||
|
q.bid = b.limit;
|
||||||
q.ask=a.limit;
|
|
||||||
q.bid=b.limit;
|
|
||||||
q.id = nextQuoteId++;
|
q.id = nextQuoteId++;
|
||||||
|
|
||||||
|
|
||||||
this.updateQuoteReceivers(q);
|
this.updateQuoteReceivers(q);
|
||||||
this.updateBookReceivers(OrderType.bid);
|
this.updateBookReceivers(OrderType.bid);
|
||||||
this.updateBookReceivers(OrderType.ask);
|
this.updateBookReceivers(OrderType.ask);
|
||||||
|
|
||||||
/* System.out.print(
|
/* System.out.print(
|
||||||
"Executed: "
|
"Executed: "
|
||||||
+ q.price
|
+ q.price
|
||||||
+ " / "
|
+ " / "
|
||||||
+ q.volume
|
+ q.volume
|
||||||
+ "\n"
|
+ "\n"
|
||||||
);
|
);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
quoteHistory.add(q);
|
quoteHistory.add(q);
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -378,7 +376,6 @@ public class Exchange extends Thread {
|
|||||||
if (ret) {
|
if (ret) {
|
||||||
this.updateBookReceivers(o.type);
|
this.updateBookReceivers(o.type);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -389,14 +386,13 @@ public class Exchange extends Thread {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock();
|
tradelock.lock();
|
||||||
o.timestamp = System.currentTimeMillis();
|
o.timestamp = System.currentTimeMillis();
|
||||||
//System.out.print(o.timestamp + " TS:\n");
|
|
||||||
o.id = orderid++;
|
o.id = orderid++;
|
||||||
addOrder(o);
|
addOrder(o);
|
||||||
o.account.pending.add(o);
|
o.account.pending.add(o);
|
||||||
OrderMatching();
|
OrderMatching();
|
||||||
Unlock();
|
tradelock.unlock();
|
||||||
|
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
@ -438,10 +434,10 @@ public class Exchange extends Thread {
|
|||||||
return lastprice;
|
return lastprice;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double sendOrder(Account o) {
|
/* public double sendOrder(Account o) {
|
||||||
return 0.7;
|
return 0.7;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -61,10 +61,10 @@ public class Quote implements Comparable {
|
|||||||
int ret;
|
int ret;
|
||||||
Quote q = (Quote)o;
|
Quote q = (Quote)o;
|
||||||
|
|
||||||
/* ret = (int)(this.time-q.time);
|
ret = (int)(this.time-q.time);
|
||||||
if (ret !=0)
|
if (ret !=0)
|
||||||
return ret;
|
return ret;
|
||||||
*/
|
|
||||||
return (int)(this.id-q.id);
|
return (int)(this.id-q.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user