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;
}