From 43ae21eea68d2e638249ae0035093378a0c4f4b2 Mon Sep 17 00:00:00 2001
From: 7u83 <7u83@maiol.ru>
Date: Thu, 5 Jan 2017 19:16:44 +0100
Subject: [PATCH] Prepare maven.
---
additional/README.txt | 1 -
build.xml | 73 ----
nbproject/configs/Sesim.properties | 1 +
nbproject/private/private.xml | 29 --
src/gui/AskBook.java | 56 ---
src/gui/BidBook.java | 49 ---
src/gui/CandlestickDemo.java | 99 ------
src/gui/Chart.form | 30 --
src/gui/Chart.java | 268 ---------------
src/gui/ControlPanel.form | 76 ----
src/gui/ControlPanel.java | 101 ------
src/gui/MainWin.form | 105 ------
src/gui/MainWin.java | 220 ------------
src/gui/NewPanel.form | 18 -
src/gui/NewPanel.java | 128 -------
src/gui/OrderBook.form | 83 -----
src/gui/OrderBook.java | 276 ---------------
src/gui/OrderBookPanel.form | 459 -------------------------
src/gui/OrderBookPanel.java | 111 ------
src/gui/QuotePanel.form | 326 ------------------
src/gui/QuotePanel.java | 142 --------
src/gui/test.java | 115 -------
src/sesim/Account.java | 100 ------
src/sesim/AutoTrader.java | 63 ----
src/sesim/AutoTraderLIst.java | 44 ---
src/sesim/BuyOrder.java | 9 -
src/sesim/Exchange.java | 457 ------------------------
src/sesim/Locker.java | 51 ---
src/sesim/Logger.java | 23 --
src/sesim/Order.java | 110 ------
src/sesim/Quote.java | 76 ----
src/sesim/SellOrder.java | 8 -
src/sesim/Trader.java | 69 ----
src/sesim/TraderConfig.java | 36 --
src/traders/ManTrader.java | 55 ---
src/traders/RandomTrader.java | 251 --------------
src/traders/RandomTraderConfig.java | 73 ----
src/traders/SwitchingTrader.java | 107 ------
src/traders/SwitchingTraderConfig.java | 57 ---
39 files changed, 1 insertion(+), 4354 deletions(-)
delete mode 100644 additional/README.txt
delete mode 100644 build.xml
delete mode 100644 src/gui/AskBook.java
delete mode 100644 src/gui/BidBook.java
delete mode 100644 src/gui/CandlestickDemo.java
delete mode 100644 src/gui/Chart.form
delete mode 100644 src/gui/Chart.java
delete mode 100644 src/gui/ControlPanel.form
delete mode 100644 src/gui/ControlPanel.java
delete mode 100644 src/gui/MainWin.form
delete mode 100644 src/gui/MainWin.java
delete mode 100644 src/gui/NewPanel.form
delete mode 100644 src/gui/NewPanel.java
delete mode 100644 src/gui/OrderBook.form
delete mode 100644 src/gui/OrderBook.java
delete mode 100644 src/gui/OrderBookPanel.form
delete mode 100644 src/gui/OrderBookPanel.java
delete mode 100644 src/gui/QuotePanel.form
delete mode 100644 src/gui/QuotePanel.java
delete mode 100644 src/gui/test.java
delete mode 100644 src/sesim/Account.java
delete mode 100644 src/sesim/AutoTrader.java
delete mode 100644 src/sesim/AutoTraderLIst.java
delete mode 100644 src/sesim/BuyOrder.java
delete mode 100644 src/sesim/Exchange.java
delete mode 100644 src/sesim/Locker.java
delete mode 100644 src/sesim/Logger.java
delete mode 100644 src/sesim/Order.java
delete mode 100644 src/sesim/Quote.java
delete mode 100644 src/sesim/SellOrder.java
delete mode 100644 src/sesim/Trader.java
delete mode 100644 src/sesim/TraderConfig.java
delete mode 100644 src/traders/ManTrader.java
delete mode 100644 src/traders/RandomTrader.java
delete mode 100644 src/traders/RandomTraderConfig.java
delete mode 100644 src/traders/SwitchingTrader.java
delete mode 100644 src/traders/SwitchingTraderConfig.java
diff --git a/additional/README.txt b/additional/README.txt
deleted file mode 100644
index e8dee14..0000000
--- a/additional/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-Put jcommon and jfreechart here.
diff --git a/build.xml b/build.xml
deleted file mode 100644
index 38acb0b..0000000
--- a/build.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Builds, tests, and runs the project SeSim.
-
-
-
diff --git a/nbproject/configs/Sesim.properties b/nbproject/configs/Sesim.properties
index e69de29..1f6ddbc 100644
--- a/nbproject/configs/Sesim.properties
+++ b/nbproject/configs/Sesim.properties
@@ -0,0 +1 @@
+main.class=gui.MainWin
diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml
index 0dbf1f5..37d1efe 100644
--- a/nbproject/private/private.xml
+++ b/nbproject/private/private.xml
@@ -4,37 +4,8 @@
file:/home/tube/NetBeansProjects/SeSim/additional/README.txt
- file:/home/tube/NetBeansProjects/SeSim/src/SeSim/Trader.java
- file:/home/tube/NetBeansProjects/SeSim/src/SeSim/Locker.java
- file:/home/tube/NetBeansProjects/SeSim/src/SeSim/Order.java
- file:/home/tube/NetBeansProjects/SeSim/src/Gui/ControlPanel.java
- file:/home/tube/NetBeansProjects/SeSim/src/SeSim/Quote.java
- file:/home/tube/NetBeansProjects/SeSim/src/Gui/MainWin.java
- file:/home/tube/NetBeansProjects/SeSim/src/Gui/OrderBook.java
file:/home/tube/NetBeansProjects/SeSim/manifest.mf
- file:/home/tube/NetBeansProjects/SeSim/src/SeSim/TraderConfig.java
- file:/home/tube/NetBeansProjects/SeSim/src/SeSim/Account.java
- file:/home/tube/NetBeansProjects/SeSim/src/Gui/QuotePanel.java
- file:/home/tube/NetBeansProjects/SeSim/src/SeSim/Exchange.java
- file:/home/tube/NetBeansProjects/SeSim/src/Gui/NewPanel.java
- file:/home/tube/NetBeansProjects/SeSim/src/Gui/Chart.java
- file:/home/tube/NetBeansProjects/SeSim/src/Traders/RandomTraderConfig.java
- file:/home/tube/NetBeansProjects/SeSim/src/Gui/AskBook.java
- file:/home/tube/NetBeansProjects/SeSim/src/SeSim/AutoTrader.java
- file:/home/tube/NetBeansProjects/SeSim/src/Gui/BidBook.java
- file:/home/tube/NetBeansProjects/SeSim/src/Traders/SwitchingTrader.java
- file:/home/tube/NetBeansProjects/SeSim/build.xml
- file:/home/tube/NetBeansProjects/SeSim/src/Gui/OrderBookPanel.java
- file:/home/tube/NetBeansProjects/SeSim/src/Traders/RandomTrader.java
- file:/home/tube/NetBeansProjects/SeSim/src/Gui/test.java
- file:/home/tube/NetBeansProjects/SeSim/src/SeSim/AutoTraderLIst.java
- file:/home/tube/NetBeansProjects/SeSim/src/SeSim/BuyOrder.java
- file:/home/tube/NetBeansProjects/SeSim/src/Traders/ManTrader.java
file:/home/tube/NetBeansProjects/SeSim/README.md
- file:/home/tube/NetBeansProjects/SeSim/src/Gui/CandlestickDemo.java
- file:/home/tube/NetBeansProjects/SeSim/src/SeSim/Logger.java
- file:/home/tube/NetBeansProjects/SeSim/src/Traders/SwitchingTraderConfig.java
- file:/home/tube/NetBeansProjects/SeSim/src/SeSim/SellOrder.java
file:/home/tube/NetBeansProjects/SeSim/LICENSE
diff --git a/src/gui/AskBook.java b/src/gui/AskBook.java
deleted file mode 100644
index c0b5fa2..0000000
--- a/src/gui/AskBook.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package gui;
-
-import sesim.Exchange.*;
-import sesim.Order.*;
-import java.util.ArrayList;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class AskBook extends OrderBook {
-
- @Override
- ArrayList getOrderBook() {
- return MainWin.se.getOrderBook(OrderType.ask,40);
- }
-
- @Override
- boolean getDesc(){
- return true;
- }
-
- public AskBook(){
- if (MainWin.se == null) {
- return;
- }
- MainWin.se.addBookReceiver(OrderType.ask, this);
-
- }
-
-}
diff --git a/src/gui/BidBook.java b/src/gui/BidBook.java
deleted file mode 100644
index b730460..0000000
--- a/src/gui/BidBook.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package gui;
-
-import sesim.Exchange.*;
-import sesim.Order.*;
-import java.util.ArrayList;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class BidBook extends OrderBook {
-
- @Override
- ArrayList getOrderBook() {
- return MainWin.se.getOrderBook(OrderType.bid, 40);
- }
-
- public BidBook() {
- if (MainWin.se == null) {
- return;
- }
- MainWin.se.addBookReceiver(OrderType.bid, this);
- }
-}
diff --git a/src/gui/CandlestickDemo.java b/src/gui/CandlestickDemo.java
deleted file mode 100644
index 17e59b7..0000000
--- a/src/gui/CandlestickDemo.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package gui;
-
-import org.jfree.chart.*;
-import org.jfree.chart.axis.*;
-import org.jfree.chart.plot.XYPlot;
-import org.jfree.chart.renderer.xy.CandlestickRenderer;
-import org.jfree.data.xy.*;
-
-import javax.swing.*;
-import java.awt.*;
-import java.io.*;
-import java.net.URL;
-import java.text.*;
-import java.util.*;
-import java.util.List;
-
-public class CandlestickDemo extends JFrame {
- public CandlestickDemo(String stockSymbol) {
- super("CandlestickDemo");
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-
- DateAxis domainAxis = new DateAxis("Date");
- NumberAxis rangeAxis = new NumberAxis("Price");
- CandlestickRenderer renderer = new CandlestickRenderer();
- XYDataset dataset = getDataSet(stockSymbol);
-
- XYPlot mainPlot = new XYPlot(dataset, domainAxis, rangeAxis, renderer);
-
- //Do some setting up, see the API Doc
- renderer.setSeriesPaint(0, Color.BLACK);
- renderer.setDrawVolume(false);
- rangeAxis.setAutoRangeIncludesZero(false);
- domainAxis.setTimeline( SegmentedTimeline.newMondayThroughFridayTimeline() );
-
- //Now create the chart and chart panel
- JFreeChart chart = new JFreeChart(stockSymbol, null, mainPlot, false);
- ChartPanel chartPanel = new ChartPanel(chart);
- chartPanel.setPreferredSize(new Dimension(600, 300));
-
- this.add(chartPanel);
- this.pack();
- }
- protected AbstractXYDataset getDataSet(String stockSymbol) {
- //This is the dataset we are going to create
- DefaultOHLCDataset result = null;
- //This is the data needed for the dataset
- OHLCDataItem[] data;
-
- //This is where we go get the data, replace with your own data source
- data = getData(stockSymbol);
-
- //Create a dataset, an Open, High, Low, Close dataset
- result = new DefaultOHLCDataset(stockSymbol, data);
-
- return result;
- }
- //This method uses yahoo finance to get the OHLC data
- protected OHLCDataItem[] getData(String stockSymbol) {
- List dataItems = new ArrayList();
- try {
- String strUrl= "http://ichart.finance.yahoo.com/table.csv?s="+stockSymbol+"&a=0&b=1&c=2008&d=3&e=30&f=2008&ignore=.csv";
- URL url = new URL(strUrl);
- BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
- DateFormat df = new SimpleDateFormat("y-M-d");
-
- String inputLine;
- in.readLine();
- while ((inputLine = in.readLine()) != null) {
- StringTokenizer st = new StringTokenizer(inputLine, ",");
-
- Date date = df.parse( st.nextToken() );
- double open = Double.parseDouble( st.nextToken() );
- double high = Double.parseDouble( st.nextToken() );
- double low = Double.parseDouble( st.nextToken() );
- double close = Double.parseDouble( st.nextToken() );
- double volume = Double.parseDouble( st.nextToken() );
- double adjClose = Double.parseDouble( st.nextToken() );
-
- OHLCDataItem item = new OHLCDataItem(date, open, high, low, close, volume);
- dataItems.add(item);
- }
- in.close();
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- //Data from Yahoo is from newest to oldest. Reverse so it is oldest to newest
- Collections.reverse(dataItems);
-
- //Convert the list into an array
- OHLCDataItem[] data = dataItems.toArray(new OHLCDataItem[dataItems.size()]);
-
- return data;
- }
-
- public static void main(String[] args) {
- new CandlestickDemo("MSFT").setVisible(true);
- }
-}
\ No newline at end of file
diff --git a/src/gui/Chart.form b/src/gui/Chart.form
deleted file mode 100644
index c9a3f64..0000000
--- a/src/gui/Chart.form
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
diff --git a/src/gui/Chart.java b/src/gui/Chart.java
deleted file mode 100644
index f7d6f57..0000000
--- a/src/gui/Chart.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package gui;
-
-import sesim.Exchange;
-import sesim.Exchange.*;
-import java.awt.Color;
-import java.awt.Dimension;
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.net.URL;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.StringTokenizer;
-import java.util.Iterator;
-
-import org.jfree.chart.ChartPanel;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.DateAxis;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.SegmentedTimeline;
-import org.jfree.chart.plot.XYPlot;
-import org.jfree.chart.renderer.xy.CandlestickRenderer;
-import org.jfree.data.xy.AbstractXYDataset;
-import org.jfree.data.xy.DefaultOHLCDataset;
-import org.jfree.data.xy.OHLCDataItem;
-import org.jfree.data.xy.XYDataset;
-
-import sesim.Quote;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class Chart extends javax.swing.JPanel implements QuoteReceiver {
-
- /**
- * Creates new form Chart
- */
- public Chart() {
- initComponents();
-
- String stockSymbol = "Schliemanz Koch AG";
- //String stockSymbol = "MSFT";
-
- DateAxis domainAxis = new DateAxis("Date");
- NumberAxis rangeAxis = new NumberAxis("Price");
- CandlestickRenderer renderer = new CandlestickRenderer();
- XYDataset dataset = getDataSet(stockSymbol);
-
- XYPlot mainPlot = new XYPlot(dataset, domainAxis, rangeAxis, renderer);
-
- //Do some setting up, see the API Doc
- renderer.setSeriesPaint(0, Color.BLACK);
- renderer.setDrawVolume(false);
- rangeAxis.setAutoRangeIncludesZero(false);
- domainAxis.setTimeline(SegmentedTimeline.newMondayThroughFridayTimeline());
-
- //Now create the chart and chart panel
- JFreeChart chart = new JFreeChart(stockSymbol, null, mainPlot, false);
- ChartPanel chartPanel = new ChartPanel(chart);
-
- chartPanel.setPreferredSize(new Dimension(500, 270));
-
- add(chartPanel);
- System.out.print("Hallo Welt\n");
-
- if (MainWin.se == null) {
- return;
- }
-
- MainWin.se.addQuoteReceiver(this);
-
- }
-
- protected AbstractXYDataset getDataSet(String stockSymbol) {
- //This is the dataset we are going to create
- DefaultOHLCDataset result = null;
- //This is the data needed for the dataset
- OHLCDataItem[] data;
-
- //This is where we go get the data, replace with your own data source
- data = getData();
-
- //Create a dataset, an Open, High, Low, Close dataset
- result = new DefaultOHLCDataset(stockSymbol, data);
-
- return result;
- }
-
- protected OHLCDataItem getOhlcData(long first, long last, SortedSet quotes) {
-
- Quote s = new Quote();
-
- s.time = first;
-
- SortedSet l = quotes.tailSet(s);
-
- double open = 0;
- double high = 0;
- double low = 0;
- double close = 0;
- double volume=0;
-
- Iterator it = l.iterator();
-
- Quote q;
-
-
- 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();
-
- if (q.price > high) {
- high = q.price;
- }
- if (q.price < low) {
- low = q.price;
- }
-
- volume += q.volume;
-
- }
- close = q.price;
-
- Date date = new Date(first);
- return new OHLCDataItem(
- date, open, high, low, close, volume
- );
- }
-
- protected OHLCDataItem[] getData() {
-
- List data = new ArrayList<>();
-
- long ct;
- ct = Exchange.getCurrentTimeSeconds(10);
-
- SortedSet 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);
- }
-
- System.out.print(data.size() + "\n");
- // System.exit(0);
-
- return data.toArray(new OHLCDataItem[data.size()]);
-
- }
-
- //This method uses yahoo finance to get the OHLC data
- protected OHLCDataItem[] getData_old() {
- String stockSymbol = "MSFT";
- List dataItems = new ArrayList();
- try {
- String strUrl = "http://ichart.finance.yahoo.com/table.csv?s=" + stockSymbol + "&a=0&b=1&c=2008&d=3&e=30&f=2008&ignore=.csv";
- URL url = new URL(strUrl);
- BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
- DateFormat df = new SimpleDateFormat("y-M-d");
-
- String inputLine;
- in.readLine();
- while ((inputLine = in.readLine()) != null) {
- StringTokenizer st = new StringTokenizer(inputLine, ",");
-
- Date date = df.parse(st.nextToken());
- double open = Double.parseDouble(st.nextToken());
- double high = Double.parseDouble(st.nextToken());
- double low = Double.parseDouble(st.nextToken());
- double close = Double.parseDouble(st.nextToken());
- double volume = Double.parseDouble(st.nextToken());
- double adjClose = Double.parseDouble(st.nextToken());
-
- OHLCDataItem item = new OHLCDataItem(date, open, high, low, close, volume);
- dataItems.add(item);
- }
- in.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- //Data from Yahoo is from newest to oldest. Reverse so it is oldest to newest
- Collections.reverse(dataItems);
-
- //Convert the list into an array
- OHLCDataItem[] data = dataItems.toArray(new OHLCDataItem[dataItems.size()]);
-
- System.out.print("Return oghls old data items\n");
-
- return data;
- }
-
- /**
- * This method is called from within the constructor to initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
- @SuppressWarnings("unchecked")
- // //GEN-BEGIN:initComponents
- private void initComponents() {
-
- jToggleButton2 = new javax.swing.JToggleButton();
-
- setLayout(new java.awt.BorderLayout());
-
- jToggleButton2.setText("jToggleButton2");
- add(jToggleButton2, java.awt.BorderLayout.CENTER);
- }// //GEN-END:initComponents
-
-
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JToggleButton jToggleButton2;
- // End of variables declaration//GEN-END:variables
-
- @Override
- public void UpdateQuote(Quote q) {
- return;
- //q.print();
- /* SortedSet h = MainWin.se.getQuoteHistory(60);
- System.out.print(
- "SortedSet size:"
- + h.size()
- + "\n"
- );
- */
- }
-}
diff --git a/src/gui/ControlPanel.form b/src/gui/ControlPanel.form
deleted file mode 100644
index 057d9f3..0000000
--- a/src/gui/ControlPanel.form
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
diff --git a/src/gui/ControlPanel.java b/src/gui/ControlPanel.java
deleted file mode 100644
index e29de67..0000000
--- a/src/gui/ControlPanel.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package gui;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class ControlPanel extends javax.swing.JPanel {
-
- /**
- * Creates new form ControlPanel
- */
- public ControlPanel() {
- initComponents();
- }
-
- /**
- * This method is called from within the constructor to initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
- @SuppressWarnings("unchecked")
- // //GEN-BEGIN:initComponents
- private void initComponents() {
-
- SellButton = new javax.swing.JButton();
- jScrollPane1 = new javax.swing.JScrollPane();
- jTextArea1 = new javax.swing.JTextArea();
- BuyButton = new javax.swing.JButton();
-
- setLayout(new java.awt.GridLayout(3, 0));
-
- SellButton.setBackground(new java.awt.Color(181, 0, 12));
- SellButton.setFont(SellButton.getFont().deriveFont(SellButton.getFont().getStyle() | java.awt.Font.BOLD, SellButton.getFont().getSize()+12));
- SellButton.setForeground(new java.awt.Color(254, 254, 254));
- SellButton.setText("Sell");
- SellButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- SellButtonActionPerformed(evt);
- }
- });
- add(SellButton);
-
- jTextArea1.setColumns(20);
- jTextArea1.setRows(5);
- jScrollPane1.setViewportView(jTextArea1);
-
- add(jScrollPane1);
-
- BuyButton.setBackground(new java.awt.Color(5, 94, 1));
- BuyButton.setFont(BuyButton.getFont().deriveFont(BuyButton.getFont().getStyle() | java.awt.Font.BOLD, BuyButton.getFont().getSize()+12));
- BuyButton.setForeground(new java.awt.Color(254, 254, 254));
- BuyButton.setText("Buy");
- BuyButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- BuyButtonActionPerformed(evt);
- }
- });
- add(BuyButton);
- }// //GEN-END:initComponents
-
- private void SellButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SellButtonActionPerformed
- MainWin.myAccount.sell(81, 55.0);
- }//GEN-LAST:event_SellButtonActionPerformed
-
- private void BuyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BuyButtonActionPerformed
- MainWin.myAccount.buy(44, 66.0);
- }//GEN-LAST:event_BuyButtonActionPerformed
-
-
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JButton BuyButton;
- private javax.swing.JButton SellButton;
- private javax.swing.JScrollPane jScrollPane1;
- private javax.swing.JTextArea jTextArea1;
- // End of variables declaration//GEN-END:variables
-}
diff --git a/src/gui/MainWin.form b/src/gui/MainWin.form
deleted file mode 100644
index 5de2c7a..0000000
--- a/src/gui/MainWin.form
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/src/gui/MainWin.java b/src/gui/MainWin.java
deleted file mode 100644
index 5e67809..0000000
--- a/src/gui/MainWin.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package gui;
-
-import traders.RandomTraderConfig;
-import sesim.Account;
-import sesim.AutoTraderLIst;
-import sesim.Exchange;
-import sesim.BuyOrder;
-import javax.swing.UIManager;
-import javax.swing.*;
-
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class MainWin extends javax.swing.JFrame {
-
- static sesim.Exchange se;
- static sesim.Account myAccount;
- static traders.ManTrader myTrader;
-
- /**
- * Creates new form MainWin
- */
- public MainWin() {
-
- initComponents();
-
-
-
- }
-
- /**
- * This method is called from within the constructor to initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
- @SuppressWarnings("unchecked")
- // //GEN-BEGIN:initComponents
- private void initComponents() {
-
- jButton1 = new javax.swing.JButton();
- jMenuItem1 = new javax.swing.JMenuItem();
- controlPanel2 = new gui.ControlPanel();
- orderBookPanel1 = new gui.OrderBookPanel();
- zZChart1 = new gui.Chart();
- MainMenu = new javax.swing.JMenuBar();
- FileMenu = new javax.swing.JMenu();
- FileNew = new javax.swing.JMenuItem();
- FileRun = new javax.swing.JMenuItem();
- jMenu2 = new javax.swing.JMenu();
-
- jButton1.setText("jButton1");
- jButton1.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jButton1ActionPerformed(evt);
- }
- });
-
- jMenuItem1.setText("jMenuItem1");
-
- setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
- setMinimumSize(new java.awt.Dimension(640, 480));
- getContentPane().add(controlPanel2, java.awt.BorderLayout.LINE_END);
- getContentPane().add(orderBookPanel1, java.awt.BorderLayout.LINE_START);
- getContentPane().add(zZChart1, java.awt.BorderLayout.CENTER);
-
- FileMenu.setBackground(new java.awt.Color(254, 203, 1));
- FileMenu.setText("File");
-
- FileNew.setText("New");
- FileNew.setBorder(null);
- FileNew.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- FileNewActionPerformed(evt);
- }
- });
- FileMenu.add(FileNew);
-
- FileRun.setText("Run");
- FileRun.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- FileRunActionPerformed(evt);
- }
- });
- FileMenu.add(FileRun);
-
- MainMenu.add(FileMenu);
-
- jMenu2.setText("Edit");
- MainMenu.add(jMenu2);
-
- setJMenuBar(MainMenu);
-
- pack();
- }// //GEN-END:initComponents
-
- private void FileNewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileNewActionPerformed
-
-
- }//GEN-LAST:event_FileNewActionPerformed
-
- private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
- // TODO add your handling code here:
- }//GEN-LAST:event_jButton1ActionPerformed
-
- private void FileRunActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileRunActionPerformed
- se.start();
- }//GEN-LAST:event_FileRunActionPerformed
-
- /**
- * @param args the command line arguments
- */
- public static void main(String args[]) {
-
- se = new Exchange();
- myAccount = new Account(se,1000,100000000.0);
- myTrader = new traders.ManTrader(myAccount,null);
-
-/* Account otherAccount = new Account(se,1000,1000);
- Traders.ManTrader otherTrader = new Traders.ManTrader(otherAccount);
- otherTrader.sell(80, 22.70);
-
-*/
-
-/*
- Account traccount = new Account(se,5500,1000000.0);
- RandomTrader rt = new RandomTrader(traccount,null);
- TraderRunner tr = new TraderRunner(rt);
- tr.start();
-*/
-
- AutoTraderLIst at = new AutoTraderLIst();
- RandomTraderConfig rcfg = new RandomTraderConfig();
- at.add(1000, rcfg, se, 1000, 10000);
-
- //SwitchingTraderConfig scfg = new SwitchingTraderConfig();
- //at.add(1, scfg, se, 1000000, 0);
-
-
- // at.add(10, rcfg, se, 1000000, 0);
-
-
- try {
- // Set cross-platform Java L&F (also called "Metal")
- UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
- } catch (UnsupportedLookAndFeelException | ClassNotFoundException |
- InstantiationException | IllegalAccessException e) {
- }
-
- /* Set the Nimbus look and feel */
- //
- /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
- * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
- */
- /* try {
- for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
- if ("Motif".equals(info.getName())) {
- javax.swing.UIManager.setLookAndFeel(info.getClassName());
- break;
- }
- }
- } catch (ClassNotFoundException ex) {
- java.util.logging.Logger.getLogger(MainWin.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (InstantiationException ex) {
- java.util.logging.Logger.getLogger(MainWin.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (IllegalAccessException ex) {
- java.util.logging.Logger.getLogger(MainWin.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (javax.swing.UnsupportedLookAndFeelException ex) {
- java.util.logging.Logger.getLogger(MainWin.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- }
- */
- //
-
- /* Create and display the form */
- java.awt.EventQueue.invokeLater(new Runnable() {
- public void run() {
- new MainWin().setVisible(true);
- }
- });
- }
-
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JMenu FileMenu;
- private javax.swing.JMenuItem FileNew;
- private javax.swing.JMenuItem FileRun;
- private javax.swing.JMenuBar MainMenu;
- private gui.ControlPanel controlPanel2;
- private javax.swing.JButton jButton1;
- private javax.swing.JMenu jMenu2;
- private javax.swing.JMenuItem jMenuItem1;
- private gui.OrderBookPanel orderBookPanel1;
- private gui.Chart zZChart1;
- // End of variables declaration//GEN-END:variables
-}
diff --git a/src/gui/NewPanel.form b/src/gui/NewPanel.form
deleted file mode 100644
index a965931..0000000
--- a/src/gui/NewPanel.form
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
diff --git a/src/gui/NewPanel.java b/src/gui/NewPanel.java
deleted file mode 100644
index 2521ee4..0000000
--- a/src/gui/NewPanel.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package gui;
-
-//import static Gui.SimpleJFreeDemo.createDemoPanel;
-import javax.swing.JPanel;
-import org.jfree.chart.ChartFactory;
-import org.jfree.chart.ChartPanel;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.plot.XYPlot;
-import org.jfree.data.function.Function2D;
-import org.jfree.data.general.DatasetUtilities;
-import org.jfree.data.xy.XYDataset;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class NewPanel extends javax.swing.JPanel {
-
- /**
- * Creates new form NewPanel
- */
- public NewPanel() {
- initComponents();
-
- initComponents();
- JPanel chartPanel = createDemoPanel();
- chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
- add(chartPanel);
-
-
- }
-
- private static JFreeChart createChart(XYDataset dataset) {
- // create the chart...
- JFreeChart chart = ChartFactory.createXYLineChart(
- "Function2DDemo1 ", // chart title
- "X", // x axis label
- "Y", // y axis label
- dataset, // data
- PlotOrientation.VERTICAL,
- true, // include legend
- true, // tooltips
- false // urls
- );
-
- XYPlot plot = (XYPlot) chart.getPlot();
- plot.getDomainAxis().setLowerMargin(0.0);
- plot.getDomainAxis().setUpperMargin(0.0);
- return chart;
- }
-
- /**
- * Creates a sample dataset.
- *
- * @return A sample dataset.
- */
- public static XYDataset createDataset() {
- XYDataset result = DatasetUtilities.sampleFunction2D(new X2(),
- -4.0, 4.0, 40, "f(x)");
- return result;
- }
-
- /**
- * Creates a panel for the demo (used by SuperDemo.java).
- *
- * @return A panel.
- */
- public static JPanel createDemoPanel() {
- JFreeChart chart = createChart(createDataset());
- return new ChartPanel(chart);
- }
-
- /**
- * A simple function.
- */
- static class X2 implements Function2D {
-
- /* (non-Javadoc)
- * @see org.jfree.data.function.Function2D#getValue(double)
- */
- public double getValue(double x) {
- return x * x + 2;
- }
-
- }
-
-
- /**
- * This method is called from within the constructor to initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
- // //GEN-BEGIN:initComponents
- private void initComponents() {
-
- setLayout(new java.awt.BorderLayout());
- }// //GEN-END:initComponents
-
-
- // Variables declaration - do not modify//GEN-BEGIN:variables
- // End of variables declaration//GEN-END:variables
-}
diff --git a/src/gui/OrderBook.form b/src/gui/OrderBook.form
deleted file mode 100644
index 040eed0..0000000
--- a/src/gui/OrderBook.form
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
diff --git a/src/gui/OrderBook.java b/src/gui/OrderBook.java
deleted file mode 100644
index cf7e198..0000000
--- a/src/gui/OrderBook.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package gui;
-
-import sesim.Exchange;
-import java.util.ArrayList;
-import java.util.Formatter;
-import javax.swing.table.AbstractTableModel;
-import javax.swing.table.JTableHeader;
-import javax.swing.SwingUtilities;
-import java.awt.*;
-import javax.swing.*;
-import javax.swing.table.*;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-/**
- * OderBook Class
- */
-public abstract class OrderBook extends javax.swing.JPanel implements Exchange.BookReceiver {
-
-
- OrderBookListModel model;
-
- abstract ArrayList getOrderBook();
-
- private Color hdr_color = Color.LIGHT_GRAY;
-
- private class OrderBookCellRenderer extends DefaultTableCellRenderer {
-
- @Override
- public Component getTableCellRendererComponent(JTable table,
- Object value, boolean isSelected, boolean hasFocus,
- int row, int column) {
- DefaultTableCellRenderer renderer
- = (DefaultTableCellRenderer) super.getTableCellRendererComponent(
- table, value, isSelected, hasFocus, row, column);
- renderer.setBackground(hdr_color);
- return renderer;
- }
- }
-
- @Override
- public void UpdateOrderBook() {
-
- class Updater implements Runnable{
- OrderBookListModel model;
- ArrayList newlist;
-
- @Override
- public void run() {
- model.update(this.newlist);
- }
-
- Updater(OrderBookListModel model, ArrayList newlist){
- this.model = model;
- this.newlist = newlist;
- }
-
- }
- ArrayList newlist = getOrderBook();
- SwingUtilities.invokeLater(new Updater(this.model,newlist));
-
- }
-
- boolean getDesc() {
- return false;
- }
-
-// protected OrderBookListModel model;
-
- protected class OrderBookListModel extends AbstractTableModel {
-
- private ArrayList list;
- private boolean desc = false;
-
- public OrderBookListModel() {
- // System.out.print("CREATING A NEW MODEL\n");
-// update();
- list = getOrderBook();
- }
-
- int update_calls = 0;
- int colcount_calls = 0;
-
- public void update(ArrayList newlist) {
- list = newlist; //getOrderBook();
- this.fireTableDataChanged();
-
- this.update_calls++;
- int hc = this.hashCode();
- //System.out.print("Update/ColCalls = " + update_calls + "/" + colcount_calls + " HC: " + hc + "\n");
- }
-
-
- @Override
- public String getColumnName(int c) {
- switch (c) {
- case 0:
- return "ID";
- case 1:
- return "Price";
- case 2:
- return "Vol.";
- }
- return "";
- }
-
- @Override
- public int getRowCount() {
- colcount_calls++;
-// System.out.print("Update/ColCalls = " + update_calls + "/" + colcount_calls + "\n");
- return list.size();
- }
-
- @Override
- public int getColumnCount() {
- return 3;
- }
-
- @Override
- public Object getValueAt(int r, int c) {
- sesim.Order o;
-
- int s = list.size();
- //System.out.print("Looking for Value at" + r + ":" + c + " w size:" + s + "\n");
-
- if (!getDesc()) {
- o = (sesim.Order) list.get(r);
- } else {
- o = (sesim.Order) list.get(list.size() - r - 1);
- }
- Formatter f = new Formatter();
- switch (c) {
- case 0:
- return f.format("#%06x", o.id);
-
- case 1:
- return o.limit;
- case 2:
- return o.volume;
- }
- return "";
- }
- }
-
- /**
- * Creates new form OrderBook
- */
- public OrderBook() {
- //System.out.print("init Orderbook]\n");
- initComponents();
-
- this.setBorder(BorderFactory.createEmptyBorder());
- this.orderBookScroller.setBorder(BorderFactory.createBevelBorder(0));
-
- if (MainWin.se == null) {
- return;
- }
-
- this.model = new OrderBookListModel();
- this.orderBookList.setModel(model);
-
- orderBookList.setBorder(BorderFactory.createEmptyBorder());
-
- JTableHeader h = this.orderBookList.getTableHeader();
- h.setBackground(hdr_color);
- h.setForeground(Color.green);
- h.setDefaultRenderer(new OrderBookCellRenderer());
-
- }
-
- /**
- * This method is called from within the constructor to initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
- @SuppressWarnings("unchecked")
- // //GEN-BEGIN:initComponents
- private void initComponents() {
-
- orderBookScroller = new javax.swing.JScrollPane();
- orderBookList = new javax.swing.JTable();
-
- orderBookList.setModel(new javax.swing.table.DefaultTableModel(
- new Object [][] {
- {"1", null, null},
- {"2", null, null},
- {"3", null, null},
- {"4", null, null},
- {"5", null, null},
- {"7", null, null},
- {"4", null, null},
- {null, null, null},
- {"3", null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null},
- {null, null, null}
- },
- new String [] {
- "id", "Title 2pri", "Title 3"
- }
- ) {
- boolean[] canEdit = new boolean [] {
- false, false, false
- };
-
- public boolean isCellEditable(int rowIndex, int columnIndex) {
- return canEdit [columnIndex];
- }
- });
- orderBookList.setDoubleBuffered(true);
- orderBookList.setFocusable(false);
- orderBookScroller.setViewportView(orderBookList);
-
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
- this.setLayout(layout);
- layout.setHorizontalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(orderBookScroller, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 162, Short.MAX_VALUE)
- );
- layout.setVerticalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(orderBookScroller, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
- );
- }// //GEN-END:initComponents
-
-
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JTable orderBookList;
- private javax.swing.JScrollPane orderBookScroller;
- // End of variables declaration//GEN-END:variables
-}
diff --git a/src/gui/OrderBookPanel.form b/src/gui/OrderBookPanel.form
deleted file mode 100644
index e8f99f7..0000000
--- a/src/gui/OrderBookPanel.form
+++ /dev/null
@@ -1,459 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/src/gui/OrderBookPanel.java b/src/gui/OrderBookPanel.java
deleted file mode 100644
index da9fe9f..0000000
--- a/src/gui/OrderBookPanel.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package gui;
-
-//import SeSim.*;
-import static java.lang.Thread.sleep;
-import javax.swing.AbstractListModel;
-import javax.swing.table.AbstractTableModel;
-import java.util.ArrayList;
-import java.util.Formatter;
-import static java.lang.Thread.sleep;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class OrderBookPanel extends javax.swing.JPanel {
-
- sesim.Exchange se;
-
- public OrderBookPanel() {
- this.se = MainWin.se;
-
- initComponents();
-
- if (this.se == null) {
- return;
- }
- // System.out.print("Order boo init\n");
-
- }
-
- /**
- * This method is called from within the constructor to initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
- @SuppressWarnings("unchecked")
- // //GEN-BEGIN:initComponents
- private void initComponents() {
- java.awt.GridBagConstraints gridBagConstraints;
-
- askBook1 = new gui.AskBook();
- bidBook1 = new gui.BidBook();
- quotePanel2 = new gui.QuotePanel();
-
- setPreferredSize(new java.awt.Dimension(220, 262));
- java.awt.GridBagLayout layout = new java.awt.GridBagLayout();
- layout.columnWidths = new int[] {0};
- layout.rowHeights = new int[] {0, 5, 0, 5, 0};
- setLayout(layout);
-
- askBook1.setPreferredSize(new java.awt.Dimension(200, 200));
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 0;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.weightx = 1.0;
- gridBagConstraints.weighty = 1.0;
- add(askBook1, gridBagConstraints);
-
- bidBook1.setPreferredSize(new java.awt.Dimension(200, 200));
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 4;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.weightx = 1.0;
- gridBagConstraints.weighty = 1.0;
- add(bidBook1, gridBagConstraints);
-
- quotePanel2.setOpaque(false);
- quotePanel2.setPreferredSize(new java.awt.Dimension(587, 200));
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.weightx = 0.5;
- gridBagConstraints.weighty = 0.5;
- add(quotePanel2, gridBagConstraints);
- }// //GEN-END:initComponents
-
-
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private gui.AskBook askBook1;
- private gui.BidBook bidBook1;
- private gui.QuotePanel quotePanel2;
- // End of variables declaration//GEN-END:variables
-}
diff --git a/src/gui/QuotePanel.form b/src/gui/QuotePanel.form
deleted file mode 100644
index a017eba..0000000
--- a/src/gui/QuotePanel.form
+++ /dev/null
@@ -1,326 +0,0 @@
-
-
-
diff --git a/src/gui/QuotePanel.java b/src/gui/QuotePanel.java
deleted file mode 100644
index b49b3ab..0000000
--- a/src/gui/QuotePanel.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package gui;
-
-import sesim.Quote;
-import java.awt.Color;
-import javax.swing.SwingUtilities;
-import java.util.*;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class QuotePanel extends javax.swing.JPanel implements sesim.Exchange.QuoteReceiver{
-
- /**
- * Creates new form QuotePanel
- */
- public QuotePanel() {
- initComponents();
- if (MainWin.se==null)
- return;
- MainWin.se.addQuoteReceiver(this);
- }
-
- /**
- * This method is called from within the constructor to initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
- @SuppressWarnings("unchecked")
- // //GEN-BEGIN:initComponents
- private void initComponents() {
- java.awt.GridBagConstraints gridBagConstraints;
-
- jLabel2 = new javax.swing.JLabel();
- lastPrice = new javax.swing.JLabel();
- jLabel3 = new javax.swing.JLabel();
-
- setBorder(null);
- java.awt.GridBagLayout layout = new java.awt.GridBagLayout();
- layout.columnWidths = new int[] {0, 5, 0, 5, 0};
- layout.rowHeights = new int[] {0};
- setLayout(layout);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 0;
- add(jLabel2, gridBagConstraints);
-
- lastPrice.setFont(lastPrice.getFont().deriveFont(lastPrice.getFont().getStyle() | java.awt.Font.BOLD, lastPrice.getFont().getSize()+4));
- lastPrice.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
- lastPrice.setText("0.00");
- lastPrice.setOpaque(true);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 2;
- gridBagConstraints.gridy = 0;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.weightx = 0.9;
- gridBagConstraints.weighty = 0.9;
- add(lastPrice, gridBagConstraints);
-
- jLabel3.setPreferredSize(new java.awt.Dimension(30, 18));
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 4;
- gridBagConstraints.gridy = 0;
- add(jLabel3, gridBagConstraints);
- }// //GEN-END:initComponents
-
-
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JLabel jLabel2;
- private javax.swing.JLabel jLabel3;
- private javax.swing.JLabel lastPrice;
- // End of variables declaration//GEN-END:variables
-
- @Override
- public void UpdateQuote(Quote q) {
- class Updater implements Runnable {
- QuotePanel qp;
- String text="";
- Color color = Color.BLUE;
-
-
- @Override
- public void run() {
- qp.lastPrice.setText(text);
- qp.lastPrice.setForeground(color);
- }
-
-
- }
- Updater u= new Updater();
- u.qp=this;
-
- if (q.price==q.bid){
- u.color=new Color(172,0,0);
- }
- if (q.price==q.ask){
- u.color=new Color(0,120,0); //.; //new Color(30,0,0);
- }
-
-
-
-
- u.text = String.format("%.2f\n(%d)", q.price,q.volume);
-
- SwingUtilities.invokeLater(u);
-
-// SortedSet s = MainWin.se.getQuoteHistory(5);
-
- // System.out.print(
- // "SortedSet size:"
- // +s.size()
- // +"\n"
- // );
-
- //this.lastPrice.setText(lp);
- }
-}
diff --git a/src/gui/test.java b/src/gui/test.java
deleted file mode 100644
index 4d604c4..0000000
--- a/src/gui/test.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (c) 2017, tobias
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package gui;
-
-import java.util.*;
-
-/**
- *
- * @author tobias
- */
-public class test {
-
- static class Problem {
-
- 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 s = new TreeSet<>();
- s.add(new Elem(1));
- s.add(new Elem(7));
- s.add(new Elem(12));
- Elem e = new Elem(5);
-
- SortedSet ts = exclusiveTailSet(s, e);
-
- Elem e2 = new Elem(0);
-
-// SortedSet ts2 = exclusiveTailSet(ts,e);
- SortedSet 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 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 SortedSet exclusiveTailSet(SortedSet ts, Ta elem) {
- Iterator iter = ts.tailSet(elem).iterator();
-
- return ts.tailSet(iter.next());
- }
-
- public static void main(String args[]) {
- NoProblem p = new NoProblem();
- p.run();
-
-
- }
-}
diff --git a/src/sesim/Account.java b/src/sesim/Account.java
deleted file mode 100644
index 332c2e7..0000000
--- a/src/sesim/Account.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package sesim;
-
-import java.util.*;
-
-
-final public class Account {
-
- /**
- * Exchange this account belongs to
- */
- public Exchange se;
-
- /**
- * Number of shares in this account
- */
- public long shares = 0;
-
- /**
- * Ammount of money in this account
- */
- public double money = 0;
-
- /**
- * Name of this account
- */
- public String name = "";
-
-
- public ArrayList pending;
-
- public boolean orderpending = false;
-
-
- public Account(Exchange se, long shares, double money ) {
- this.shares=shares;
- this.money=money;
- this.se=se;
- pending = new ArrayList<>();
- }
-
- public Account(){
- //this(,0.0);
- }
-
- // private double bound_money;
-
-
-
- public void print_current() {
- System.out.printf("%s shares: %d credit: %.2f\n",
- name, shares, money
- );
- }
-
-
- public boolean isRuined(){
-
-
-/* System.out.print(
- "Account: "
- +money
- +" / "
- +shares
- +"\n"
- );
- */
- return this.money<=se.lastprice && this.shares<=0;
- }
-
- public Order sell(long volume, double limit) {
- SellOrder o = new SellOrder();
- o.account = this;
- o.limit = limit;
- o.volume = volume;
- orderpending = true;
- return se.SendOrder(o);
- }
-
- public Order buy(long volume, double limit) {
- if (volume * limit > money) {
- return null;
- }
- BuyOrder o = new BuyOrder();
- o.limit = limit;
- o.volume = volume;
- o.account = this;
- orderpending = true;
- return se.SendOrder(o);
- }
-
- /*
- public void Buy(Account a, long size, double price) {
- shares += size;
- money -= price * size;
- a.shares -= size;
- a.money += price * size;
- }
-*/
-
-}
diff --git a/src/sesim/AutoTrader.java b/src/sesim/AutoTrader.java
deleted file mode 100644
index d98e667..0000000
--- a/src/sesim/AutoTrader.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package sesim;
-
-import static java.lang.Thread.sleep;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public abstract class AutoTrader extends Trader implements Runnable {
-
- public AutoTrader(Account account, TraderConfig config) {
- super(account, config);
- }
-
- protected void doSleep(int seconds) {
- try {
- sleep(seconds*1000);
- } catch (InterruptedException e) {
- }
- }
-
- public void start(){
- System.out.print("Starting AutoTrader\n");
- class Runner extends Thread{
- AutoTrader trader;
- @Override
- public void run(){
- trader.run();
- }
- }
- Runner r = new Runner();
- r.trader=this;
- r.start();
-
- }
-
-
-}
diff --git a/src/sesim/AutoTraderLIst.java b/src/sesim/AutoTraderLIst.java
deleted file mode 100644
index 9d8f0f4..0000000
--- a/src/sesim/AutoTraderLIst.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package sesim;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class AutoTraderLIst {
-
- public void add(int n, TraderConfig config, Exchange se, long shares, double money) {
-
- for (int i = 0; i < n; i++) {
- AutoTrader trader = config.createTrader(se, shares, money);
- // TraderRunner tr = new TraderRunner(trader);
-
- trader.start();
- }
- }
-
-}
diff --git a/src/sesim/BuyOrder.java b/src/sesim/BuyOrder.java
deleted file mode 100644
index a706ccf..0000000
--- a/src/sesim/BuyOrder.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package sesim;
-
-public class BuyOrder extends Order implements Comparable {
-
- public BuyOrder(){
- type=OrderType.bid;
- }
-
-}
diff --git a/src/sesim/Exchange.java b/src/sesim/Exchange.java
deleted file mode 100644
index 305d125..0000000
--- a/src/sesim/Exchange.java
+++ /dev/null
@@ -1,457 +0,0 @@
-package sesim;
-
-import java.util.*;
-import java.util.concurrent.*;
-
-import sesim.Order.OrderStatus;
-import sesim.Order.OrderType;
-
-/**
- *
- * @author tube
- */
-public class Exchange extends Thread {
-
- /**
- * Histrory of quotes
- */
- public TreeSet quoteHistory = new TreeSet<>();
-
- /**
- * Constructor
- */
- public Exchange() {
- this.ask = new TreeSet<>();
- this.bid = new TreeSet<>();
- this.qrlist = new ArrayList<>();
-
- }
-
- public static long getCurrentTimeSeconds(long div) {
- long ct = System.currentTimeMillis() / 1000*div;
- return ct * div;
- }
-
- public static long getCurrentTimeSeconds(){
- return getCurrentTimeSeconds(1);
- }
-
- public SortedSet getQuoteHistory(long start) {
-
- Quote s = new Quote();
- s.time = start;
- s.time = 2;
- s.id = 2;
-
- TreeSet result = new TreeSet<>();
- result.addAll(this.quoteHistory.tailSet(s));
-
- return result;
-
- }
-
- /* public SortedSet getQuoteHistory(int seconds) {
- Quote last = quoteHistory.last();
- return this.getQuoteHistory(seconds, last.time);
- }
- */
-
- // Class to describe an executed order
- // QuoteReceiver has to be implemented by objects that wants
- // to receive quote updates
- public interface QuoteReceiver {
-
- void UpdateQuote(Quote q);
- }
-
- /**
- * Bookreceiver Interface
- */
- public interface BookReceiver {
-
- void UpdateOrderBook();
- }
-
- private ArrayList ask_bookreceivers = new ArrayList<>();
- private ArrayList bid_bookreceivers = new ArrayList<>();
-
- private ArrayList selectBookReceiver(OrderType t) {
- switch (t) {
- case ask:
- return ask_bookreceivers;
- case bid:
- return bid_bookreceivers;
- }
- return null;
- }
-
- public void addBookReceiver(OrderType t, BookReceiver br) {
- ArrayList bookreceivers;
- bookreceivers = selectBookReceiver(t);
- bookreceivers.add(br);
- }
-
- void updateBookReceivers(OrderType t) {
- ArrayList bookreceivers;
- bookreceivers = selectBookReceiver(t);
-
- Iterator i = bookreceivers.iterator();
- while (i.hasNext()) {
- i.next().UpdateOrderBook();
- }
- try {
- sleep(10);
- } catch (InterruptedException e) {
- System.out.println("I was Interrupted");
- }
-
- }
-
- // Here we store the list of quote receivers
- private final ArrayList qrlist;
-
- /**
- *
- * @param qr
- */
- public void addQuoteReceiver(QuoteReceiver qr) {
- qrlist.add(qr);
- }
-
- // send updated quotes to all quote receivers
- private void updateQuoteReceivers(Quote q) {
- Iterator i = qrlist.iterator();
- while (i.hasNext()) {
- i.next().UpdateQuote(q);
- }
- }
-
- // long time = 0;
- double theprice = 12.9;
- long orderid = 1;
-
- double lastprice = 100.0;
- long lastsvolume;
-
- public TreeSet bid;
- public TreeSet ask;
-
- private Locker tradelock = new Locker();
-
- /*
- private final Semaphore available = new Semaphore(1, true);
-
- private void Lock() {
- try {
- available.acquire();
- } catch (InterruptedException s) {
- System.out.println("Interrupted\n");
- }
-
- }
-
- private void Unlock() {
- available.release();
- }
- */
- private TreeSet selectOrderBook(OrderType t) {
-
- switch (t) {
- case bid:
- return this.bid;
- case ask:
- return this.ask;
- }
- return null;
-
- }
-
- public ArrayList getOrderBook(OrderType t, int depth) {
-
- TreeSet book = selectOrderBook(t);
- if (book == null) {
- return null;
- }
-
- ArrayList ret = new ArrayList<>();
- Iterator it = book.iterator();
- for (int i = 0; i < depth && it.hasNext(); i++) {
- Order o;
- o = it.next();
- ret.add(o);
- //System.out.print("Order" + o.limit);
- //System.out.println();
- }
- return ret;
-
- }
-
- public void print_current() {
-
- Order b;
- Order a;
-
- //String bid;
- if (bid.isEmpty()) {
- b = new BuyOrder();
- b.limit = -1;
- b.volume = 0;
- } else {
- b = bid.first();
- }
-
- if (ask.isEmpty()) {
- a = new SellOrder();
- a.limit = -1;
- a.volume = 0;
-
- } else {
- a = ask.first();
- }
-
- Logger.info(String.format("BID: %s(%s) LAST: %.2f(%d) ASK: %s(%s)\n",
- b.format_limit(), b.format_volume(),
- lastprice, lastsvolume,
- a.format_limit(), a.format_volume())
- );
-
- }
-
- public void transferMoney(Account src, Account dst, double money) {
- src.money -= money;
- dst.money += money;
-
- }
-
- public void cancelOrder(Order o) {
- tradelock.lock();
- TreeSet book = this.selectOrderBook(o.type);
- book.remove(o);
- this.updateBookReceivers(o.type);
- o.account.pending.remove(o);
- o.status = OrderStatus.canceled;
- tradelock.unlock();
-
- }
-
- /**
- * Transfer shares from one account to another account
- *
- * @param src source account
- * @param dst destination account
- * @param volumen number of shares
- * @param price price
- */
- protected void transferShares(Account src, Account dst, long volume, double price) {
- dst.shares += volume;
- src.shares -= volume;
- dst.money -= price * volume;
- src.money += price * volume;
- }
-
- long nextQuoteId = 0;
-
- public void OrderMatching() {
-
- while (true) {
-
- if (bid.isEmpty() || ask.isEmpty()) {
- // nothing to do
- return;
- }
-
- Order b = bid.first();
- Order a = ask.first();
-
- if (a.volume == 0) {
- // This order is fully executed, remove
- a.account.orderpending = false;
- a.status = OrderStatus.executed;
-
- a.account.pending.remove(a);
-
- ask.pollFirst();
- this.updateBookReceivers(OrderType.ask);
- continue;
- }
-
- if (b.volume == 0) {
- // This order is fully executed, remove
- b.account.orderpending = false;
- b.status = OrderStatus.executed;
- b.account.pending.remove(b);
- bid.pollFirst();
- this.updateBookReceivers(OrderType.bid);
- continue;
- }
-
- if (b.limit < a.limit) {
- // no match, nothing to do
- return;
- }
-
- if (b.limit >= a.limit) {
- double price;
-
- if (b.id < a.id) {
- price = b.limit;
- } else {
- price = a.limit;
- }
-
- long volume;
-
- if (b.volume >= a.volume) {
- volume = a.volume;
- } else {
- volume = b.volume;
- }
-
- transferShares(a.account, b.account, volume, price);
-
- // b.account.Buy(a.account, volume, price);
- b.volume -= volume;
- a.volume -= volume;
-
- lastprice = price;
- lastsvolume = volume;
-
- Quote q = new Quote();
-
- q.volume = volume;
- q.price = price;
- q.time = System.currentTimeMillis();
-
- q.ask = a.limit;
- q.bid = b.limit;
- q.id = nextQuoteId++;
-
- this.updateQuoteReceivers(q);
- this.updateBookReceivers(OrderType.bid);
- this.updateBookReceivers(OrderType.ask);
-
- /* System.out.print(
- "Executed: "
- + q.price
- + " / "
- + q.volume
- + "\n"
- );
- */
- quoteHistory.add(q);
- continue;
-
- }
-
- return;
- }
- }
-
- public void ExecuteOrder(BuyOrder o) {
- // SellOrder op = ask.peek();
-
- }
-
- private boolean InitOrder(Order o) {
- double moneyNeeded = o.volume * o.limit;
- return true;
- }
-
- // Add an order to the orderbook
- private boolean addOrder(Order o) {
- boolean ret = false;
- switch (o.type) {
- case bid:
-
-// System.out.print("Exchange adding bid order \n");
- ret = bid.add(o);
- break;
-
- case ask:
-// System.out.print("Exchange adding ask order \n");
- ret = ask.add(o);
- break;
- }
-
- if (ret) {
- this.updateBookReceivers(o.type);
- }
- return ret;
- }
-
- public Order SendOrder(Order o) {
-
- boolean rc = InitOrder(o);
- if (!rc) {
- return null;
- }
-
- tradelock.lock();
- o.timestamp = System.currentTimeMillis();
- o.id = orderid++;
- addOrder(o);
- o.account.pending.add(o);
- OrderMatching();
- tradelock.unlock();
-
- return o;
- }
-
- /*
- public void SendOrder(BuyOrder o) {
- //System.out.println("EX Buyorder");
- Lock();
- o.timestamp = System.currentTimeMillis();
- o.id = orderid++;
- bid.add(o);
-
- Unlock();
- Lock();
-// OrderMatching();
- Unlock();
-
- }
- */
- /*
- * public void SendOrder(Order o){
- *
- *
- * if ( o.getClass() == BuyOrder.class){ bid.add((BuyOrder)o); }
- *
- * if ( o.getClass() == SellOrder.class){ ask.add((SellOrder)o); }
- *
- * }
- */
- public double getlastprice() {
- /*
- * SellOrder so = new SellOrder(); so.limit=1000.0; so.volume=500;
- * SendOrder(so);
- *
- * BuyOrder bo = new BuyOrder(); bo.limit=1001.0; bo.volume=300;
- * SendOrder(bo);
- */
-
- return lastprice;
- }
-
- /* public double sendOrder(Account o) {
- return 0.7;
- }
- */
- /**
- *
- */
- @Override
- public void run() {
- while (true) {
- try {
- sleep(1500);
- } catch (InterruptedException e) {
- System.out.println("I was Interrupted");
- }
- print_current();
-
- }
- }
-
-}
diff --git a/src/sesim/Locker.java b/src/sesim/Locker.java
deleted file mode 100644
index 6cd2a83..0000000
--- a/src/sesim/Locker.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package sesim;
-
-import java.util.concurrent.Semaphore;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class Locker {
-
- private final Semaphore avail = new Semaphore(1, true);
-
- public boolean lock() {
- try {
- avail.acquire();
- } catch (InterruptedException e) {
- return false;
- }
- return true;
- }
-
- public void unlock() {
- avail.release();
- }
-
-}
diff --git a/src/sesim/Logger.java b/src/sesim/Logger.java
deleted file mode 100644
index ad0beae..0000000
--- a/src/sesim/Logger.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package sesim;
-
-public class Logger {
-
- static boolean dbg = true;
- static boolean info = true;
-
- static void dbg(String s) {
- if (!dbg) {
- return;
- }
- System.out.print("DBG: ");
- System.out.println(s);
- }
-
- static void info(String s) {
- if (!info) {
- return;
- }
- System.out.print("INFO: ");
- System.out.println(s);
- }
-}
diff --git a/src/sesim/Order.java b/src/sesim/Order.java
deleted file mode 100644
index ffed02a..0000000
--- a/src/sesim/Order.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package sesim;
-
-public abstract class Order implements Comparable {
-
- /**
- * When the order was created
- */
- public long timestamp = 0;
-
- /**
- * Number of shares
- */
- public long volume;
-
- /**
- * Limit price
- */
- public double limit;
-
- /**
- * Order ID
- */
- public long id = 0;
-
- /**
- * Type of order
- */
- public OrderType type;
-
- public Account account = null;
-
-
- protected int compareLimit(Order o){
- int r=0;
- if (o.limit < limit) {
- r=-1;
- }
- if (o.limit > limit) {
- r=1;
- }
-
- if (type==OrderType.ask)
- return -r;
-
- return r;
-
- };
-
- @Override
- public int compareTo(Order o) {
-
- if (o.type!=type){
- System.out.print("OrderType Missmatch\n");
- return -1;
- }
-
- int r = compareLimit(o);
- if (r!=0)
- return r;
-
- /* if (o.timestamp> timestamp)
- return -1;
-
- if (o.timestampid)
- return -1;
-
- if (o.id
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package sesim;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class Quote implements Comparable {
-
- public double bid;
- public double bid_volume;
- public double ask;
- public double ask_volume;
-
- public double price;
- public long volume;
- public long time;
-
- Locker lock = new Locker();
-
- public void print() {
- System.out.print("Quote ("
- + time
- + ") :"
- + price
- + " / "
- + volume
- + "\n"
- );
-
- }
-
- public long id;
-
- @Override
- public int compareTo(Object o) {
- int ret;
- Quote q = (Quote)o;
-
- ret = (int)(this.time-q.time);
- if (ret !=0)
- return ret;
-
- return (int)(this.id-q.id);
- }
-
- /* Quote (){
- lock.lock();
- id=nextid++;
- lock.unlock();
- }*/
-}
diff --git a/src/sesim/SellOrder.java b/src/sesim/SellOrder.java
deleted file mode 100644
index e6a9c29..0000000
--- a/src/sesim/SellOrder.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package sesim;
-
-public class SellOrder extends Order {
-
- public SellOrder(){
- type=OrderType.ask;
- }
-}
diff --git a/src/sesim/Trader.java b/src/sesim/Trader.java
deleted file mode 100644
index 9816941..0000000
--- a/src/sesim/Trader.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package sesim;
-
-import static java.lang.Thread.sleep;
-
-public abstract class Trader {
-
- public String name = null;
-
-
- public Account account;
- public TraderConfig config;
-
- public void sell(long shares, double limit){
- account.sell(shares, limit);
- }
-
- public void buy(long shares, double limit){
- account.buy(shares, limit);
- }
-
- /**
- * Construct a Trader object
- * @param account Account for this trader
- * @param config Configration for this trader
- */
- public Trader(Account account, TraderConfig config){
- this.account=account;
- this.config=config;
- }
-
- /**
- * Construct a Trader object w/o config
- * The Trader object shoul initialize a default config
- * @param account
- */
- public Trader(Account account){
- this(account,null);
- }
-
-
-
-
-
-};
diff --git a/src/sesim/TraderConfig.java b/src/sesim/TraderConfig.java
deleted file mode 100644
index a63aae9..0000000
--- a/src/sesim/TraderConfig.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package sesim;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public abstract class TraderConfig{
- String name;
-
- public abstract AutoTrader createTrader(Exchange se, long shares, double money);
-}
diff --git a/src/traders/ManTrader.java b/src/traders/ManTrader.java
deleted file mode 100644
index 3113e77..0000000
--- a/src/traders/ManTrader.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package traders;
-
-import sesim.Account;
-import sesim.Trader;
-import sesim.TraderConfig;
-import sesim.BuyOrder;
-
-
-
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class ManTrader extends Trader{
-
- public ManTrader(Account account,TraderConfig config) {
- super(account,config);
- }
-
-
-
-
- public void trade(){
-
- BuyOrder o = new BuyOrder();
-
- }
-
-}
diff --git a/src/traders/RandomTrader.java b/src/traders/RandomTrader.java
deleted file mode 100644
index 7db13f8..0000000
--- a/src/traders/RandomTrader.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package traders;
-
-import sesim.Account;
-import sesim.Order;
-import java.util.Random;
-import sesim.AutoTrader;
-import sesim.TraderConfig;
-
-public class RandomTrader extends AutoTrader {
-
- protected enum Action {
- sell,buy
- }
-
- // config for this trader
- final private RandomTraderConfig myconfig;
-
- // object to generate random numbers
- final private Random rand = new Random();
-
- public RandomTrader(Account account, TraderConfig config) {
- super(account, config);
- if (config == null) {
- config = new RandomTraderConfig();
- }
- myconfig = (RandomTraderConfig) config;
- }
-
- /**
- * Get a (long) random number between min an max
- *
- * @param min minimum value
- * @param max maximeum value
- * @return the number
- */
- protected double getRandom(double min, double max) {
- double r = rand.nextDouble();
- return (max - min) * r + min;
- }
-
- protected int getRandom(int[] minmax) {
- return (int) Math.round(getRandom(minmax[0], minmax[1]));
- }
-
- /**
- *
- * @param val
- * @param minmax
- * @return
- */
- protected double getRandomAmmount(double val, float[] minmax) {
- double min = val * minmax[0] / 100.0;
- double max = val * minmax[1] / 100.0;
- return getRandom(min, max);
- }
-
- public boolean waitForOrder(long seconds) {
-
- for (int i = 0; (i < seconds) && (0 != account.pending.size()); i++) {
- doSleep(1);
- }
-
- if (account.pending.size() != 0) {
- Order o = account.pending.get(0);
- account.se.cancelOrder(o);
- return false;
- }
- return true;
- }
-
- public boolean doBuy() {
-
- double money = getRandomAmmount(account.money, myconfig.sell_volume);
-
- double lp = account.se.getlastprice();
- double limit;
- limit = lp + getRandomAmmount(lp, myconfig.buy_limit);
-
- long volume = (int) (money / (limit * 1));
- if (volume <= 0) {
- return false;
- }
-
- buy(volume, limit);
- return waitForOrder(getRandom(myconfig.buy_order_wait));
-
- }
-
- public boolean doSell() {
-
- long volume;
- volume = (long) Math.round(getRandomAmmount(account.shares, myconfig.sell_volume));
-
- double lp = account.se.getlastprice();
- double limit;
- limit = lp + getRandomAmmount(lp, myconfig.sell_limit);
-
- sell(volume, limit);
- return waitForOrder(getRandom(myconfig.sell_order_wait));
-
- }
-
- /* private boolean monitorTrades() {
-
- int numpending = account.pending.size();
- if (numpending == 0) {
-// System.out.print("RT: pending = 0 - return false\n");
- return false;
- }
-
- Order o = account.pending.get(0);
- long age = o.getAge();
-
- // System.out.print("RT: age is: "+age+"\n");
- if (age > myconfig.maxage) {
- // System.out.print("MaxAge is"+myconfig.maxage+"\n");
- account.se.cancelOrder(o);
-// System.out.print("Age reached - canel return false\n");
- return false;
- }
-
- //System.out.print("RT: monitor return true\n");
- return true;
- }
- */
- public void trade() {
-
- float am[] = {-10, 200};
-
- double x = Math.round(this.getRandomAmmount(1000, am));
- /* System.out.print(
- "Random:"
- + x
- + "\n"
- );
-
- */
- /*
- // System.out.print("RT: Now trading\n");
- if (monitorTrades()) {
- return;
- }
-
- // What next to do?
- int action = rand.nextInt(5);
-
- if (account.money < 10 && account.shares < 5) {
- System.out.print("I'm almost ruined\n");
- }
-
- if (action == 1) {
- doBuy();
- return;
- }
-
- if (action == 2) {
- doSell();
- return;
- }
- */
- }
-
- protected Action getAction() {
- if (rand.nextInt(2)==0){
- return Action.buy;
- }
- else{
- return Action.sell;
- }
-
-
- }
-
- @Override
- public void run() {
- System.out.print("Starting Random Trader\n");
- while (true) {
-
-// What next to do?
- Action action = getAction();
-
- if (account.isRuined()) {
-// System.out.print("I'm ruined\n");
-// System.exit(0);
- }
- boolean rc;
- // action=1;
- switch (action) {
-
- case sell:
- if (account.shares <= 0) {
- // we have no shares
- continue;
- }
-// System.out.print("Sell\n");
- rc = doSell();
- if (!rc) {
- continue;
- }
-// System.out.print("Sold\n");
- doSleep(getRandom(myconfig.wait_after_sell));
-// System.out.print("Next\n");
- break;
- case buy:
- if (account.money <= 0) {
- // we have no money
- continue;
- }
-// System.out.print("Sell\n");
- rc = doBuy();
- if (!rc) {
- continue;
- }
-// System.out.print("Bought\n");
- doSleep(getRandom(myconfig.wait_after_buy));
-// System.out.print("Next\n");
- break;
-
- }
- // doSleep(1);
-
- }
-
- }
-
-}
diff --git a/src/traders/RandomTraderConfig.java b/src/traders/RandomTraderConfig.java
deleted file mode 100644
index d582ecc..0000000
--- a/src/traders/RandomTraderConfig.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package traders;
-
-import sesim.Account;
-import sesim.TraderConfig;
-import sesim.Exchange;
-import sesim.AutoTrader;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class RandomTraderConfig extends TraderConfig {
-
- //public long maxage = 1000 * 10 * 1;
-
-
- /*public long hold_shares_min = 10;
-
- public long hold_shares_max = 30;
-
- public float buy_volume_min = 10;
- */
-
- /**
- * If shares are selled, this specifies
- * the minimum and maximum volume to be selled
- */
- public float[] sell_volume= {100,100};
- public float[] sell_limit = {-15,15};
- public int[] sell_order_wait = {15,33};
- public int[] wait_after_sell = {10,30};
-
-
- public float[] buy_volume={100,100};
- public float[] buy_limit = {-15,15};
- public int[] buy_order_wait = {15,33};
- public int[] wait_after_buy = {10,30};
-
-
- @Override
- public AutoTrader createTrader(Exchange se, long shares, double money) {
- Account a = new Account(se, shares, money);
- return new RandomTrader(a, this);
- }
-
-
-
-}
diff --git a/src/traders/SwitchingTrader.java b/src/traders/SwitchingTrader.java
deleted file mode 100644
index 2417734..0000000
--- a/src/traders/SwitchingTrader.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package traders;
-
-import sesim.Account;
-import sesim.TraderConfig;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class SwitchingTrader extends RandomTrader{
-
-
- private Action mode;
-
- public SwitchingTrader(Account account, TraderConfig config) {
-
- super(account, config);
- System.out.print("SWTrader Created\n");
-
- if (account.shares>0)
- mode=Action.sell;
- else
- mode=Action.buy;
- printstartus();
-
- }
-
-
- private void printstartus(){
-
- System.out.print("SWTrader:");
- switch (mode){
- case buy:
- System.out.print("buy"
- +account.shares
- +" "
- +account.money
- );
- break;
- case sell:
- System.out.print("sell"
- +account.shares
- +" "
- +account.money
- );
- break;
-
-
- }
- System.out.print("\n");
-
- }
-
- @Override
- protected Action getAction(){
-
-
-
-
- if ( (account.shares>0) && (mode==Action.sell)){
- printstartus();
- return mode;
- }
- if ( (account.shares<=0 && mode==Action.sell)){
- mode=Action.buy;
- printstartus();
- return mode;
- }
- if (account.money>100.0 && mode==Action.buy){
- printstartus();
- return mode;
- }
- if (account.money<=100.0 && mode==Action.buy){
- mode=Action.sell;
- printstartus();
- return mode;
- }
- printstartus();
- return mode;
- }
-
-}
diff --git a/src/traders/SwitchingTraderConfig.java b/src/traders/SwitchingTraderConfig.java
deleted file mode 100644
index 0971d7e..0000000
--- a/src/traders/SwitchingTraderConfig.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2016, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package traders;
-
-import sesim.Account;
-import sesim.AutoTrader;
-import sesim.Exchange;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class SwitchingTraderConfig extends RandomTraderConfig {
-
- @Override
- public AutoTrader createTrader(Exchange se, long shares, double money) {
- Account a = new Account(se, shares, money);
- System.out.print("Returning a new sw trader\n");
- return new SwitchingTrader(a, this);
- }
-
- public SwitchingTraderConfig() {
-
- sell_volume = new float[]{100, 100};
- sell_limit = new float[]{-15, 1};
- sell_order_wait = new int[]{5, 10};
- wait_after_sell = new int[]{2, 10};
-
- buy_volume = new float[]{100, 100};
- buy_limit = new float[]{-5, 115};
- buy_order_wait = new int[]{15, 33};
- wait_after_buy = new int[]{20, 33};
- }
-}