@@ -0,0 +1,1134 @@
+package com.jbooktrader.indicator.price;%0A%0Aimport java.util.List;%0A%0Aimport com.jbooktrader.platform.indicator.Indicator;%0Aimport com.jbooktrader.platform.marketbook.MarketSnapshot;%0A%0Apublic class PriceNoiseAdjustedRSI extends Indicator %7B%0A    private final int periodLength;%0A    %0A    public PriceNoiseAdjustedRSI(int periodLength) %7B%0A        this.periodLength = periodLength;%0A    %7D%0A    %0A    @Override%0A    public double calculate() %7B%0A        List%3CMarketSnapshot%3E marketSnapshots = marketBook.getAll();%0A        int mbSize = marketSnapshots.size();%0A        int lastBar = mbSize - 1;%0A        int firstBar = lastBar - periodLength + 1;%0A%0A        double gains = 0, losses = 0;%0A%0A        for (int bar = firstBar + 1; bar %3C= lastBar; bar++) %7B%0A            double change = marketSnapshots.get(bar).getMidPrice() - marketSnapshots.get(bar - 1).getMidPrice();%0A            gains += Math.max(0, change);%0A            losses += Math.max(0, -change);%0A        %7D%0A%0A        double change = gains + losses;%0A%0A        double rsi = (change == 0) ? 50 : (100 * gains / change);%0A        value = (rsi - 50) * Math.sqrt(periodLength - 1);%0A%0A        return value;%0A    %7D%0A%0A%7D%0A

add PriceNoiseAdjustedRSI indicator