file reset to defaults, save, load etc works/improved.

This commit is contained in:
7u83 2017-04-09 00:40:05 +02:00
parent d461decaa8
commit 6ae62ba294
7 changed files with 145 additions and 165 deletions

View File

@ -1,4 +1,4 @@
#Sat, 08 Apr 2017 22:54:05 +0200 #Sun, 09 Apr 2017 00:33:50 +0200
annotation.processing.enabled=true annotation.processing.enabled=true
annotation.processing.enabled.in.editor=false annotation.processing.enabled.in.editor=false
annotation.processing.processors.list= annotation.processing.processors.list=

View File

@ -219,6 +219,7 @@ public class Globals {
} }
public static void saveFile(File f) throws FileNotFoundException { public static void saveFile(File f) throws FileNotFoundException {
JSONObject sobj = new JSONObject(); JSONObject sobj = new JSONObject();
@ -237,12 +238,7 @@ public class Globals {
} }
public static void loadFile(File f) throws IOException { public static void loadString(String s) throws IOException{
f.getAbsoluteFile();
String s;
s = new String(Files.readAllBytes(f.toPath()));
JSONObject sobj = new JSONObject(s); JSONObject sobj = new JSONObject(s);
Double version = sobj.getDouble(PrefKeys.SESIMVERSION); Double version = sobj.getDouble(PrefKeys.SESIMVERSION);
@ -257,5 +253,15 @@ public class Globals {
putTraders(traders); putTraders(traders);
} }
public static void loadFile(File f) throws IOException {
f.getAbsoluteFile();
String s;
s = new String(Files.readAllBytes(f.toPath()));
loadString(s);
}
} }

View File

@ -88,7 +88,7 @@ public class MainChart extends chart.Chart {
1 * 24 * 3600 * 1000, 2 * 24 * 3600 * 1000 1 * 24 * 3600 * 1000, 2 * 24 * 3600 * 1000
}; };
private final Integer default_cmopression = 60 * 1000; private final Integer default_cmopression = 60 * 60 * 1000;
private void initCtxMenu() { private void initCtxMenu() {
ButtonGroup group = new ButtonGroup(); ButtonGroup group = new ButtonGroup();

View File

@ -53,17 +53,6 @@
<Property name="text" type="java.lang.String" value="File"/> <Property name="text" type="java.lang.String" value="File"/>
</Properties> </Properties>
<SubComponents> <SubComponents>
<MenuItem class="javax.swing.JMenuItem" name="resetMenuItem">
<Properties>
<Property name="mnemonic" type="int" value="114"/>
<Property name="text" type="java.lang.String" value="Reset"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="resetMenuItemActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator5">
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="openMenuItem"> <MenuItem class="javax.swing.JMenuItem" name="openMenuItem">
<Properties> <Properties>
<Property name="mnemonic" type="int" value="111"/> <Property name="mnemonic" type="int" value="111"/>
@ -101,6 +90,27 @@
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="closeMenuItemActionPerformed"/> <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="closeMenuItemActionPerformed"/>
</Events> </Events>
</MenuItem> </MenuItem>
<MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator5">
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="resetToDefaultsMenuItem">
<Properties>
<Property name="mnemonic" type="int" value="114"/>
<Property name="text" type="java.lang.String" value="Reset to defaults"/>
<Property name="toolTipText" type="java.lang.String" value=""/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="resetToDefaultsMenuItemActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="clearMenuItem">
<Properties>
<Property name="mnemonic" type="int" value="99"/>
<Property name="text" type="java.lang.String" value="Clear All"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="clearMenuItemActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator4"> <MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator4">
</MenuItem> </MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="exitMenuItem"> <MenuItem class="javax.swing.JMenuItem" name="exitMenuItem">
@ -195,21 +205,6 @@
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="simMenuStopActionPerformed"/> <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="simMenuStopActionPerformed"/>
</Events> </Events>
</MenuItem> </MenuItem>
<MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator3">
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="jMenuItem4">
<Properties>
<Property name="text" type="java.lang.String" value="Point Zero"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem4ActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="jMenuItem5">
<Properties>
<Property name="text" type="java.lang.String" value="jMenuItem5"/>
</Properties>
</MenuItem>
</SubComponents> </SubComponents>
</Menu> </Menu>
<Menu class="javax.swing.JMenu" name="viewMenu"> <Menu class="javax.swing.JMenu" name="viewMenu">

View File

@ -34,8 +34,10 @@ import java.awt.event.WindowEvent;
import java.awt.event.WindowListener; import java.awt.event.WindowListener;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Scanner;
import java.util.TimerTask; import java.util.TimerTask;
import java.util.logging.Handler; import java.util.logging.Handler;
import java.util.logging.Level; import java.util.logging.Level;
@ -56,7 +58,6 @@ import sesim.AutoTraderConfig;
import sesim.AutoTraderInterface; import sesim.AutoTraderInterface;
import sesim.Exchange; import sesim.Exchange;
import sesim.Scheduler; import sesim.Scheduler;
import traders.RandomTraderConfig;
/** /**
* *
@ -70,6 +71,11 @@ public class SeSimApplication extends javax.swing.JFrame {
public SeSimApplication() { public SeSimApplication() {
initComponents(); initComponents();
setTitle(""); setTitle("");
boolean init = Globals.prefs.getBoolean("initilized", false);
if (!init){
resetToDefaults();
Globals.prefs.putBoolean("initilized", true);
}
this.chartSrollPane.setVerticalScrollBarPolicy(VERTICAL_SCROLLBAR_NEVER); this.chartSrollPane.setVerticalScrollBarPolicy(VERTICAL_SCROLLBAR_NEVER);
this.setLocationRelativeTo(null); this.setLocationRelativeTo(null);
} }
@ -174,12 +180,13 @@ public class SeSimApplication extends javax.swing.JFrame {
statistics1 = new gui.Statistics(); statistics1 = new gui.Statistics();
menuBar = new javax.swing.JMenuBar(); menuBar = new javax.swing.JMenuBar();
fileMenu = new javax.swing.JMenu(); fileMenu = new javax.swing.JMenu();
resetMenuItem = new javax.swing.JMenuItem();
jSeparator5 = new javax.swing.JPopupMenu.Separator();
openMenuItem = new javax.swing.JMenuItem(); openMenuItem = new javax.swing.JMenuItem();
saveMenuItem = new javax.swing.JMenuItem(); saveMenuItem = new javax.swing.JMenuItem();
saveAsMenuItem = new javax.swing.JMenuItem(); saveAsMenuItem = new javax.swing.JMenuItem();
closeMenuItem = new javax.swing.JMenuItem(); closeMenuItem = new javax.swing.JMenuItem();
jSeparator5 = new javax.swing.JPopupMenu.Separator();
resetToDefaultsMenuItem = new javax.swing.JMenuItem();
clearMenuItem = new javax.swing.JMenuItem();
jSeparator4 = new javax.swing.JPopupMenu.Separator(); jSeparator4 = new javax.swing.JPopupMenu.Separator();
exitMenuItem = new javax.swing.JMenuItem(); exitMenuItem = new javax.swing.JMenuItem();
editMenu = new javax.swing.JMenu(); editMenu = new javax.swing.JMenu();
@ -193,9 +200,6 @@ public class SeSimApplication extends javax.swing.JFrame {
simMenuStart = new javax.swing.JMenuItem(); simMenuStart = new javax.swing.JMenuItem();
simMenuPause = new javax.swing.JMenuItem(); simMenuPause = new javax.swing.JMenuItem();
simMenuStop = new javax.swing.JMenuItem(); simMenuStop = new javax.swing.JMenuItem();
jSeparator3 = new javax.swing.JPopupMenu.Separator();
jMenuItem4 = new javax.swing.JMenuItem();
jMenuItem5 = new javax.swing.JMenuItem();
viewMenu = new javax.swing.JMenu(); viewMenu = new javax.swing.JMenu();
viewTraderListCheckBox = new javax.swing.JCheckBoxMenuItem(); viewTraderListCheckBox = new javax.swing.JCheckBoxMenuItem();
jCheckBoxMenuItem1 = new javax.swing.JCheckBoxMenuItem(); jCheckBoxMenuItem1 = new javax.swing.JCheckBoxMenuItem();
@ -334,16 +338,6 @@ public class SeSimApplication extends javax.swing.JFrame {
fileMenu.setMnemonic('f'); fileMenu.setMnemonic('f');
fileMenu.setText("File"); fileMenu.setText("File");
resetMenuItem.setMnemonic('r');
resetMenuItem.setText("Reset");
resetMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
resetMenuItemActionPerformed(evt);
}
});
fileMenu.add(resetMenuItem);
fileMenu.add(jSeparator5);
openMenuItem.setMnemonic('o'); openMenuItem.setMnemonic('o');
openMenuItem.setText("Open"); openMenuItem.setText("Open");
openMenuItem.addActionListener(new java.awt.event.ActionListener() { openMenuItem.addActionListener(new java.awt.event.ActionListener() {
@ -380,6 +374,26 @@ public class SeSimApplication extends javax.swing.JFrame {
} }
}); });
fileMenu.add(closeMenuItem); fileMenu.add(closeMenuItem);
fileMenu.add(jSeparator5);
resetToDefaultsMenuItem.setMnemonic('r');
resetToDefaultsMenuItem.setText("Reset to defaults");
resetToDefaultsMenuItem.setToolTipText("");
resetToDefaultsMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
resetToDefaultsMenuItemActionPerformed(evt);
}
});
fileMenu.add(resetToDefaultsMenuItem);
clearMenuItem.setMnemonic('c');
clearMenuItem.setText("Clear All");
clearMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
clearMenuItemActionPerformed(evt);
}
});
fileMenu.add(clearMenuItem);
fileMenu.add(jSeparator4); fileMenu.add(jSeparator4);
exitMenuItem.setMnemonic('x'); exitMenuItem.setMnemonic('x');
@ -465,18 +479,6 @@ public class SeSimApplication extends javax.swing.JFrame {
} }
}); });
simMenu.add(simMenuStop); simMenu.add(simMenuStop);
simMenu.add(jSeparator3);
jMenuItem4.setText("Point Zero");
jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem4ActionPerformed(evt);
}
});
simMenu.add(jMenuItem4);
jMenuItem5.setText("jMenuItem5");
simMenu.add(jMenuItem5);
menuBar.add(simMenu); menuBar.add(simMenu);
@ -737,9 +739,29 @@ public class SeSimApplication extends javax.swing.JFrame {
}//GEN-LAST:event_editExchangeMenuItemActionPerformed }//GEN-LAST:event_editExchangeMenuItemActionPerformed
private void resetMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resetMenuItemActionPerformed private void resetToDefaults(){
// TODO add your handling code here: InputStream is = getClass().getResourceAsStream("/resources/files/defaultcfg.json");
}//GEN-LAST:event_resetMenuItemActionPerformed String df = new Scanner(is, "UTF-8").useDelimiter("\\A").next();
try {
Globals.loadString(df);
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, "Can't load file: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
}
private void resetToDefaultsMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resetToDefaultsMenuItemActionPerformed
int dialogResult = JOptionPane.showConfirmDialog(this, "Are you sure?", "Warning", JOptionPane.YES_NO_OPTION);
if (dialogResult != JOptionPane.YES_OPTION) {
return;
}
this.resetToDefaults();
}//GEN-LAST:event_resetToDefaultsMenuItemActionPerformed
private void simMenuStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_simMenuStartActionPerformed private void simMenuStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_simMenuStartActionPerformed
startSim(); startSim();
@ -775,10 +797,6 @@ public class SeSimApplication extends javax.swing.JFrame {
jd.setVisible(rootPaneCheckingEnabled); jd.setVisible(rootPaneCheckingEnabled);
}//GEN-LAST:event_jCheckBoxMenuItem1ActionPerformed }//GEN-LAST:event_jCheckBoxMenuItem1ActionPerformed
private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed
Globals.se.pointZero();
}//GEN-LAST:event_jMenuItem4ActionPerformed
TraderListDialog tld = null; TraderListDialog tld = null;
private void viewTraderListCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_viewTraderListCheckBoxActionPerformed private void viewTraderListCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_viewTraderListCheckBoxActionPerformed
@ -822,6 +840,10 @@ public class SeSimApplication extends javax.swing.JFrame {
setTitle(""); setTitle("");
}//GEN-LAST:event_closeMenuItemActionPerformed }//GEN-LAST:event_closeMenuItemActionPerformed
private void clearMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearMenuItemActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_clearMenuItemActionPerformed
/** /**
* @param args the command line arguments * @param args the command line arguments
* @throws java.lang.IllegalAccessException * @throws java.lang.IllegalAccessException
@ -872,6 +894,7 @@ public class SeSimApplication extends javax.swing.JFrame {
private javax.swing.JSpinner accelSpinner; private javax.swing.JSpinner accelSpinner;
private gui.MainChart chart; private gui.MainChart chart;
private javax.swing.JScrollPane chartSrollPane; private javax.swing.JScrollPane chartSrollPane;
private javax.swing.JMenuItem clearMenuItem;
private gui.Clock clock; private gui.Clock clock;
private javax.swing.JMenuItem closeMenuItem; private javax.swing.JMenuItem closeMenuItem;
private javax.swing.JMenuItem deleteMenuItem; private javax.swing.JMenuItem deleteMenuItem;
@ -884,13 +907,10 @@ public class SeSimApplication extends javax.swing.JFrame {
private javax.swing.JButton jButton2; private javax.swing.JButton jButton2;
private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem1; private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem1;
private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel1;
private javax.swing.JMenuItem jMenuItem4;
private javax.swing.JMenuItem jMenuItem5;
private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JPopupMenu.Separator jSeparator1; private javax.swing.JPopupMenu.Separator jSeparator1;
private javax.swing.JPopupMenu.Separator jSeparator2; private javax.swing.JPopupMenu.Separator jSeparator2;
private javax.swing.JPopupMenu.Separator jSeparator3;
private javax.swing.JPopupMenu.Separator jSeparator4; private javax.swing.JPopupMenu.Separator jSeparator4;
private javax.swing.JPopupMenu.Separator jSeparator5; private javax.swing.JPopupMenu.Separator jSeparator5;
private javax.swing.JSplitPane jSplitPane1; private javax.swing.JSplitPane jSplitPane1;
@ -905,7 +925,7 @@ public class SeSimApplication extends javax.swing.JFrame {
private gui.orderbook.OrderBooksHorizontal orderBooksHorizontal1; private gui.orderbook.OrderBooksHorizontal orderBooksHorizontal1;
private javax.swing.JMenuItem pasteMenuItem; private javax.swing.JMenuItem pasteMenuItem;
private gui.orderbook.QuoteVertical quoteVertical1; private gui.orderbook.QuoteVertical quoteVertical1;
private javax.swing.JMenuItem resetMenuItem; private javax.swing.JMenuItem resetToDefaultsMenuItem;
private javax.swing.JButton runButton; private javax.swing.JButton runButton;
private javax.swing.JMenuItem saveAsMenuItem; private javax.swing.JMenuItem saveAsMenuItem;
private javax.swing.JMenuItem saveMenuItem; private javax.swing.JMenuItem saveMenuItem;

View File

@ -1,101 +1,60 @@
{ {
"traders": [ "traders": [
{ {
"Money": "100.0", "Money": "1000000.0",
"Strategy": "Tube", "Strategy": "SimpleRandom",
"Enabled": "true", "Enabled": "true",
"Count": "10000", "Count": "1",
"Shares": "100.0", "Shares": "10000.0",
"Name": "Mond" "Name": "Alice"
}, },
{ {
"Money": "1000.0", "Money": "10000.0",
"Strategy": "NasenTrading", "Strategy": "SimpleRandom",
"Enabled": "true", "Enabled": "true",
"Count": "100", "Count": "1",
"Shares": "10.0", "Shares": "100.0",
"Name": "Nase" "Name": "Bob"
} }
], ],
"strategies": { "strategies": {"SimpleRandom": {
"Tube": { "sell_wait": [
"sell_wait": [ 10000,
10000, 50000
50000 ],
], "initla_delay": [
"initla_delay": [ 0,
0, 5
5 ],
], "sell_limit": [
"sell_limit": [ -2,
-2, 2
2 ],
], "sell_wait_after": [
"sell_wait_after": [ 0,
1000, 0
30000 ],
], "buy_wait": [
"buy_wait": [ 10000,
10000, 50000
50000 ],
], "sell_volume": [
"sell_volume": [ 100,
100, 100
100 ],
], "buy_wait_after": [
"buy_wait_after": [ 0,
10, 0
30 ],
], "buy_volume": [
"buy_volume": [ 100,
100, 100
100 ],
], "buy_limit": [
"buy_limit": [ -2,
-2, 2
2 ],
], "base": "traders.RandomTraderA"
"base": "traders.RandomTraderA" }},
},
"NasenTrading": {
"sell_wait": [
10000,
50000
],
"initla_delay": [
0,
111
],
"sell_limit": [
-2,
9
],
"sell_wait_after": [
1000,
30000
],
"buy_wait": [
10000,
50000
],
"sell_volume": [
100,
100
],
"buy_wait_after": [
10,
30
],
"buy_volume": [
100,
100
],
"buy_limit": [
-2,
9
],
"base": "traders.RandomTraderA"
}
},
"version": 0.1 "version": 0.1
} }

View File

@ -50,12 +50,12 @@ public class RandomTraderA extends AutoTraderBase implements AccountListener {
public Float[] sell_volume = {100f, 100f}; public Float[] sell_volume = {100f, 100f};
public Float[] sell_limit = {-2f, 2f}; public Float[] sell_limit = {-2f, 2f};
public Long[] sell_wait = {10000L, 50000L}; public Long[] sell_wait = {10000L, 50000L};
public Long[] wait_after_sell = {1000L, 30000L}; public Long[] wait_after_sell = {0L, 0L};
public Float[] buy_volume = {100f, 100f}; public Float[] buy_volume = {100f, 100f};
public Float[] buy_limit = {-2f, 2f}; public Float[] buy_limit = {-2f, 2f};
public Long[] buy_wait = {10000L, 50000L}; public Long[] buy_wait = {10000L, 50000L};
public Long[] wait_after_buy = {10L, 30L}; public Long[] wait_after_buy = {0L, 0L};
final String INITIAL_DELAY = "initla_delay"; final String INITIAL_DELAY = "initla_delay";
final String SELL_VOLUME = "sell_volume"; final String SELL_VOLUME = "sell_volume";