File Save is possible
This commit is contained in:
parent
a11cf985a7
commit
25e8aa4495
@ -35,7 +35,7 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab
|
||||
protected int num_bars = 4000;
|
||||
|
||||
protected Rectangle clip_bounds = new Rectangle();
|
||||
protected Dimension dim;
|
||||
protected Dimension gdim;
|
||||
|
||||
protected int first_bar, last_bar;
|
||||
|
||||
@ -185,7 +185,7 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab
|
||||
|
||||
float m = c_mm.max/c_mm.min;
|
||||
|
||||
System.out.printf("Min: %f Max: %f M: %f\n",c_mm.min,c_mm.max,m);
|
||||
//System.out.printf("Min: %f Max: %f M: %f\n",c_mm.min,c_mm.max,m);
|
||||
|
||||
|
||||
//float fac = (float) c_rect.height /(float) Math.log(c_mm.max * c_yscaling);
|
||||
@ -195,7 +195,7 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab
|
||||
float fmin = c_rect.height - ((float) Math.log((y / c_mm.min)) * fac);
|
||||
|
||||
|
||||
System.out.printf("Fac: %f fmin: %f\n", fac, fmin);
|
||||
//System.out.printf("Fac: %f fmin: %f\n", fac, fmin);
|
||||
return fmin;
|
||||
|
||||
//return c_rect.height - ((float) Math.log((y - c_mm.min) * c_yscaling) * fac);
|
||||
@ -291,7 +291,7 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab
|
||||
|
||||
g.drawLine(dim.width + dim.x - yw, 0, dim.width + dim.x - yw, dim.height);
|
||||
|
||||
// float yscale = dim.height / c_mm.getDiff();
|
||||
// float yscale = gdim.height / c_mm.getDiff();
|
||||
c_yscaling = c_rect.height / c_mm.getDiff();
|
||||
|
||||
// System.out.printf("yscale %f\n", c_yscaling);
|
||||
@ -309,7 +309,7 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab
|
||||
// g.drawLine(0,(int)getYc(c_mm.min), 1000, (int)getYc(c_mm.min));
|
||||
//g.setColor(Color.green);
|
||||
//g.drawRect(c_rect.x, c_rect.y, c_rect.width, c_rect.height);
|
||||
// System.out.printf("Size: %d %d\n",dim.width,dim.height);
|
||||
// System.out.printf("Size: %d %d\n",gdim.width,gdim.height);
|
||||
// System.exit(0);
|
||||
}
|
||||
|
||||
@ -343,15 +343,16 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab
|
||||
//this.getSize();
|
||||
int pwidth = em_width * num_bars;
|
||||
int phight = 400;
|
||||
// phight=this.getVisibleRect().height;
|
||||
|
||||
this.setPreferredSize(new Dimension(pwidth, dim.height));
|
||||
this.setPreferredSize(new Dimension(pwidth, gdim.height));
|
||||
this.revalidate();
|
||||
|
||||
Rectangle r = new Rectangle(0, 0, pwidth, dim.height - 6 * em_width);
|
||||
Rectangle r = new Rectangle(0, 0, pwidth, gdim.height - 6 * em_width);
|
||||
c_rect = r;
|
||||
this.drawYLegend(g);
|
||||
|
||||
// Dimension dim = this.getSize();
|
||||
// Dimension gdim = this.getSize();
|
||||
// Iterator<OHLCDataItem> it = data.iterator();
|
||||
OHLCDataItem prev = null;
|
||||
// int myi = 0;
|
||||
@ -405,10 +406,14 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab
|
||||
super.paintComponent(g);
|
||||
|
||||
this.initEmSize(g);
|
||||
this.dim = this.getSize(dim);
|
||||
this.gdim = this.getParent().getSize(gdim);
|
||||
this.getParent().setPreferredSize(gdim);
|
||||
|
||||
|
||||
|
||||
this.clip_bounds = g.getClipBounds(this.clip_bounds);
|
||||
|
||||
// System.out.printf("X:%d %d\n",dim.width,dim.height);
|
||||
// System.out.printf("X:%d %d\n",gdim.width,gdim.height);
|
||||
first_bar = (int) (clip_bounds.x / (this.bar_width * this.em_size));
|
||||
last_bar = 1 + (int) ((clip_bounds.x + clip_bounds.width - (this.y_legend_width * em_size)) / (this.bar_width * this.em_size));
|
||||
|
||||
|
@ -41,7 +41,7 @@ public class AskBook extends OrderBook {
|
||||
|
||||
@Override
|
||||
boolean getDesc(){
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public AskBook(){
|
||||
|
117
src/main/java/gui/EditExchangeDialog.form
Normal file
117
src/main/java/gui/EditExchangeDialog.form
Normal file
@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
|
||||
<Properties>
|
||||
<Property name="defaultCloseOperation" type="int" value="2"/>
|
||||
<Property name="title" type="java.lang.String" value="SeSim ExchangeSettings"/>
|
||||
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[300, 142]"/>
|
||||
</Property>
|
||||
<Property name="modal" type="boolean" value="true"/>
|
||||
</Properties>
|
||||
<SyntheticProperties>
|
||||
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
|
||||
<SyntheticProperty name="generateCenter" type="boolean" value="false"/>
|
||||
</SyntheticProperties>
|
||||
<AuxValues>
|
||||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
|
||||
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
||||
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
|
||||
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
|
||||
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
|
||||
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
|
||||
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
||||
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
||||
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
||||
</AuxValues>
|
||||
|
||||
<Layout>
|
||||
<DimensionLayout dim="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="1" attributes="0">
|
||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||
<Component id="jButton2" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="jButton1" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" alignment="1" attributes="0">
|
||||
<Group type="103" groupAlignment="1" attributes="0">
|
||||
<Component id="jLabel1" pref="212" max="32767" attributes="0"/>
|
||||
<Component id="jLabel2" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="jSpinner2" alignment="1" min="-2" pref="70" max="-2" attributes="0"/>
|
||||
<Component id="jSpinner1" alignment="1" min="-2" pref="70" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
<DimensionLayout dim="1">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace min="-2" pref="15" max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="3" attributes="0">
|
||||
<Component id="jSpinner1" alignment="3" min="-2" pref="28" max="-2" attributes="0"/>
|
||||
<Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="3" attributes="0">
|
||||
<Component id="jSpinner2" alignment="3" min="-2" pref="28" max="-2" attributes="0"/>
|
||||
<Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace pref="32" max="32767" attributes="0"/>
|
||||
<Group type="103" groupAlignment="3" attributes="0">
|
||||
<Component id="jButton1" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="jButton2" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
</Layout>
|
||||
<SubComponents>
|
||||
<Component class="javax.swing.JSpinner" name="jSpinner1">
|
||||
<Properties>
|
||||
<Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
|
||||
<SpinnerModel initial="0" maximum="10" minimum="0" numberType="java.lang.Integer" stepSize="1" type="number"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="jLabel1">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" value="Number of decimals for shares:"/>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JSpinner" name="jSpinner2">
|
||||
<Properties>
|
||||
<Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
|
||||
<SpinnerModel initial="2" maximum="10" minimum="0" numberType="java.lang.Integer" stepSize="1" type="number"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="jLabel2">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" value="Number of decimals for money:"/>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JButton" name="jButton1">
|
||||
<Properties>
|
||||
<Property name="mnemonic" type="int" value="99"/>
|
||||
<Property name="text" type="java.lang.String" value="Cancel"/>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JButton" name="jButton2">
|
||||
<Properties>
|
||||
<Property name="mnemonic" type="int" value="111"/>
|
||||
<Property name="text" type="java.lang.String" value="Ok"/>
|
||||
</Properties>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Form>
|
177
src/main/java/gui/EditExchangeDialog.java
Normal file
177
src/main/java/gui/EditExchangeDialog.java
Normal file
@ -0,0 +1,177 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 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 EditExchangeDialog extends javax.swing.JDialog {
|
||||
|
||||
/**
|
||||
* Creates new form EditExchnageDialog
|
||||
*/
|
||||
public EditExchangeDialog(java.awt.Frame parent, boolean modal) {
|
||||
super(parent, modal);
|
||||
initComponents();
|
||||
this.setLocationRelativeTo(parent);
|
||||
}
|
||||
|
||||
int showdialog(){
|
||||
this.setVisible(true);
|
||||
return 3;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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")
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
|
||||
jSpinner1 = new javax.swing.JSpinner();
|
||||
jLabel1 = new javax.swing.JLabel();
|
||||
jSpinner2 = new javax.swing.JSpinner();
|
||||
jLabel2 = new javax.swing.JLabel();
|
||||
jButton1 = new javax.swing.JButton();
|
||||
jButton2 = new javax.swing.JButton();
|
||||
|
||||
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
||||
setTitle("SeSim ExchangeSettings");
|
||||
setMinimumSize(new java.awt.Dimension(300, 142));
|
||||
setModal(true);
|
||||
|
||||
jSpinner1.setModel(new javax.swing.SpinnerNumberModel(0, 0, 10, 1));
|
||||
|
||||
jLabel1.setText("Number of decimals for shares:");
|
||||
|
||||
jSpinner2.setModel(new javax.swing.SpinnerNumberModel(2, 0, 10, 1));
|
||||
|
||||
jLabel2.setText("Number of decimals for money:");
|
||||
|
||||
jButton1.setMnemonic('c');
|
||||
jButton1.setText("Cancel");
|
||||
|
||||
jButton2.setMnemonic('o');
|
||||
jButton2.setText("Ok");
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||
getContentPane().setLayout(layout);
|
||||
layout.setHorizontalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||
.addGap(0, 0, Short.MAX_VALUE)
|
||||
.addComponent(jButton2)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(jButton1))
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 212, Short.MAX_VALUE)
|
||||
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(jSpinner2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addComponent(jSpinner1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE))))
|
||||
.addContainerGap())
|
||||
);
|
||||
layout.setVerticalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addGap(15, 15, 15)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addComponent(jLabel1))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(jSpinner2, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addComponent(jLabel2))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 32, Short.MAX_VALUE)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(jButton1)
|
||||
.addComponent(jButton2))
|
||||
.addContainerGap())
|
||||
);
|
||||
|
||||
pack();
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
/**
|
||||
* @param args the command line arguments
|
||||
*/
|
||||
public static void main(String args[]) {
|
||||
/* Set the Nimbus look and feel */
|
||||
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
|
||||
/* 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 ("Nimbus".equals(info.getName())) {
|
||||
javax.swing.UIManager.setLookAndFeel(info.getClassName());
|
||||
break;
|
||||
}
|
||||
}
|
||||
} catch (ClassNotFoundException ex) {
|
||||
java.util.logging.Logger.getLogger(EditExchangeDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
|
||||
} catch (InstantiationException ex) {
|
||||
java.util.logging.Logger.getLogger(EditExchangeDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
|
||||
} catch (IllegalAccessException ex) {
|
||||
java.util.logging.Logger.getLogger(EditExchangeDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
|
||||
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
|
||||
java.util.logging.Logger.getLogger(EditExchangeDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
|
||||
}
|
||||
//</editor-fold>
|
||||
//</editor-fold>
|
||||
|
||||
/* Create and display the dialog */
|
||||
java.awt.EventQueue.invokeLater(new Runnable() {
|
||||
public void run() {
|
||||
EditExchangeDialog dialog = new EditExchangeDialog(new javax.swing.JFrame(), true);
|
||||
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
|
||||
@Override
|
||||
public void windowClosing(java.awt.event.WindowEvent e) {
|
||||
System.exit(0);
|
||||
}
|
||||
});
|
||||
dialog.setVisible(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JButton jButton1;
|
||||
private javax.swing.JButton jButton2;
|
||||
private javax.swing.JLabel jLabel1;
|
||||
private javax.swing.JLabel jLabel2;
|
||||
private javax.swing.JSpinner jSpinner1;
|
||||
private javax.swing.JSpinner jSpinner2;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
@ -25,9 +25,12 @@
|
||||
*/
|
||||
package gui;
|
||||
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Iterator;
|
||||
import java.util.TreeMap;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.prefs.Preferences;
|
||||
import javax.swing.JComboBox;
|
||||
@ -88,8 +91,8 @@ public class Globals {
|
||||
JSONObject cfgs = new JSONObject(cfglist);
|
||||
return cfgs;
|
||||
}
|
||||
|
||||
static public JSONObject getStrategy(String name){
|
||||
|
||||
static public JSONObject getStrategy(String name) {
|
||||
return getStrategies().getJSONObject(name);
|
||||
}
|
||||
|
||||
@ -123,4 +126,21 @@ public class Globals {
|
||||
prefs.put(STRATEGYPREFS, cfgs.toString());
|
||||
}
|
||||
|
||||
static void saveFile(File f) {
|
||||
|
||||
JSONObject sobj = new JSONObject();
|
||||
JSONArray traders = getTraders();
|
||||
JSONObject strategies = getStrategies();
|
||||
sobj.put("strategies", strategies);
|
||||
sobj.put("traders", traders);
|
||||
try {
|
||||
PrintWriter out = new PrintWriter(f.getAbsolutePath());
|
||||
out.print(sobj.toString(4));
|
||||
out.close();
|
||||
} catch (FileNotFoundException ex) {
|
||||
Logger.getLogger(Globals.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -31,6 +31,9 @@
|
||||
<Property name="mnemonic" type="int" value="111"/>
|
||||
<Property name="text" type="java.lang.String" value="Open"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="openMenuItemActionPerformed"/>
|
||||
</Events>
|
||||
</MenuItem>
|
||||
<MenuItem class="javax.swing.JMenuItem" name="saveMenuItem">
|
||||
<Properties>
|
||||
@ -44,6 +47,9 @@
|
||||
<Property name="text" type="java.lang.String" value="Save As ..."/>
|
||||
<Property name="displayedMnemonicIndex" type="int" value="5"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="saveAsMenuItemActionPerformed"/>
|
||||
</Events>
|
||||
</MenuItem>
|
||||
<MenuItem class="javax.swing.JMenuItem" name="exitMenuItem">
|
||||
<Properties>
|
||||
@ -54,15 +60,6 @@
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="exitMenuItemActionPerformed"/>
|
||||
</Events>
|
||||
</MenuItem>
|
||||
<MenuItem class="javax.swing.JMenuItem" name="jMenuItem1">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" value="Run"/>
|
||||
<Property name="hideActionText" type="boolean" value="true"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem1ActionPerformed"/>
|
||||
</Events>
|
||||
</MenuItem>
|
||||
</SubComponents>
|
||||
</Menu>
|
||||
<Menu class="javax.swing.JMenu" name="editMenu">
|
||||
@ -71,17 +68,14 @@
|
||||
<Property name="text" type="java.lang.String" value="Edit"/>
|
||||
</Properties>
|
||||
<SubComponents>
|
||||
<MenuItem class="javax.swing.JMenuItem" name="cutMenuItem">
|
||||
<Properties>
|
||||
<Property name="mnemonic" type="int" value="116"/>
|
||||
<Property name="text" type="java.lang.String" value="Cut"/>
|
||||
</Properties>
|
||||
</MenuItem>
|
||||
<MenuItem class="javax.swing.JMenuItem" name="copyMenuItem">
|
||||
<MenuItem class="javax.swing.JMenuItem" name="editExchangeMenuItem">
|
||||
<Properties>
|
||||
<Property name="mnemonic" type="int" value="121"/>
|
||||
<Property name="text" type="java.lang.String" value="Copy"/>
|
||||
<Property name="text" type="java.lang.String" value="Exchange ..."/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="editExchangeMenuItemActionPerformed"/>
|
||||
</Events>
|
||||
</MenuItem>
|
||||
<MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator1">
|
||||
</MenuItem>
|
||||
@ -194,10 +188,10 @@
|
||||
<Layout>
|
||||
<DimensionLayout dim="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="jToolBar1" pref="797" max="32767" attributes="0"/>
|
||||
<Component id="jToolBar1" pref="798" max="32767" attributes="0"/>
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="orderBookPanel1" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="orderBookPanel1" min="-2" pref="233" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="jScrollPane1" max="32767" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
|
@ -26,6 +26,7 @@
|
||||
package gui;
|
||||
|
||||
import java.awt.Dialog;
|
||||
import java.awt.Frame;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.logging.Handler;
|
||||
@ -34,6 +35,7 @@ import java.util.logging.Logger;
|
||||
import java.util.prefs.Preferences;
|
||||
import javax.swing.JFileChooser;
|
||||
import javax.swing.UIManager;
|
||||
import javax.swing.filechooser.FileNameExtensionFilter;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
import sesim.AutoTrader;
|
||||
@ -137,10 +139,8 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
||||
saveMenuItem = new javax.swing.JMenuItem();
|
||||
saveAsMenuItem = new javax.swing.JMenuItem();
|
||||
exitMenuItem = new javax.swing.JMenuItem();
|
||||
jMenuItem1 = new javax.swing.JMenuItem();
|
||||
editMenu = new javax.swing.JMenu();
|
||||
cutMenuItem = new javax.swing.JMenuItem();
|
||||
copyMenuItem = new javax.swing.JMenuItem();
|
||||
editExchangeMenuItem = new javax.swing.JMenuItem();
|
||||
jSeparator1 = new javax.swing.JPopupMenu.Separator();
|
||||
pasteMenuItem = new javax.swing.JMenuItem();
|
||||
deleteMenuItem = new javax.swing.JMenuItem();
|
||||
@ -208,6 +208,11 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
||||
|
||||
openMenuItem.setMnemonic('o');
|
||||
openMenuItem.setText("Open");
|
||||
openMenuItem.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
openMenuItemActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
fileMenu.add(openMenuItem);
|
||||
|
||||
saveMenuItem.setMnemonic('s');
|
||||
@ -217,6 +222,11 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
||||
saveAsMenuItem.setMnemonic('a');
|
||||
saveAsMenuItem.setText("Save As ...");
|
||||
saveAsMenuItem.setDisplayedMnemonicIndex(5);
|
||||
saveAsMenuItem.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
saveAsMenuItemActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
fileMenu.add(saveAsMenuItem);
|
||||
|
||||
exitMenuItem.setMnemonic('x');
|
||||
@ -228,27 +238,19 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
||||
});
|
||||
fileMenu.add(exitMenuItem);
|
||||
|
||||
jMenuItem1.setText("Run");
|
||||
jMenuItem1.setHideActionText(true);
|
||||
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
jMenuItem1ActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
fileMenu.add(jMenuItem1);
|
||||
|
||||
menuBar.add(fileMenu);
|
||||
|
||||
editMenu.setMnemonic('e');
|
||||
editMenu.setText("Edit");
|
||||
|
||||
cutMenuItem.setMnemonic('t');
|
||||
cutMenuItem.setText("Cut");
|
||||
editMenu.add(cutMenuItem);
|
||||
|
||||
copyMenuItem.setMnemonic('y');
|
||||
copyMenuItem.setText("Copy");
|
||||
editMenu.add(copyMenuItem);
|
||||
editExchangeMenuItem.setMnemonic('y');
|
||||
editExchangeMenuItem.setText("Exchange ...");
|
||||
editExchangeMenuItem.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
editExchangeMenuItemActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
editMenu.add(editExchangeMenuItem);
|
||||
editMenu.add(jSeparator1);
|
||||
|
||||
pasteMenuItem.setMnemonic('s');
|
||||
@ -325,10 +327,10 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
||||
getContentPane().setLayout(layout);
|
||||
layout.setHorizontalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 797, Short.MAX_VALUE)
|
||||
.addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 798, Short.MAX_VALUE)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(orderBookPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addComponent(orderBookPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 233, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(jScrollPane1)
|
||||
.addContainerGap())
|
||||
@ -369,10 +371,6 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
||||
d.setVisible(rootPaneCheckingEnabled);
|
||||
}//GEN-LAST:event_editPreferencesActionPerformed
|
||||
|
||||
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
|
||||
// TODO add your handling code here:
|
||||
}//GEN-LAST:event_jMenuItem1ActionPerformed
|
||||
|
||||
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
|
||||
TraderListDialog d = new TraderListDialog(this, false);
|
||||
d.setVisible(rootPaneCheckingEnabled);
|
||||
@ -407,6 +405,50 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
||||
|
||||
}//GEN-LAST:event_jMenuItem3ActionPerformed
|
||||
|
||||
private void openMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openMenuItemActionPerformed
|
||||
|
||||
}//GEN-LAST:event_openMenuItemActionPerformed
|
||||
|
||||
private void saveAsMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveAsMenuItemActionPerformed
|
||||
JFileChooser fc = new JFileChooser();
|
||||
|
||||
FileNameExtensionFilter filter = new FileNameExtensionFilter("SeSim Files","sesim");
|
||||
fc.setFileFilter(filter);
|
||||
|
||||
if (fc.showSaveDialog(this.getParent()) != JFileChooser.APPROVE_OPTION){
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
File f = fc.getSelectedFile();
|
||||
|
||||
String [] e = ((FileNameExtensionFilter)fc.getFileFilter()).getExtensions();
|
||||
|
||||
System.out.printf("Abs: %s\n", f.getAbsoluteFile());
|
||||
|
||||
String fn=f.getAbsolutePath();
|
||||
|
||||
|
||||
if (!f.getAbsolutePath().endsWith(e[0])){
|
||||
f = new File(f.getAbsolutePath()+"."+e[0]);
|
||||
}
|
||||
|
||||
|
||||
Globals.saveFile(f);
|
||||
|
||||
|
||||
System.out.printf("Sel File: %s \n",f.getAbsolutePath());
|
||||
|
||||
|
||||
}//GEN-LAST:event_saveAsMenuItemActionPerformed
|
||||
|
||||
private void editExchangeMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editExchangeMenuItemActionPerformed
|
||||
EditExchangeDialog ed=new EditExchangeDialog((Frame) this.getParent(),true);
|
||||
int rc = ed.showdialog();
|
||||
// System.out.printf("EDRET: %d\n",rc);
|
||||
|
||||
}//GEN-LAST:event_editExchangeMenuItemActionPerformed
|
||||
|
||||
/**
|
||||
* @param args the command line arguments
|
||||
* @throws java.lang.IllegalAccessException
|
||||
@ -460,9 +502,8 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
||||
private javax.swing.JMenuItem aboutMenuItem;
|
||||
private chart.Chart chart1;
|
||||
private javax.swing.JMenuItem contentMenuItem;
|
||||
private javax.swing.JMenuItem copyMenuItem;
|
||||
private javax.swing.JMenuItem cutMenuItem;
|
||||
private javax.swing.JMenuItem deleteMenuItem;
|
||||
private javax.swing.JMenuItem editExchangeMenuItem;
|
||||
private javax.swing.JMenu editMenu;
|
||||
private javax.swing.JMenuItem editPreferences;
|
||||
private javax.swing.JMenuItem exitMenuItem;
|
||||
@ -470,7 +511,6 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
||||
private javax.swing.JMenu helpMenu;
|
||||
private javax.swing.JButton jButton2;
|
||||
private javax.swing.JMenu jMenu1;
|
||||
private javax.swing.JMenuItem jMenuItem1;
|
||||
private javax.swing.JMenuItem jMenuItem2;
|
||||
private javax.swing.JMenuItem jMenuItem3;
|
||||
private javax.swing.JButton jRunButton;
|
||||
|
@ -33,6 +33,7 @@ import javax.swing.table.AbstractTableModel;
|
||||
import javax.swing.table.JTableHeader;
|
||||
import javax.swing.SwingUtilities;
|
||||
import java.awt.*;
|
||||
import java.text.DecimalFormat;
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.*;
|
||||
|
||||
@ -85,7 +86,11 @@ public abstract class OrderBook extends javax.swing.JPanel implements Exchange.B
|
||||
|
||||
}
|
||||
ArrayList newlist = getOrderBook();
|
||||
//this.orderBookScroller.scrollRectToVisible(this.orderBookList.getCellRect(this.orderBookList.getRowCount()-1, 0, true));
|
||||
SwingUtilities.invokeLater(new Updater(this.model,newlist));
|
||||
|
||||
//this.scrollRectToVisible(this.getCellRect(rowIndex, vColIndex, false));
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -144,8 +149,13 @@ public abstract class OrderBook extends javax.swing.JPanel implements Exchange.B
|
||||
return 3;
|
||||
}
|
||||
|
||||
DecimalFormat dfm = new DecimalFormat("0.00#");
|
||||
DecimalFormat dfv = new DecimalFormat("0.#");
|
||||
|
||||
@Override
|
||||
public Object getValueAt(int r, int c) {
|
||||
|
||||
|
||||
Order o;
|
||||
|
||||
int s = list.size();
|
||||
@ -162,9 +172,12 @@ public abstract class OrderBook extends javax.swing.JPanel implements Exchange.B
|
||||
return String.format("#%06x", o.getID());
|
||||
|
||||
case 1:
|
||||
return String.format("%.4f",o.getLimit());
|
||||
//return String.format("%.f",o.getLimit());
|
||||
return dfm.format((double)o.getLimit());
|
||||
|
||||
case 2:
|
||||
return String.format("%.4f", o.getVolume());
|
||||
return dfv.format((double)o.getVolume());
|
||||
//return String.format("%f", o.getVolume());
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
@ -6,23 +6,46 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author tube
|
||||
*/
|
||||
public class Exchange { //extends Thread {
|
||||
|
||||
private double money_df = 10000;
|
||||
private double shares_df = 1;
|
||||
|
||||
public void setMoneyDecimals(int n) {
|
||||
money_df = Math.pow(10, n);
|
||||
}
|
||||
|
||||
public void setSharesDecimals(int n) {
|
||||
shares_df = Math.pow(10, n);
|
||||
}
|
||||
|
||||
public double roundToDecimals(double val,double f){
|
||||
return Math.floor(val*f)/f;
|
||||
}
|
||||
|
||||
public double roundShares(double shares){
|
||||
return roundToDecimals(shares,shares_df);
|
||||
}
|
||||
public double roundMoney(double money){
|
||||
return roundToDecimals(money,money_df);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public enum OrderType {
|
||||
BID, ASK
|
||||
}
|
||||
|
||||
IDGenerator account_id = new IDGenerator();
|
||||
//public static Timer timer = new Timer();
|
||||
|
||||
|
||||
public Scheduler timer = new Scheduler();
|
||||
//public AutoTraderList traders = new AutoTraderList();
|
||||
public ArrayList <AutoTrader> traders = new ArrayList();
|
||||
public ArrayList<AutoTrader> traders = new ArrayList();
|
||||
|
||||
/**
|
||||
* Implements a trading account
|
||||
@ -61,16 +84,13 @@ public class Exchange { //extends Thread {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void createTraders(JSONArray traderdefs){
|
||||
for (int i=0; i<traderdefs.length(); i++){
|
||||
|
||||
public void createTraders(JSONArray traderdefs) {
|
||||
for (int i = 0; i < traderdefs.length(); i++) {
|
||||
JSONObject o = traderdefs.getJSONObject(i);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// this.traders.add(randt);
|
||||
// randt.setName("Bob");
|
||||
// randt.start();
|
||||
@ -111,6 +131,11 @@ public class Exchange { //extends Thread {
|
||||
if (d != 0) {
|
||||
return d > 0 ? 1 : -1;
|
||||
}
|
||||
|
||||
d=right.initial_volume-left.initial_volume;
|
||||
if (d!=0){
|
||||
return d > 0 ? 1 : -1;
|
||||
}
|
||||
|
||||
if (left.id < right.id) {
|
||||
return -1;
|
||||
@ -126,7 +151,6 @@ public class Exchange { //extends Thread {
|
||||
|
||||
}
|
||||
|
||||
|
||||
HashMap<OrderType, SortedSet<Order>> order_books = new HashMap();
|
||||
|
||||
IDGenerator order_id = new IDGenerator();
|
||||
@ -145,9 +169,9 @@ public class Exchange { //extends Thread {
|
||||
id = order_id.getNext();
|
||||
this.account = account;
|
||||
this.type = type;
|
||||
this.limit = limit;
|
||||
this.volume = volume;
|
||||
this.initial_volume = volume;
|
||||
this.limit = roundMoney(limit);
|
||||
this.volume = roundShares(volume);
|
||||
this.initial_volume = this.volume;
|
||||
this.created = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
@ -194,23 +218,17 @@ public class Exchange { //extends Thread {
|
||||
//SortedSet b = new TreeSet(new OrderComparator(type));
|
||||
order_books.put(type, new TreeSet(new OrderComparator(type)));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*public interface TimerEvent {
|
||||
|
||||
/*public interface TimerEvent {
|
||||
|
||||
long timerEvent();
|
||||
}
|
||||
*/
|
||||
|
||||
void start(){
|
||||
*/
|
||||
void start() {
|
||||
timer.start();
|
||||
}
|
||||
|
||||
|
||||
class BidBook extends TreeSet {
|
||||
|
||||
@ -274,7 +292,6 @@ public class Exchange { //extends Thread {
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Class to describe an executed order
|
||||
// QuoteReceiver has to be implemented by objects that wants
|
||||
// to receive quote updates
|
||||
@ -318,7 +335,7 @@ public class Exchange { //extends Thread {
|
||||
while (i.hasNext()) {
|
||||
i.next().UpdateOrderBook();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Here we store the list of quote receivers
|
||||
@ -347,13 +364,8 @@ public class Exchange { //extends Thread {
|
||||
double lastprice = 100.0;
|
||||
long lastsvolume;
|
||||
|
||||
|
||||
|
||||
private final Locker tradelock = new Locker();
|
||||
|
||||
|
||||
|
||||
|
||||
public ArrayList<Order> getOrderBook(OrderType type, int depth) {
|
||||
|
||||
SortedSet<Order> book = order_books.get(type);
|
||||
@ -376,9 +388,6 @@ public class Exchange { //extends Thread {
|
||||
return this.quoteHistory.last();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void transferMoneyAndShares(Account src, Account dst, double money, double shares) {
|
||||
src.money -= money;
|
||||
dst.money += money;
|
||||
@ -417,21 +426,19 @@ public class Exchange { //extends Thread {
|
||||
*
|
||||
* @param o
|
||||
*/
|
||||
|
||||
|
||||
|
||||
long nextQuoteId = 0;
|
||||
|
||||
private void removeOrderIfExecuted(Order o) {
|
||||
if (o.volume != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
o.account.orders.remove(o.id);
|
||||
|
||||
SortedSet book = order_books.get(o.type);
|
||||
|
||||
book.remove(book.first());
|
||||
|
||||
//pollFirst();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -450,6 +457,9 @@ public class Exchange { //extends Thread {
|
||||
Order b = bid.first();
|
||||
Order a = ask.first();
|
||||
|
||||
//System.out.printf("In %f (%f) < %f (%f)\n",b.limit,b.volume,a.limit,a.volume);
|
||||
|
||||
|
||||
if (b.limit < a.limit) {
|
||||
break;
|
||||
}
|
||||
@ -457,6 +467,8 @@ public class Exchange { //extends Thread {
|
||||
// There is a match, calculate price and volume
|
||||
double price = b.id < a.id ? b.limit : a.limit;
|
||||
double volume = b.volume >= a.volume ? a.volume : b.volume;
|
||||
|
||||
//System.out.printf("Price %f Vol %f\n", price,volume);
|
||||
|
||||
// Transfer money and shares
|
||||
transferMoneyAndShares(b.account, a.account, volume * price, -volume);
|
||||
@ -465,6 +477,8 @@ public class Exchange { //extends Thread {
|
||||
b.volume -= volume;
|
||||
a.volume -= volume;
|
||||
|
||||
//System.out.printf("In %f (%f) < %f (%f)\n",b.limit,b.volume,a.limit,a.volume);
|
||||
|
||||
volume_total += volume;
|
||||
money_total += price * volume;
|
||||
|
||||
|
@ -66,7 +66,7 @@ public class RandomTrader extends AutoTrader {
|
||||
public long timerTask() {
|
||||
sesim.Exchange.Account a = se.getAccount(account_id);
|
||||
long rc = this.doTrade();
|
||||
return rc /1;
|
||||
return rc /100;
|
||||
|
||||
// return this.event();
|
||||
}
|
||||
@ -84,7 +84,7 @@ public class RandomTrader extends AutoTrader {
|
||||
|
||||
}
|
||||
|
||||
double start = 1.1;
|
||||
double start = 0.1;
|
||||
//Timer timer = new Timer();
|
||||
|
||||
@Override
|
||||
|
@ -98,21 +98,20 @@ public class Test {
|
||||
*/
|
||||
public static void main(String[] args) throws InterruptedException, MalformedURLException, InstantiationException, IllegalAccessException, IOException {
|
||||
|
||||
Float x0;
|
||||
x0 = 3.1f;
|
||||
|
||||
int x1; // = new Integer(0);
|
||||
|
||||
x1 = 4;
|
||||
|
||||
//x1 = (Integer)(Number)x0;
|
||||
Double z = 0.99;
|
||||
// to(x0,z);
|
||||
|
||||
System.out.printf("Erg: %f\n", x0);
|
||||
|
||||
System.out.printf("Hello world\n", "");
|
||||
System.exit(0);
|
||||
Double x = 3.1415926;
|
||||
|
||||
Double r = Math.floor(x*100.0)/100.0;
|
||||
|
||||
|
||||
|
||||
System.out.print(r);
|
||||
System.out.println();
|
||||
|
||||
Double p = Math.pow(10, 5);
|
||||
System.out.print(p);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user