当前位置: 首页>>代码示例>>Java>>正文


Java Decimal.plus方法代码示例

本文整理汇总了Java中eu.verdelhan.ta4j.Decimal.plus方法的典型用法代码示例。如果您正苦于以下问题:Java Decimal.plus方法的具体用法?Java Decimal.plus怎么用?Java Decimal.plus使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在eu.verdelhan.ta4j.Decimal的用法示例。


在下文中一共展示了Decimal.plus方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: calculate

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
@Override
protected Decimal calculate(int index) {
    Decimal sum1 = Decimal.ZERO;
    Decimal sum2 = Decimal.ZERO;
    for (int i = Math.max(0, index - timeFrame + 1); i <= index; i++) {
        Decimal close = indicator.getValue(i);
        Decimal prevClose = previousPriceIndicator.getValue(i);

        Decimal d = close.minus(prevClose);
        if (d.compareTo(Decimal.ZERO) >= 0) {
            sum1 = sum1.plus(d);
        } else {
            sum2 = sum2.plus(d.multipliedBy(NEGATIVE_ONE));
        }
    }
    return sum1.minus(sum2).dividedBy(sum1.plus(sum2)).multipliedBy
            (Decimal.HUNDRED);
}
 
开发者ID:KosherBacon,项目名称:JavaBitcoinTrader,代码行数:19,代码来源:CMOIndicator.java

示例2: calculate

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
@Override
protected Decimal calculate(int index) {
    if (index == 0) {
        return indicator.getValue(0);
    }
    Decimal value = Decimal.ZERO;
    if(index - timeFrame < 0) {
        
        for(int i = index + 1; i > 0; i--) {
            value = value.plus(Decimal.valueOf(i).multipliedBy(indicator.getValue(i-1)));
        }
        return value.dividedBy(Decimal.valueOf(((index + 1) * (index + 2)) / 2));
    }
    
    int actualIndex = index;
    for(int i = timeFrame; i > 0; i--) {
        value = value.plus(Decimal.valueOf(i).multipliedBy(indicator.getValue(actualIndex)));
        actualIndex--;
    }
    return value.dividedBy(Decimal.valueOf((timeFrame * (timeFrame + 1)) / 2));
}
 
开发者ID:mdeverdelhan,项目名称:ta4j-origins,代码行数:22,代码来源:WMAIndicator.java

示例3: calculate

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
@Override
protected Decimal calculate(int index) {
    if (index == 0) {
        return Decimal.THOUSAND;
    }
    
    Tick currentTick = series.getTick(index);
    Tick previousTick = series.getTick(index - 1);
    Decimal previousValue = getValue(index - 1);
    
    if (currentTick.getVolume().isLessThan(previousTick.getVolume())) {
        Decimal currentPrice = currentTick.getClosePrice();
        Decimal previousPrice = previousTick.getClosePrice();
        Decimal priceChangeRatio = currentPrice.minus(previousPrice).dividedBy(previousPrice);
        return previousValue.plus(priceChangeRatio.multipliedBy(previousValue));
    }
    return previousValue;
}
 
开发者ID:mdeverdelhan,项目名称:ta4j-origins,代码行数:19,代码来源:NVIIndicator.java

示例4: calculate

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
@Override
protected Decimal calculate(int index) {
    if (index == 0) {
        return Decimal.THOUSAND;
    }
    
    Tick currentTick = series.getTick(index);
    Tick previousTick = series.getTick(index - 1);
    Decimal previousValue = getValue(index - 1);
    
    if (currentTick.getVolume().isGreaterThan(previousTick.getVolume())) {
        Decimal currentPrice = currentTick.getClosePrice();
        Decimal previousPrice = previousTick.getClosePrice();
        Decimal priceChangeRatio = currentPrice.minus(previousPrice).dividedBy(previousPrice);
        return previousValue.plus(priceChangeRatio.multipliedBy(previousValue));
    }
    return previousValue;
}
 
开发者ID:mdeverdelhan,项目名称:ta4j-origins,代码行数:19,代码来源:PVIIndicator.java

示例5: getTotalReturn

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
/**
 * Gets the TotalReturn from the calculated results of the method 'calculate'.
 * For a timeFrame = number of trading days within a year (e. g. 251 days in the US) 
 * and "end of day"-ticks you will get the 'Annualized Total Return'.
 * Only complete timeFrames are taken into the calculation.
 * @return the total return from the calculated results of the method 'calculate'
 */
public double getTotalReturn() {

    Decimal totalProduct = Decimal.ONE;
    int completeTimeframes = (getTimeSeries().getTickCount() / timeFrame);

    for (int i = 1; i <= completeTimeframes; i++) {
        int index = i * timeFrame;
        Decimal currentReturn = getValue(index);

        // Skip NaN at the end of a series
        if (currentReturn != Decimal.NaN) {
            currentReturn = currentReturn.plus(Decimal.ONE);
            totalProduct = totalProduct.multipliedBy(currentReturn);
        }
    }

    return (Math.pow(totalProduct.toDouble(), (1.0 / completeTimeframes)));
}
 
开发者ID:mdeverdelhan,项目名称:ta4j-origins,代码行数:26,代码来源:PeriodicalGrowthRateIndicator.java

示例6: calculateRegressionLine

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
/**
 * Calculates the regression line.
 * @param startIndex the start index (inclusive) in the time series
 * @param endIndex the end index (inclusive) in the time series
 */
private void calculateRegressionLine(int startIndex, int endIndex) {
    // First pass: compute xBar and yBar
    Decimal sumX = Decimal.ZERO;
    Decimal sumY = Decimal.ZERO;
    for (int i = startIndex; i <= endIndex; i++) {
        sumX = sumX.plus(Decimal.valueOf(i));
        sumY = sumY.plus(indicator.getValue(i));
    }
    Decimal nbObservations = Decimal.valueOf(endIndex - startIndex + 1);
    Decimal xBar = sumX.dividedBy(nbObservations);
    Decimal yBar = sumY.dividedBy(nbObservations);
    
    // Second pass: compute slope and intercept
    Decimal xxBar = Decimal.ZERO;
    Decimal xyBar = Decimal.ZERO;
    for (int i = startIndex; i <= endIndex; i++) {
        Decimal dX = Decimal.valueOf(i).minus(xBar);
        Decimal dY = indicator.getValue(i).minus(yBar);
        xxBar = xxBar.plus(dX.multipliedBy(dX));
        xyBar = xyBar.plus(dX.multipliedBy(dY));
    }
    
    slope = xyBar.dividedBy(xxBar);
    intercept = yBar.minus(slope.multipliedBy(xBar));
}
 
开发者ID:mdeverdelhan,项目名称:ta4j-origins,代码行数:31,代码来源:SimpleLinearRegressionIndicator.java

示例7: printBackTestResults

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
private static void printBackTestResults(String mkt, TimeSeries series,
                                         Strategy strategy) {
    BacktestResult result = new BacktestResult(series, strategy).test();
    StringBuilder builder = new StringBuilder();
    builder.append(mkt + " Backtest: " + series
            .getSeriesPeriodDescription());
    builder.append("\n\tSeries Metrics:");
    int numTicks = series.getTickCount();
    builder.append("\n\t\tNumber of Ticks: " + numTicks);
    builder.append("\n\t\tFirst Tick Open Price: " + series.getTick(0)
            .getOpenPrice());
    builder.append("\n\t\tLast Tick Close Price: " + series.getTick
            (numTicks - 1).getClosePrice());
    Decimal volume = Decimal.ZERO;
    for (int i = 0; i < numTicks; i++) {
        volume = volume.plus(series.getTick(i).getAmount());
    }
    builder.append("\n\t\tVolume (All Ticks): " + volume);
    builder.append("\n\n\tTrade Performance:");
    builder.append("\n\t\tNumber of Trades: " + result.getNumberOfTrades());
    builder.append("\n\t\tTotal Profit: " + result.getProfit());
    builder.append("\n\t\tBuy and Hold Profit: " + result
            .getBuyAndHoldProfit());
    double profitableTradesRatio = result.getProfitableTradesRatio();
    builder.append("\n\t\tProfitable Trades Ratio: " +
            profitableTradesRatio + " (" + profitableTradesRatio * 100D +
            "%)");
    double maximumDrawdown = result.getMaxDrawdown();
    builder.append("\n\t\tMaximum Drawdown: " + maximumDrawdown + " (" +
            maximumDrawdown * 100D + "%)");
    builder.append("\n\t\tReward Risk Ratio: " + result
            .getRewardRiskRatio());
    builder.append("\n\t\tLinear Transaction Cost: " + result
            .getLinearTransactionCost());

    System.out.println(builder.toString());
}
 
开发者ID:KosherBacon,项目名称:JavaBitcoinTrader,代码行数:38,代码来源:Backtester.java

示例8: generateRandomTick

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
/**
 * Generates a random tick.
 * @return a random tick
 */
private static Tick generateRandomTick() {
    final Decimal maxRange = Decimal.valueOf("0.03"); // 3.0%
    Decimal openPrice = LAST_TICK_CLOSE_PRICE;
    Decimal minPrice = openPrice.minus(openPrice.multipliedBy(maxRange.multipliedBy(Decimal.valueOf(Math.random()))));
    Decimal maxPrice = openPrice.plus(openPrice.multipliedBy(maxRange.multipliedBy(Decimal.valueOf(Math.random()))));
    Decimal closePrice = randDecimal(minPrice, maxPrice);
    LAST_TICK_CLOSE_PRICE = closePrice;
    return new BaseTick(ZonedDateTime.now(), openPrice, maxPrice, minPrice, closePrice, Decimal.ONE);
}
 
开发者ID:mdeverdelhan,项目名称:ta4j-origins,代码行数:14,代码来源:TradingBotOnMovingTimeSeries.java

示例9: calculate

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
@Override
protected Decimal calculate(int index) {
    Decimal sumOfGains = Decimal.ZERO;
    for (int i = Math.max(1, index - timeFrame + 1); i <= index; i++) {
        if (indicator.getValue(i).isGreaterThan(indicator.getValue(i - 1))) {
            sumOfGains = sumOfGains.plus(indicator.getValue(i).minus(indicator.getValue(i - 1)));
        }
    }
    return sumOfGains;
}
 
开发者ID:mdeverdelhan,项目名称:ta4j-origins,代码行数:11,代码来源:CumulatedGainsIndicator.java

示例10: calculate

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
@Override
protected Decimal calculate(int index) {
    int startIndex = Math.max(0, index - timeFrame + 1);
    Decimal sumOfVolume = Decimal.ZERO;
    for (int i = startIndex; i <= index; i++) {
        sumOfVolume = sumOfVolume.plus(series.getTick(i).getVolume());
    }
    return sumOfVolume;
}
 
开发者ID:mdeverdelhan,项目名称:ta4j-origins,代码行数:10,代码来源:VolumeIndicator.java

示例11: calculate

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
@Override
protected Decimal calculate(int index) {
    Decimal sum = Decimal.ZERO;
    for (int i = 0; i < operands.length; i++) {
        sum = sum.plus(operands[i].getValue(index));
    }
    return sum;
}
 
开发者ID:mdeverdelhan,项目名称:ta4j-origins,代码行数:9,代码来源:SumIndicator.java

示例12: calculate

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
@Override
protected Decimal calculate(int index) {
    Decimal sumOfLosses = Decimal.ZERO;
    for (int i = Math.max(1, index - timeFrame + 1); i <= index; i++) {
        if (indicator.getValue(i).isLessThan(indicator.getValue(i - 1))) {
            sumOfLosses = sumOfLosses.plus(indicator.getValue(i - 1).minus(indicator.getValue(i)));
        }
    }
    return sumOfLosses;
}
 
开发者ID:mdeverdelhan,项目名称:ta4j-origins,代码行数:11,代码来源:CumulatedLossesIndicator.java

示例13: calculate

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
@Override
protected Decimal calculate(int index) {
    Decimal absoluteDeviations = Decimal.ZERO;

    final Decimal average = sma.getValue(index);
    final int startIndex = Math.max(0, index - timeFrame + 1);
    final int nbValues = index - startIndex + 1;

    for (int i = startIndex; i <= index; i++) {
        // For each period...
        absoluteDeviations = absoluteDeviations.plus(indicator.getValue(i).minus(average).abs());
    }
    return absoluteDeviations.dividedBy(Decimal.valueOf(nbValues));
}
 
开发者ID:mdeverdelhan,项目名称:ta4j-origins,代码行数:15,代码来源:MeanDeviationIndicator.java

示例14: calculate

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
@Override
protected Decimal calculate(int index) {
    Decimal currentPrice = price.getValue(index);
    if (index < timeFrameEffectiveRatio) {
        return currentPrice;
    }
    /*
     * Efficiency Ratio (ER)
     * ER = Change/Volatility
     * Change = ABS(Close - Close (10 periods ago))
     * Volatility = Sum10(ABS(Close - Prior Close))
     * Volatility is the sum of the absolute value of the last ten price changes (Close - Prior Close).
     */
    int startChangeIndex = Math.max(0, index - timeFrameEffectiveRatio);
    Decimal change = currentPrice.minus(price.getValue(startChangeIndex)).abs();
    Decimal volatility = Decimal.ZERO;
    for (int i = startChangeIndex; i < index; i++) {
        volatility = volatility.plus(price.getValue(i + 1).minus(price.getValue(i)).abs());
    }
    Decimal er = change.dividedBy(volatility);
    /*
     * Smoothing Constant (SC)
     * SC = [ER x (fastest SC - slowest SC) + slowest SC]2
     * SC = [ER x (2/(2+1) - 2/(30+1)) + 2/(30+1)]2
     */
    Decimal sc = er.multipliedBy(fastest.minus(slowest)).plus(slowest).pow(2);
    /*
     * KAMA
     * Current KAMA = Prior KAMA + SC x (Price - Prior KAMA)
     */
    Decimal priorKAMA = getValue(index - 1);
    return priorKAMA.plus(sc.multipliedBy(currentPrice.minus(priorKAMA)));
}
 
开发者ID:mdeverdelhan,项目名称:ta4j-origins,代码行数:34,代码来源:KAMAIndicator.java

示例15: calculate

import eu.verdelhan.ta4j.Decimal; //导入方法依赖的package包/类
@Override
protected Decimal calculate(int index) {
    final int startIndex = Math.max(0, index - timeFrame + 1);
    final int numberOfObservations = index - startIndex + 1;
    Decimal squaredAverage = Decimal.ZERO;
    for (int i = startIndex; i <= index; i++) {
        Decimal currentValue = indicator.getValue(i);
        Decimal highestValue = highestValueInd.getValue(i);
        Decimal percentageDrawdown = currentValue.minus(highestValue).dividedBy(highestValue).multipliedBy(Decimal.HUNDRED);
        squaredAverage = squaredAverage.plus(percentageDrawdown.pow(2));
    }
    squaredAverage = squaredAverage.dividedBy(Decimal.valueOf(numberOfObservations));
    return squaredAverage.sqrt();
}
 
开发者ID:mdeverdelhan,项目名称:ta4j-origins,代码行数:15,代码来源:UlcerIndexIndicator.java


注:本文中的eu.verdelhan.ta4j.Decimal.plus方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。