Search in sources :

Example 6 with SMAIndicator

use of org.ta4j.core.indicators.SMAIndicator in project ta4j by ta4j.

the class BollingerBandWidthIndicatorTest method bollingerBandWidthUsingSMAAndStandardDeviation.

@Test
public void bollingerBandWidthUsingSMAAndStandardDeviation() {
    SMAIndicator sma = new SMAIndicator(closePrice, 5);
    StandardDeviationIndicator standardDeviation = new StandardDeviationIndicator(closePrice, 5);
    BollingerBandsMiddleIndicator bbmSMA = new BollingerBandsMiddleIndicator(sma);
    BollingerBandsUpperIndicator bbuSMA = new BollingerBandsUpperIndicator(bbmSMA, standardDeviation);
    BollingerBandsLowerIndicator bblSMA = new BollingerBandsLowerIndicator(bbmSMA, standardDeviation);
    BollingerBandWidthIndicator bandwidth = new BollingerBandWidthIndicator(bbuSMA, bbmSMA, bblSMA);
    assertDecimalEquals(bandwidth.getValue(0), 0.0);
    assertDecimalEquals(bandwidth.getValue(1), 36.3636);
    assertDecimalEquals(bandwidth.getValue(2), 66.6423);
    assertDecimalEquals(bandwidth.getValue(3), 60.2443);
    assertDecimalEquals(bandwidth.getValue(4), 71.0767);
    assertDecimalEquals(bandwidth.getValue(5), 69.9394);
    assertDecimalEquals(bandwidth.getValue(6), 62.7043);
    assertDecimalEquals(bandwidth.getValue(7), 56.0178);
    assertDecimalEquals(bandwidth.getValue(8), 27.683);
    assertDecimalEquals(bandwidth.getValue(9), 12.6491);
    assertDecimalEquals(bandwidth.getValue(10), 12.6491);
    assertDecimalEquals(bandwidth.getValue(11), 24.2956);
    assertDecimalEquals(bandwidth.getValue(12), 68.3332);
    assertDecimalEquals(bandwidth.getValue(13), 85.1469);
    assertDecimalEquals(bandwidth.getValue(14), 112.8481);
    assertDecimalEquals(bandwidth.getValue(15), 108.1682);
    assertDecimalEquals(bandwidth.getValue(16), 66.9328);
    assertDecimalEquals(bandwidth.getValue(17), 56.5194);
    assertDecimalEquals(bandwidth.getValue(18), 28.1091);
    assertDecimalEquals(bandwidth.getValue(19), 32.5362);
}
Also used : SMAIndicator(org.ta4j.core.indicators.SMAIndicator) StandardDeviationIndicator(org.ta4j.core.indicators.statistics.StandardDeviationIndicator) Test(org.junit.Test)

Example 7 with SMAIndicator

use of org.ta4j.core.indicators.SMAIndicator in project ta4j by ta4j.

the class BollingerBandsLowerIndicatorTest method setUp.

@Before
public void setUp() {
    TimeSeries data = new MockTimeSeries(1, 2, 3, 4, 3, 4, 5, 4, 3, 3, 4, 3, 2);
    timeFrame = 3;
    closePrice = new ClosePriceIndicator(data);
    sma = new SMAIndicator(closePrice, timeFrame);
}
Also used : SMAIndicator(org.ta4j.core.indicators.SMAIndicator) TimeSeries(org.ta4j.core.TimeSeries) MockTimeSeries(org.ta4j.core.mocks.MockTimeSeries) MockTimeSeries(org.ta4j.core.mocks.MockTimeSeries) ClosePriceIndicator(org.ta4j.core.indicators.helpers.ClosePriceIndicator) Before(org.junit.Before)

Example 8 with SMAIndicator

use of org.ta4j.core.indicators.SMAIndicator in project ta4j by ta4j.

the class TradingBotOnMovingTimeSeries method buildStrategy.

/**
 * @param series a time series
 * @return a dummy strategy
 */
private static Strategy buildStrategy(TimeSeries series) {
    if (series == null) {
        throw new IllegalArgumentException("Series cannot be null");
    }
    ClosePriceIndicator closePrice = new ClosePriceIndicator(series);
    SMAIndicator sma = new SMAIndicator(closePrice, 12);
    // Sell when close price goes over SMA
    return new BaseStrategy(new OverIndicatorRule(sma, closePrice), new UnderIndicatorRule(sma, closePrice));
}
Also used : SMAIndicator(org.ta4j.core.indicators.SMAIndicator) OverIndicatorRule(org.ta4j.core.trading.rules.OverIndicatorRule) UnderIndicatorRule(org.ta4j.core.trading.rules.UnderIndicatorRule) ClosePriceIndicator(org.ta4j.core.indicators.helpers.ClosePriceIndicator)

Example 9 with SMAIndicator

use of org.ta4j.core.indicators.SMAIndicator in project ta4j by ta4j.

the class Quickstart method main.

public static void main(String[] args) {
    // Getting a time series (from any provider: CSV, web service, etc.)
    TimeSeries series = CsvTradesLoader.loadBitstampSeries();
    // Getting the close price of the bars
    Decimal firstClosePrice = series.getBar(0).getClosePrice();
    System.out.println("First close price: " + firstClosePrice.doubleValue());
    // Or within an indicator:
    ClosePriceIndicator closePrice = new ClosePriceIndicator(series);
    // Here is the same close price:
    // equal to firstClosePrice
    System.out.println(firstClosePrice.isEqual(closePrice.getValue(0)));
    // Getting the simple moving average (SMA) of the close price over the last 5 bars
    SMAIndicator shortSma = new SMAIndicator(closePrice, 5);
    // Here is the 5-bars-SMA value at the 42nd index
    System.out.println("5-bars-SMA value at the 42nd index: " + shortSma.getValue(42).doubleValue());
    // Getting a longer SMA (e.g. over the 30 last bars)
    SMAIndicator longSma = new SMAIndicator(closePrice, 30);
    // Ok, now let's building our trading rules!
    // Buying rules
    // We want to buy:
    // - if the 5-bars SMA crosses over 30-bars SMA
    // - or if the price goes below a defined price (e.g $800.00)
    Rule buyingRule = new CrossedUpIndicatorRule(shortSma, longSma).or(new CrossedDownIndicatorRule(closePrice, Decimal.valueOf("800")));
    // Selling rules
    // We want to sell:
    // - if the 5-bars SMA crosses under 30-bars SMA
    // - or if if the price looses more than 3%
    // - or if the price earns more than 2%
    Rule sellingRule = new CrossedDownIndicatorRule(shortSma, longSma).or(new StopLossRule(closePrice, Decimal.valueOf("3"))).or(new StopGainRule(closePrice, Decimal.valueOf("2")));
    // Running our juicy trading strategy...
    TimeSeriesManager seriesManager = new TimeSeriesManager(series);
    TradingRecord tradingRecord = seriesManager.run(new BaseStrategy(buyingRule, sellingRule));
    System.out.println("Number of trades for our strategy: " + tradingRecord.getTradeCount());
    // Analysis
    // Getting the cash flow of the resulting trades
    CashFlow cashFlow = new CashFlow(series, tradingRecord);
    // Getting the profitable trades ratio
    AnalysisCriterion profitTradesRatio = new AverageProfitableTradesCriterion();
    System.out.println("Profitable trades ratio: " + profitTradesRatio.calculate(series, tradingRecord));
    // Getting the reward-risk ratio
    AnalysisCriterion rewardRiskRatio = new RewardRiskRatioCriterion();
    System.out.println("Reward-risk ratio: " + rewardRiskRatio.calculate(series, tradingRecord));
    // Total profit of our strategy
    // vs total profit of a buy-and-hold strategy
    AnalysisCriterion vsBuyAndHold = new VersusBuyAndHoldCriterion(new TotalProfitCriterion());
    System.out.println("Our profit vs buy-and-hold profit: " + vsBuyAndHold.calculate(series, tradingRecord));
// Your turn!
}
Also used : SMAIndicator(org.ta4j.core.indicators.SMAIndicator) CashFlow(org.ta4j.core.analysis.CashFlow) CrossedUpIndicatorRule(org.ta4j.core.trading.rules.CrossedUpIndicatorRule) TotalProfitCriterion(org.ta4j.core.analysis.criteria.TotalProfitCriterion) StopLossRule(org.ta4j.core.trading.rules.StopLossRule) StopGainRule(org.ta4j.core.trading.rules.StopGainRule) ClosePriceIndicator(org.ta4j.core.indicators.helpers.ClosePriceIndicator) RewardRiskRatioCriterion(org.ta4j.core.analysis.criteria.RewardRiskRatioCriterion) VersusBuyAndHoldCriterion(org.ta4j.core.analysis.criteria.VersusBuyAndHoldCriterion) CrossedDownIndicatorRule(org.ta4j.core.trading.rules.CrossedDownIndicatorRule) StopLossRule(org.ta4j.core.trading.rules.StopLossRule) StopGainRule(org.ta4j.core.trading.rules.StopGainRule) CrossedDownIndicatorRule(org.ta4j.core.trading.rules.CrossedDownIndicatorRule) CrossedUpIndicatorRule(org.ta4j.core.trading.rules.CrossedUpIndicatorRule) AverageProfitableTradesCriterion(org.ta4j.core.analysis.criteria.AverageProfitableTradesCriterion)

Aggregations

SMAIndicator (org.ta4j.core.indicators.SMAIndicator)9 ClosePriceIndicator (org.ta4j.core.indicators.helpers.ClosePriceIndicator)7 CrossedDownIndicatorRule (org.ta4j.core.trading.rules.CrossedDownIndicatorRule)3 CrossedUpIndicatorRule (org.ta4j.core.trading.rules.CrossedUpIndicatorRule)3 OverIndicatorRule (org.ta4j.core.trading.rules.OverIndicatorRule)3 StopLossRule (org.ta4j.core.trading.rules.StopLossRule)3 UnderIndicatorRule (org.ta4j.core.trading.rules.UnderIndicatorRule)3 Before (org.junit.Before)2 Test (org.junit.Test)2 BaseStrategy (org.ta4j.core.BaseStrategy)2 Rule (org.ta4j.core.Rule)2 TimeSeries (org.ta4j.core.TimeSeries)2 StandardDeviationIndicator (org.ta4j.core.indicators.statistics.StandardDeviationIndicator)2 MockTimeSeries (org.ta4j.core.mocks.MockTimeSeries)2 StopGainRule (org.ta4j.core.trading.rules.StopGainRule)2 CashFlow (org.ta4j.core.analysis.CashFlow)1 AverageProfitableTradesCriterion (org.ta4j.core.analysis.criteria.AverageProfitableTradesCriterion)1 RewardRiskRatioCriterion (org.ta4j.core.analysis.criteria.RewardRiskRatioCriterion)1 TotalProfitCriterion (org.ta4j.core.analysis.criteria.TotalProfitCriterion)1 VersusBuyAndHoldCriterion (org.ta4j.core.analysis.criteria.VersusBuyAndHoldCriterion)1