Imroved Indicator interface, draws two indicators now

This commit is contained in:
7u83 2017-11-25 09:28:01 +01:00
parent ff0e8bc4b9
commit f6eab6b6a2
7 changed files with 95 additions and 33 deletions

View File

@ -1,4 +1,4 @@
#Sat, 25 Nov 2017 01:27:15 +0100
#Sat, 25 Nov 2017 09:25:34 +0100
annotation.processing.enabled=true
annotation.processing.enabled.in.editor=false
annotation.processing.processors.list=

View File

@ -41,8 +41,7 @@ import sesim.OHLCData;
import sesim.OHLCDataItem;
import sesim.Quote;
import indicators.SMAIndicator;
import org.json.JSONObject;
/**
*
@ -52,16 +51,21 @@ public class MasterChart extends javax.swing.JPanel implements QuoteReceiver {
private ChartDef chartDef;
SMAIndicator sma;
SMAIndicator sma1, sma2;
class MyOHLCData extends OHLCData {
SMAIndicator sma;
MyOHLCData(SMAIndicator sma) {
this.sma = sma;
}
@Override
public int size() {
return sma.getData().size();
}
@Override
public OHLCDataItem get(int n) {
return sma.getData().get(n);
@ -126,13 +130,30 @@ public class MasterChart extends javax.swing.JPanel implements QuoteReceiver {
chart.setXSCrollBar(xScrollBar);
chart.addChartPainter(new ChartCrossPainter());
sma = new indicators.SMAIndicator(mydata);
MyOHLCData mysma = new MyOHLCData();
sma1 = new indicators.SMAIndicator();
sma1.setParent(mydata);
JSONObject co;
co = new JSONObject("{\"len\": 60}");
sma1.putConfig(co);
MyOHLCData mysma1;
mysma1 = new MyOHLCData(sma1);
p = new LineChartPainter();
p.setOHLCData(mysma);
//p.setDataProvider(new SMA(get()));
p.setOHLCData(mysma1);
chart.addChartPainter(p);
sma2 = new indicators.SMAIndicator();
sma2.setParent(mydata);
co = new JSONObject("{\"len\": 20}");
sma2.putConfig(co);
MyOHLCData mysma2;
mysma2 = new MyOHLCData(sma2);
p = new LineChartPainter();
p.setOHLCData(mysma2);
chart.addChartPainter(p);
ChartPainter yp = new YLegendPainter(chart);
// yp.setDataProvider(this);
yp.setOHLCData(mydata);
@ -276,9 +297,14 @@ public class MasterChart extends javax.swing.JPanel implements QuoteReceiver {
@Override
public void UpdateQuote(Quote q) {
if (sma != null) {
sma.update();
if (sma1 != null) {
sma1.update();
}
if (sma2 != null) {
sma2.update();
}
int s = mydata.size();
this.xScrollBar.setMaximum(s);
repaint();

View File

@ -138,6 +138,7 @@ public class Globals {
}
static AutoTraderLoader tloader;
static IndicatorLoader iloader;
static void initGlobals() {
ArrayList default_pathlist = new ArrayList<>();
@ -149,11 +150,14 @@ public class Globals {
default_pathlist.add(default_path);
tloader = new AutoTraderLoader(default_pathlist);
iloader = new IndicatorLoader(default_pathlist);
SeSimClassLoader<Indicator> il = new SeSimClassLoader<>(Indicator.class);
il.setDefaultPathList(default_pathlist);
ArrayList<Class<Indicator>>ires = il.getInstalledClasses();
iloader.getNames();
// SeSimClassLoader<Indicator> il = new SeSimClassLoader<>(Indicator.class);
// il.setDefaultPathList(default_pathlist);
// ArrayList<Class<Indicator>> ires = il.getInstalledClasses();
}
static public final Logger LOGGER = Logger.getLogger("com.cauwersin.sesim");

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2017, tube
* Copyright (c) 2017, 7u83
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -26,13 +26,14 @@
package indicators;
import org.json.JSONObject;
import sesim.ConfigurableInterface;
import sesim.Indicator;
/**
*
* @author tube
*/
public abstract class BaseIndicator implements Indicator{
public abstract class BaseIndicator implements Indicator {
@Override
public String getName() {

View File

@ -25,6 +25,7 @@
*/
package indicators;
import org.json.JSONObject;
import sesim.OHLCData;
import sesim.OHLCDataItem;
@ -38,16 +39,31 @@ public class SMAIndicator extends BaseIndicator {
OHLCData indicator;
public SMAIndicator(OHLCData parent) {
this.parent = parent;
public SMAIndicator() {
indicator = new OHLCData();
}
public void setParent(OHLCData parent){
public void setParent(OHLCData parent) {
this.parent = parent;
}
int len = 20;
final String LEN = "len";
int len = 60;
@Override
public void putConfig(JSONObject cfg) {
len = cfg.getInt(LEN);
}
@Override
public JSONObject getConfig() {
JSONObject r;
r = new JSONObject();
r.put(LEN, len);
return r;
}
private float getAt(int pos) {
if (parent.size() == 0) {
@ -67,10 +83,9 @@ public class SMAIndicator extends BaseIndicator {
}
public void update() {
if (parent.size() == 0) {
return;
}

View File

@ -31,7 +31,7 @@ import org.json.JSONObject;
*
* @author tube
*/
public interface ConfigurableInterface {
public abstract interface ConfigurableInterface {
/**
* Get current configuration as JSON object.

View File

@ -32,15 +32,31 @@ import java.util.ArrayList;
* @author 7u83 <7u83@mail.ru>
* @param <T>
*/
public class IndicatorLoader<T> extends SeSimClassLoader {
public class IndicatorLoader extends SeSimClassLoader<Indicator> {
/**
*
* @param class_type
*
* @param class_type
*/
public IndicatorLoader(Class class_type) {
super(class_type);
public IndicatorLoader(ArrayList<String> path_list) {
super(Indicator.class, path_list);
}
public ArrayList<String> getNames() {
ArrayList<Class<Indicator>> indicators;
indicators = this.getInstalledClasses();
for (Class<Indicator> ic : indicators) {
Indicator i = (Indicator) this.newInstance(ic);
String name = i.getName();
System.out.printf("Name of Indicator: %s", name);
}
return new ArrayList<String>();
}
}