diff --git a/src/main/java/chart/Chart.java b/src/main/java/chart/Chart.java index 408e072..6be0bdc 100644 --- a/src/main/java/chart/Chart.java +++ b/src/main/java/chart/Chart.java @@ -55,7 +55,7 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab // int item_width = 10; //int items = 350; //long ntime = 0; - OHLCData data = new OHLCData(60000); + OHLCData data = new OHLCData(6000); OHLCDataItem current = null; diff --git a/src/main/java/gui/EditAutoTraderList.form b/src/main/java/gui/EditAutoTraderList.form index 9b91a3e..cfef8bd 100644 --- a/src/main/java/gui/EditAutoTraderList.form +++ b/src/main/java/gui/EditAutoTraderList.form @@ -53,9 +53,9 @@ - - - + + + diff --git a/src/main/java/gui/EditAutoTraderList.java b/src/main/java/gui/EditAutoTraderList.java index fe37eae..68292c6 100644 --- a/src/main/java/gui/EditAutoTraderList.java +++ b/src/main/java/gui/EditAutoTraderList.java @@ -25,13 +25,19 @@ */ package gui; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.DefaultCellEditor; +import javax.swing.JComboBox; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableModel; import javax.swing.table.JTableHeader; import org.json.JSONArray; import org.json.JSONObject; +import sesim.AutoTraderConfig; /** * @@ -78,8 +84,36 @@ public class EditAutoTraderList extends javax.swing.JPanel { public EditAutoTraderList() { initComponents(); + JComboBox comboBox = new JComboBox(); + + ArrayList > trconfigs=null; + trconfigs = Globals.tloader.getTraders(); + + for (int i=0; i + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/main/java/gui/EditTradingStrategies.java b/src/main/java/gui/EditTradingStrategies.java new file mode 100644 index 0000000..8430b19 --- /dev/null +++ b/src/main/java/gui/EditTradingStrategies.java @@ -0,0 +1,180 @@ +/* + * 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; + +import java.util.ArrayList; +import sesim.AutoTraderConfig; + +/** + * + * @author 7u83 <7u83@mail.ru> + */ +public class EditTradingStrategies extends javax.swing.JDialog { + + /** + * Creates new form EditTradingStrategies + */ + public EditTradingStrategies(java.awt.Frame parent, boolean modal) { + super(parent, modal); + initComponents(); + + this.jComboBox1.removeAllItems(); + ArrayList sn = Globals.tloader.getDefaultStrategyNames(); + for(int i=0; i> s = Globals.tloader.getTraders(); + + + } + + + /** + * 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() { + + jComboBox1 = new javax.swing.JComboBox<>(); + jPanel1 = new javax.swing.JPanel(); + jButton1 = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + jComboBox1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); + jComboBox1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jComboBox1ActionPerformed(evt); + } + }); + + jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 0, Short.MAX_VALUE) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 270, Short.MAX_VALUE) + ); + + jButton1.setText("jButton1"); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(99, 99, 99) + .addComponent(jComboBox1, 0, 411, Short.MAX_VALUE)) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(jButton1))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jButton1) + .addContainerGap()) + ); + + pack(); + }// //GEN-END:initComponents + + private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox1ActionPerformed + System.out.printf("Now Strategie Dialog to open\n"); + }//GEN-LAST:event_jComboBox1ActionPerformed + + /** + * @param args the command line arguments + */ + public static void main(String args[]) { + /* 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 ("Nimbus".equals(info.getName())) { + javax.swing.UIManager.setLookAndFeel(info.getClassName()); + break; + } + } + } catch (ClassNotFoundException ex) { + java.util.logging.Logger.getLogger(EditTradingStrategies.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (InstantiationException ex) { + java.util.logging.Logger.getLogger(EditTradingStrategies.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (IllegalAccessException ex) { + java.util.logging.Logger.getLogger(EditTradingStrategies.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (javax.swing.UnsupportedLookAndFeelException ex) { + java.util.logging.Logger.getLogger(EditTradingStrategies.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } + // + + /* Create and display the dialog */ + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + EditTradingStrategies dialog = new EditTradingStrategies(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.JComboBox jComboBox1; + private javax.swing.JPanel jPanel1; + // End of variables declaration//GEN-END:variables +} diff --git a/src/main/java/gui/Globals.java b/src/main/java/gui/Globals.java index 1793cc3..0f8f1dc 100644 --- a/src/main/java/gui/Globals.java +++ b/src/main/java/gui/Globals.java @@ -28,35 +28,34 @@ package gui; import chart.NewMDIApplication; import java.util.prefs.Preferences; import javax.swing.UIManager; +import sesim.AutoTraderLoader; /** * * @author 7u83 <7u83@mail.ru> */ public class Globals { - + static public sesim.Exchange se; - + static public Preferences prefs; - - static void setLookAndFeel(String selected){ - + + static void setLookAndFeel(String selected) { + try { - String look = "com.seaglasslookandfeel.SeaGlassLookAndFeel"; - Class.forName(look); - UIManager.installLookAndFeel("Sea Glass", look); - }catch (ClassNotFoundException e) { - } - - - + String look = "com.seaglasslookandfeel.SeaGlassLookAndFeel"; + Class.forName(look); + UIManager.installLookAndFeel("Sea Glass", look); + } catch (ClassNotFoundException e) { + } + UIManager.LookAndFeelInfo[] lafInfo = UIManager.getInstalledLookAndFeels(); - for (UIManager.LookAndFeelInfo lafInfo1 : lafInfo) { + for (UIManager.LookAndFeelInfo lafInfo1 : lafInfo) { if (lafInfo1.getName().equals(selected)) { String lafClassName = lafInfo1.getClassName(); try { UIManager.setLookAndFeel(lafClassName); - // UIManager.setLookAndFeel("com.seaglasslookandfeel.SeaGlassLookAndFeel"); + // UIManager.setLookAndFeel("com.seaglasslookandfeel.SeaGlassLookAndFeel"); break; } catch (Exception e) { @@ -65,7 +64,8 @@ public class Globals { } } + static AutoTraderLoader tloader=new AutoTraderLoader(); - + } diff --git a/src/main/java/gui/NewMDIApplication.form b/src/main/java/gui/NewMDIApplication.form index 804173e..8501571 100644 --- a/src/main/java/gui/NewMDIApplication.form +++ b/src/main/java/gui/NewMDIApplication.form @@ -69,9 +69,12 @@ - - + + + + + diff --git a/src/main/java/gui/NewMDIApplication.java b/src/main/java/gui/NewMDIApplication.java index 8bfea28..26f5962 100644 --- a/src/main/java/gui/NewMDIApplication.java +++ b/src/main/java/gui/NewMDIApplication.java @@ -198,8 +198,13 @@ public class NewMDIApplication extends javax.swing.JFrame { copyMenuItem.setText("Copy"); editMenu.add(copyMenuItem); - pasteMenuItem.setMnemonic('p'); - pasteMenuItem.setText("Paste"); + pasteMenuItem.setMnemonic('s'); + pasteMenuItem.setText("Strategies ..."); + pasteMenuItem.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + pasteMenuItemActionPerformed(evt); + } + }); editMenu.add(pasteMenuItem); deleteMenuItem.setMnemonic('d'); @@ -320,6 +325,12 @@ public class NewMDIApplication extends javax.swing.JFrame { }//GEN-LAST:event_deleteMenuItemActionPerformed + private void pasteMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pasteMenuItemActionPerformed + EditTradingStrategies s = new EditTradingStrategies(this,true); + s.setVisible(rootPaneCheckingEnabled); + + }//GEN-LAST:event_pasteMenuItemActionPerformed + /** * @param args the command line arguments * @throws java.lang.IllegalAccessException @@ -349,9 +360,9 @@ public class NewMDIApplication extends javax.swing.JFrame { ArrayList> traders; traders = null; - sesim.TraderLoader tl = new sesim.TraderLoader(); + sesim.AutoTraderLoader tl = new sesim.AutoTraderLoader(); try { - traders = tl.get(); + traders = tl.getTraders(); } catch (Exception e) { System.out.print("Execption\n"); } diff --git a/src/main/java/sesim/AutoTraderConfig.java b/src/main/java/sesim/AutoTraderConfig.java index e5e5b7e..5dd3212 100644 --- a/src/main/java/sesim/AutoTraderConfig.java +++ b/src/main/java/sesim/AutoTraderConfig.java @@ -25,6 +25,8 @@ */ package sesim; +import javax.swing.JPanel; + /** * * @author 7u83 @@ -32,5 +34,6 @@ package sesim; public abstract interface AutoTraderConfig { public abstract AutoTrader createTrader(Exchange se, double money, double shares); public abstract String getName(); + public abstract JPanel getConfigEditor(); } diff --git a/src/main/java/sesim/TraderLoader.java b/src/main/java/sesim/AutoTraderLoader.java similarity index 64% rename from src/main/java/sesim/TraderLoader.java rename to src/main/java/sesim/AutoTraderLoader.java index b960519..4ffd982 100644 --- a/src/main/java/sesim/TraderLoader.java +++ b/src/main/java/sesim/AutoTraderLoader.java @@ -46,21 +46,26 @@ import java.util.logging.Logger; * * @author 7u83 <7u83@mail.ru> */ -public class TraderLoader { +public class AutoTraderLoader { public void pf(String file) { System.out.printf("File\n", file); } - Class loadClass(String filename, String classname) throws MalformedURLException { + Class loadClass(String filename, String classname) { String clnam = classname.substring(1, classname.length() - 6).replace('/', '.'); - // System.out.printf("Load class name: %s\n", clnam); + // System.out.printf("Load class name: %s\n", clnam); // Class cls = ClassLoader.loadClass(className); File f = new File(filename); - URL url = f.toURL(); // file:/c:/myclasses/ + URL url = null; + try { + url = f.toURL(); // file:/c:/myclasses/ + } catch (MalformedURLException ex) { + Logger.getLogger(AutoTraderLoader.class.getName()).log(Level.SEVERE, null, ex); + } URL[] urls = new URL[]{url}; @@ -69,12 +74,11 @@ public class TraderLoader { try { Class cls = cl.loadClass(clnam); - + String kanone = cls.getCanonicalName(); // System.out.printf("%s --------------------------------------\n",kanone); - - -/* for (Class i : cls.getClasses()){ + + /* for (Class i : cls.getClasses()){ String iname = i.getCanonicalName(); @@ -85,45 +89,36 @@ public class TraderLoader { } } - */ - - for(Class i : cls.getInterfaces()) { - - - - - if(i.equals(AutoTraderConfig.class)) { - System.out.printf("Loading class %s\n", clnam); - - try { - String cname = i.getCanonicalName(); - System.out.printf("CAnonical name: %s\n", cname); - - - - - } catch (Exception ex) { - System.out.printf("Ex: %s\n", ex.getClass().getName()); - ex.printStackTrace(); - } - return (Class )cls; - //System.out.printf("Have found an Auto Trader %s\n", clnam); - //break; - } - } - - + */ + for (Class i : cls.getInterfaces()) { + + if (i.equals(AutoTraderConfig.class)) { + System.out.printf("Loading class %s\n", clnam); + + try { + String cname = i.getCanonicalName(); + System.out.printf("CAnonical name: %s\n", cname); + + } catch (Exception ex) { + System.out.printf("Ex: %s\n", ex.getClass().getName()); + ex.printStackTrace(); + } + return (Class) cls; + //System.out.printf("Have found an Auto Trader %s\n", clnam); + //break; + } + } + } catch (ClassNotFoundException ex) { System.out.printf("Cant load class %s\n", clnam); - - - //Logger.getLogger(TraderLoader.class.getName()).log(Level.SEVERE, null, ex); + + //Logger.getLogger(AutoTraderLoader.class.getName()).log(Level.SEVERE, null, ex); } return null; } - public ArrayList > get() throws IOException { + public ArrayList> getTraders() { int curlen = 0; @@ -135,29 +130,21 @@ public class TraderLoader { System.out.printf("Have it %s %d %s\n", fn,curlen,fn.substring(curlen)); }; */ - - ArrayList > traders; - traders = new ArrayList <> (); - + ArrayList> traders; + traders = new ArrayList<>(); + for (String classpathEntry : System.getProperty("java.class.path").split(System.getProperty("path.separator"))) { - - Consumer pf = new Consumer() { @Override public void accept(Object t) { String fn = ((Path) t).toString(); if (fn.toLowerCase().endsWith(".class")) { - try { - //System.out.printf("Halloe: %s %s\n", fn, fn.substring(classpathEntry.length())); - Class cls = loadClass(fn, fn.substring(classpathEntry.length())); - if (cls==null) - return; - traders.add(cls); - - } catch (MalformedURLException ex) { - Logger.getLogger(TraderLoader.class.getName()).log(Level.SEVERE, null, ex); + Class cls = loadClass(fn, fn.substring(classpathEntry.length())); + if (cls == null) { + return; } + traders.add(cls); } if (fn.toLowerCase().endsWith(".jar")) { JarInputStream is = null; @@ -173,12 +160,12 @@ public class TraderLoader { } } } catch (IOException ex) { - Logger.getLogger(TraderLoader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(AutoTraderLoader.class.getName()).log(Level.SEVERE, null, ex); } finally { try { is.close(); } catch (IOException ex) { - Logger.getLogger(TraderLoader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(AutoTraderLoader.class.getName()).log(Level.SEVERE, null, ex); } } } @@ -187,16 +174,40 @@ public class TraderLoader { }; - Files.walk(Paths.get(classpathEntry)) - .filter(Files::isRegularFile) - .forEach(pf); - + try { + Files.walk(Paths.get(classpathEntry)) + .filter(Files::isRegularFile) + .forEach(pf); + } catch (IOException ex) { + Logger.getLogger(AutoTraderLoader.class.getName()).log(Level.SEVERE, null, ex); + } + } return traders; } + public ArrayList getDefaultStrategyNames() { + ArrayList> trclasses; + trclasses = this.getTraders(); + ArrayList ret = new ArrayList<>(); + trclasses = getTraders(); + + for (int i = 0; i < trclasses.size(); i++) { + try { + AutoTraderConfig ac = trclasses.get(i).newInstance(); + ret.add(ac.getName()); + } catch (Exception ex) { + + } + + + } + + return ret; + } + public ArrayList getTraders(String dir) { File f = new File(dir); File[] ff = f.listFiles(); diff --git a/src/main/java/sesim/Exchange.java b/src/main/java/sesim/Exchange.java index 34eca7f..ee6ea61 100644 --- a/src/main/java/sesim/Exchange.java +++ b/src/main/java/sesim/Exchange.java @@ -3,6 +3,8 @@ package sesim; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; +import org.json.JSONArray; +import org.json.JSONObject; /** @@ -59,6 +61,20 @@ public class Exchange { //extends Thread { } } + + + public void createTraders(JSONArray traderdefs){ + for (int i=0; i accounts = new ConcurrentHashMap<>(); private final ConcurrentHashMap accounts = new ConcurrentHashMap<>(); diff --git a/src/main/java/traders/RandomTrader.java b/src/main/java/traders/RandomTrader.java index 27f3f98..1a4851b 100644 --- a/src/main/java/traders/RandomTrader.java +++ b/src/main/java/traders/RandomTrader.java @@ -46,7 +46,7 @@ public class RandomTrader extends AutoTrader { sesim.Exchange.Account a = se.getAccount(account_id); long rc = this.doTrade(); - return rc ; + return rc/80 ; } @@ -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 / 80; + return rc / 100; // return this.event(); } diff --git a/src/main/java/traders/RandomTraderConfig.java b/src/main/java/traders/RandomTraderConfig.java index a68dd8e..f768a5c 100644 --- a/src/main/java/traders/RandomTraderConfig.java +++ b/src/main/java/traders/RandomTraderConfig.java @@ -25,6 +25,7 @@ */ package traders; +import javax.swing.JPanel; import sesim.AutoTrader; import sesim.AutoTraderConfig; import sesim.Exchange; @@ -37,12 +38,12 @@ public class RandomTraderConfig implements AutoTraderConfig { public float[] sell_volume = {100, 100}; public float[] sell_limit = {-5f, 5f}; - public int[] sell_order_wait = {40000, 150000}; + public int[] sell_order_wait = {10000, 50000}; public int[] wait_after_sell = {10, 30}; public float[] buy_volume = {100, 100}; public float[] buy_limit = {-5f, 5f}; - public int[] buy_order_wait = {40000, 150000}; + public int[] buy_order_wait = {10000, 50000}; public int[] wait_after_buy = {10, 30}; @Override @@ -54,4 +55,9 @@ public class RandomTraderConfig implements AutoTraderConfig { public String getName() { return "RandomA"; } + + @Override + public JPanel getConfigEditor() { + return new RandomTraderConfigForm(); + } } diff --git a/src/main/java/traders/RandomTraderConfigForm.form b/src/main/java/traders/RandomTraderConfigForm.form new file mode 100644 index 0000000..14472ff --- /dev/null +++ b/src/main/java/traders/RandomTraderConfigForm.form @@ -0,0 +1,75 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/main/java/traders/RandomTraderConfigForm.java b/src/main/java/traders/RandomTraderConfigForm.java new file mode 100644 index 0000000..4c8670c --- /dev/null +++ b/src/main/java/traders/RandomTraderConfigForm.java @@ -0,0 +1,94 @@ +/* + * 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 traders; + +/** + * + * @author 7u83 <7u83@mail.ru> + */ +public class RandomTraderConfigForm extends javax.swing.JPanel { + + /** + * Creates new form RandomTraderConfigForm + */ + public RandomTraderConfigForm() { + 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() { + + jTextField1 = new javax.swing.JTextField(); + jRadioButton1 = new javax.swing.JRadioButton(); + jComboBox1 = new javax.swing.JComboBox<>(); + + jTextField1.setText("jTextField1"); + + jRadioButton1.setText("jRadioButton1"); + + jComboBox1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 197, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + .addGroup(layout.createSequentialGroup() + .addGap(83, 83, 83) + .addComponent(jRadioButton1) + .addGap(37, 37, 37) + .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(98, Short.MAX_VALUE)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(40, 40, 40) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jRadioButton1) + .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(202, Short.MAX_VALUE)) + ); + }// //GEN-END:initComponents + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JComboBox jComboBox1; + private javax.swing.JRadioButton jRadioButton1; + private javax.swing.JTextField jTextField1; + // End of variables declaration//GEN-END:variables +} diff --git a/src/main/java/traders/SuperTraderConfig.java b/src/main/java/traders/SuperTraderConfig.java index d5813b9..f19deff 100644 --- a/src/main/java/traders/SuperTraderConfig.java +++ b/src/main/java/traders/SuperTraderConfig.java @@ -25,6 +25,7 @@ */ package traders; +import javax.swing.JPanel; import sesim.AutoTrader; import sesim.AutoTraderConfig; import sesim.Exchange; @@ -49,5 +50,10 @@ public class SuperTraderConfig implements AutoTraderConfig{ public SuperTraderConfig(){ } + + @Override + public JPanel getConfigEditor() { + return null; + } } diff --git a/src/test/java/sesim/Test.java b/src/test/java/sesim/Test.java index 4583a5b..d72f35f 100644 --- a/src/test/java/sesim/Test.java +++ b/src/test/java/sesim/Test.java @@ -93,10 +93,10 @@ static public String getFullClassName(String classFileName) throws IOException { * @param args the command line arguments */ public static void main(String[] args) throws InterruptedException, MalformedURLException, InstantiationException, IllegalAccessException, IOException { - TraderLoader tl = new TraderLoader(); + AutoTraderLoader tl = new AutoTraderLoader(); - tl.get(); + tl.getTraders(); System.exit(0);