Java源码示例:org.ta4j.core.indicators.helpers.ClosePriceIndicator
示例1
private void initFeatures(FeatureContext context) {
LeveledBarSeries series = context.series;
ClosePriceIndicator closePrices = new ClosePriceIndicator(series);
context.regularIndicators.add(new RegularIndicator(series, closePrices, 4));
context.regularIndicators.add(new RegularIndicator(series, closePrices, 6));
context.regularIndicators.add(new RegularIndicator(series, closePrices, 9));
context.regularIndicators.add(new RegularIndicator(series, closePrices, 12));
context.regularIndicators.add(new RegularIndicator(series, closePrices, 20));
context.regularIndicators.add(new RegularIndicator(series, closePrices, 24));
context.regularIndicators.add(new RegularIndicator(series, closePrices, 33));
context.regularIndicators.add(new RegularIndicator(series, closePrices, 60));
context.regularIndicators.add(new RegularIndicator(series, closePrices, 133));
context.macd = new MACDIndicator(closePrices);
context.adx_14_6 = new ADXIndicator(series, 14, 6);
context.adx_14_10 = new ADXIndicator(series, 14, 10);
context.adx_14_14 = new ADXIndicator(series, 14, 14);
}
示例2
@Override
public void init(TradletContext context) throws Exception {
beansContainer = context.getBeansContainer();
group = context.getGroup();
props.putAll(context.getConfigAsProps());
Exchangeable instrument = group.getInstruments().get(0);
playbookKeeper = group.getPlaybookKeeper();
taService = beansContainer.getBean(TechnicalAnalysisService.class);
TechnicalAnalysisAccess item = taService.forInstrument(instrument);
min1Series = item.getSeries(PriceLevel.MIN1);
min3Series = item.getSeries(PriceLevel.MIN3);
min5Series = item.getSeries(PriceLevel.MIN5);
ClosePriceIndicator min1ClosePrice = new ClosePriceIndicator(min1Series);
ClosePriceIndicator min3ClosePrice = new ClosePriceIndicator(min3Series);
ClosePriceIndicator min5ClosePrice = new ClosePriceIndicator(min5Series);
min1MACD = new MACDIndicator(min1ClosePrice);
min3MACD = new MACDIndicator(min3ClosePrice);
min5MACD = new MACDIndicator(min5ClosePrice);
min1DIFF = new org.ta4j.core.indicators.MACDIndicator(min1ClosePrice, 12, 26);
min3DIFF = new org.ta4j.core.indicators.MACDIndicator(min3ClosePrice, 12, 26);
min5DIFF = new org.ta4j.core.indicators.MACDIndicator(min5ClosePrice, 12, 26);
}
示例3
public Strategy getStrategy() {
ClosePriceIndicator closePrice = new ClosePriceIndicator(timeSeries);
EMAIndicator sma1 = new EMAIndicator(closePrice, sma1Value);
EMAIndicator sma2 = new EMAIndicator(closePrice, sma2Value);
EMAIndicator sma3 = new EMAIndicator(closePrice, sma3Value);
RSIIndicator rsi = new RSIIndicator(closePrice, 14);
Rule buyingRule = new OverIndicatorRule(sma1, sma2)
.and(new OverIndicatorRule(sma2, sma3))
.and(new OverIndicatorRule(rsi, Decimal.valueOf(50)));
Rule sellingRule = new CrossedDownIndicatorRule(sma1, sma3)
.or(new CrossedDownIndicatorRule(sma2, sma3))
.or(new StopLossRule(closePrice, Decimal.valueOf("3")));
final BaseStrategy strategy = new BaseStrategy(buyingRule, sellingRule);
return strategy;
}
示例4
private void createIndicators(LeveledBarSeries series) {
min1Series = series;
ClosePriceIndicator closePrice = new ClosePriceIndicator(series);
diffIndicator = new org.ta4j.core.indicators.MACDIndicator(closePrice, 12, 26);
deaIndicator = new EMAIndicator(diffIndicator, 9);
min1MACDIndicator = new trader.service.ta.indicators.MACDIndicator(closePrice);
}
示例5
public TradeStrategyFactory(final TimeSeries timeSeries) {
this.timeSeries = timeSeries;
this.closePriceIndicator = new ClosePriceIndicator(timeSeries);
this.openPriceIndicator = new OpenPriceIndicator(timeSeries);
this.highPriceIndicator = new MaxPriceIndicator(timeSeries);
this.lowPriceIndicator = new MinPriceIndicator(timeSeries);
}
示例6
public void showChart() {
/**
* Building chart datasets
*/
TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(
buildChartTimeSeries(timeSeries, new ClosePriceIndicator(timeSeries), symbol));
dataset.addSeries(
buildChartTimeSeries(timeSeries, new EMAIndicator(new ClosePriceIndicator(timeSeries), 5), "EMA5"));
dataset.addSeries(
buildChartTimeSeries(timeSeries, new EMAIndicator(new ClosePriceIndicator(timeSeries), 10), "EMA10"));
dataset.addSeries(
buildChartTimeSeries(timeSeries, new EMAIndicator(new ClosePriceIndicator(timeSeries), 40), "EMA40"));
/**
* Creating the chart
*/
JFreeChart chart = ChartFactory.createTimeSeriesChart("BTC", // title
"Date", // x-axis label
"Price", // y-axis label
dataset, // data
true, // create legend?
true, // generate tooltips?
false // generate URLs?
);
XYPlot plot = (XYPlot) chart.getPlot();
DateAxis axis = (DateAxis) plot.getDomainAxis();
axis.setDateFormatOverride(new SimpleDateFormat("MM-dd-yyyy HH:mm"));
addBuySellSignals(timeSeries, strategy, plot);
displayChart(chart);
}
示例7
/**
* This method can be overwritten to get custom {@link BaseIndicatorBox} with custom {@link Indicator indicators},
* {@link Strategy strategies} and {@link TradingRecord}. It is also possible to add a custom {@link IndicatorParameterManager}
* to load and store the indicator parameters in custom way
* @return a {@link BaseIndicatorBox} for the Chart that is used in the {@link #start(Stage) start(Stage) function}
*/
@Override
public BaseIndicatorBox createIndicatorBox() {
BarSeries series = Loader.getDailyBarSeries("fb_daily.csv");
// define indicators
ClosePriceIndicator closePrice = new ClosePriceIndicator(series);
MACDIndicator macd = new MACDIndicator(closePrice, 12, 26);
EMAIndicator emaMacd = new EMAIndicator(macd, 9);
// build a strategy
Rule entryRule = new CrossedUpIndicatorRule(macd, emaMacd);
Rule exitRule = new CrossedDownIndicatorRule(macd, emaMacd);
Strategy myStragety = new BaseStrategy(entryRule, exitRule);
// initialize and add your indicators to the ChartIndicatorBox
TaBarSeries taTimeSeries = new TaBarSeries(series, Currency.getInstance("USD"), GeneralTimePeriod.DAY);
BaseIndicatorBox chartIndicatorBox = new BaseIndicatorBox(taTimeSeries);
// two indicators in one subplot:
XYLineAndShapeRenderer macRenderer = new XYLineAndShapeRenderer(); // specify how the lines should be rendered
macRenderer.setSeriesShape(0, ShapeType.NONE.shape);
macRenderer.setSeriesPaint(0,Color.RED);
macRenderer.setSeriesShape(1,ShapeType.NONE.shape);
macRenderer.setSeriesPaint(1,Color.GREEN);
List<Indicator> indicatorList = Arrays.asList(macd,emaMacd);
List<String> nameList = Arrays.asList("macd","emaMacd");
chartIndicatorBox.addIndicator("Straregy_1",indicatorList,nameList,"My macd/emaMacd Strategy",macRenderer,true,IndicatorCategory.CUSTOM);
// add strategies
chartIndicatorBox.addStrategy("My ema/emaMacd Strategy", myStragety);
return chartIndicatorBox;
}
示例8
public RSVIndicator(BarSeries timeSeries, int barCount) {
this(new ClosePriceIndicator(timeSeries), barCount, new HighPriceIndicator(timeSeries), new LowPriceIndicator(
timeSeries));
}
示例9
public WilliamsRIndicator(BarSeries timeSeries, int barCount) {
this(new ClosePriceIndicator(timeSeries), barCount, new HighPriceIndicator(timeSeries), new LowPriceIndicator(
timeSeries));
}
示例10
@Override
public int execute(BeansContainer beansContainer, PrintWriter writer, List<KVPair> options) throws Exception
{
parseOptions(options);
data = TraderHomeUtil.getExchangeableData();
loader = new BarSeriesLoader(beansContainer, data);
loader.setInstrument(instrument)
.setStartTradingDay(beginDate)
.setEndTradingDay(endDate)
.setLevel(PriceLevel.valueOf(level));
LeveledBarSeries series = loader.setStartTradingDay(beginDate).setEndTradingDay(endDate).load();
ClosePriceIndicator closePrices = new ClosePriceIndicator(series);
MACDIndicator macd = new MACDIndicator(closePrices);
ATRIndicator atr = new ATRIndicator(series, 30);
List<Num> atrVals = new ArrayList<>(series.getBarCount());
List<Num> diffVals = new ArrayList<>(series.getBarCount());
List<Num> deaVals = new ArrayList<>(series.getBarCount());
for(int i=30; i<series.getBarCount();i++) {
atrVals.add(atr.getValue(i).abs());
diffVals.add(macd.getDIFF().getValue(i).abs());
deaVals.add(macd.getDEA().getValue(i).abs());
}
Num zero = series.numOf(0);
Num atrSum = zero, diffSum = zero, deaSum = zero;
for(int i=0;i<atrVals.size();i++) {
atrSum = atrSum.plus(atrVals.get(i));
diffSum = diffSum.plus(diffVals.get(i));
deaSum = deaSum.plus(deaVals.get(i));
}
Num atrAvg = atrSum.dividedBy(series.numOf(atrVals.size()));
Num diffAvg = diffSum.dividedBy(series.numOf(atrVals.size()));
Num deaAvg = deaSum.dividedBy(series.numOf(atrVals.size()));
Collections.sort(atrVals);
Collections.sort(diffVals);
Collections.sort(deaVals);
int p95 = (int)(atrVals.size()*0.95);
Num atrSum0 = zero, diffSum0 = zero, deaSum0 = zero;
for(int i=0;i<p95;i++) {
atrSum0 = atrSum0.plus(atrVals.get(i));
diffSum0 = diffSum0.plus(diffVals.get(i));
deaSum0 = deaSum0.plus(deaVals.get(i));
}
Num atrAvg0 = atrSum0.dividedBy(series.numOf(p95));
Num diffAvg0 = diffSum0.dividedBy(series.numOf(p95));
Num deaAvg0 = deaSum0.dividedBy(series.numOf(p95));
writer.println(instrument+" "+beginDate+"-"+endDate+" load bars: "+series.getBarCount());
writer.println("Average:");
writer.println("\tATR: "+atrAvg+" 95% "+atrAvg0);
writer.println("\tMACD.DIFF: "+diffAvg+" 95% "+diffAvg0);
writer.println("\tMACD.DEA: "+deaAvg+" 95% "+deaAvg0);
return 0;
}
示例11
public Strategy getStrategy() {
final ClosePriceIndicator closePrice = new ClosePriceIndicator(timeSeries);
final SMAIndicator sma = new SMAIndicator(closePrice, bbPeriod);
final BollingerBandsMiddleIndicator bbmiddle = new BollingerBandsMiddleIndicator(sma);
final StandardDeviationIndicator sd = new StandardDeviationIndicator(closePrice, bbPeriod);
final BollingerBandsUpperIndicator bbup = new BollingerBandsUpperIndicator(bbmiddle, sd, Decimal.valueOf(deviationUp));
final BollingerBandsUpperIndicator bbdown = new BollingerBandsUpperIndicator(bbmiddle, sd, Decimal.valueOf(deviationDown));
final Rule buyingRule = new UnderIndicatorRule(closePrice, bbdown);
final Rule sellingRule = new OverIndicatorRule(closePrice, bbup).or(new StopLossRule(closePrice, Decimal.valueOf(2)));
final BaseStrategy strategy = new BaseStrategy(buyingRule, sellingRule);
return strategy;
}