Search in sources :

Example 11 with IntervalPrice

use of io.altanalytics.domain.currency.IntervalPrice in project bibot by alfintech.

the class AnalyticsRecorder method tick.

@Scheduled(cron = "${recorder.analytics.schedule}")
public void tick() throws Exception {
    if (active) {
        List<CurrencyPair> currencyPairs = CurrencyPairUtil.constructCurrencyPairs(tradeCurrencies, baseCurrencies);
        Date analyticsEndDate = DateUtil.now();
        Date analyticsStartDate = DateUtil.shiftToPast(analyticsEndDate, interval);
        List<Analytic> analytics = new ArrayList<Analytic>();
        for (CurrencyPair currencyPair : currencyPairs) {
            // Volume calcs
            List<IntervalPrice> intervalPrices = reader.getIntervalPrices(analyticsStartDate, analyticsEndDate, currencyPair);
            BigDecimal intervalVolume = VolumeCalculator.cumulative(intervalPrices);
            BigDecimal dayVolume = intervalPrices.get(0).getDayVolume();
            BigDecimal dayAverageVolume = VolumeCalculator.average(dayVolume, interval);
            BigDecimal percentageVolume = BigDecimalUtil.multiply(BigDecimalUtil.divide(intervalVolume, dayAverageVolume), new BigDecimal(100));
            // ATH % calcs
            BigDecimal allTimeHigh = reader.getAllTimeHigh(currencyPair).getClose();
            BigDecimal currentPrice = intervalPrices.get(intervalPrices.size() - 1).getClose();
            BigDecimal percentageATH = BigDecimalUtil.divide(currentPrice, allTimeHigh);
            Analytic analytic = new Analytic(currencyPair, intervalVolume, dayAverageVolume, percentageVolume, percentageATH, analyticsEndDate);
            analytics.add(analytic);
        }
        publisher.publishAnalytics(analytics);
    }
}
Also used : IntervalPrice(io.altanalytics.domain.currency.IntervalPrice) Analytic(io.altanalytics.domain.currency.Analytic) ArrayList(java.util.ArrayList) Date(java.util.Date) BigDecimal(java.math.BigDecimal) CurrencyPair(io.altanalytics.domain.currency.CurrencyPair) Scheduled(org.springframework.scheduling.annotation.Scheduled)

Aggregations

IntervalPrice (io.altanalytics.domain.currency.IntervalPrice)11 Date (java.util.Date)7 ArrayList (java.util.ArrayList)5 BigDecimal (java.math.BigDecimal)4 CurrencyPair (io.altanalytics.domain.currency.CurrencyPair)3 IntervalPriceRequest (io.altanalytics.domain.currency.IntervalPriceRequest)3 JSONObject (org.json.simple.JSONObject)2 JSONParser (org.json.simple.parser.JSONParser)2 Scheduled (org.springframework.scheduling.annotation.Scheduled)2 Analytic (io.altanalytics.domain.currency.Analytic)1 IOException (java.io.IOException)1 DateFormat (java.text.DateFormat)1 ParseException (java.text.ParseException)1 SimpleDateFormat (java.text.SimpleDateFormat)1 ExecutorService (java.util.concurrent.ExecutorService)1 ForkJoinPool (java.util.concurrent.ForkJoinPool)1 Future (java.util.concurrent.Future)1 BulkRequestBuilder (org.elasticsearch.action.bulk.BulkRequestBuilder)1 BulkResponse (org.elasticsearch.action.bulk.BulkResponse)1 SearchResponse (org.elasticsearch.action.search.SearchResponse)1