From 3629449c0f95c9680659b58f63a182958490513d Mon Sep 17 00:00:00 2001 From: asdfasdf Date: Thu, 21 Nov 2019 22:00:39 -0800 Subject: [PATCH] Changed AlphaVantage to intraday price report --- src/main/network/AlphaVantage.java | 18 +++++++++++------- src/main/network/StockJson.java | 9 +++++++++ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/main/network/AlphaVantage.java b/src/main/network/AlphaVantage.java index 1fa8429..712d0c3 100644 --- a/src/main/network/AlphaVantage.java +++ b/src/main/network/AlphaVantage.java @@ -7,6 +7,7 @@ import data.DataSource; import network.exceptions.*; public class AlphaVantage extends DataSource { + public AlphaVantage() { super("AlphaVantage", "https://www.alphavantage.co/query", "4MC2LL0HOQ2TFQL1"); } @@ -15,20 +16,23 @@ public class AlphaVantage extends DataSource { public double[] update(String stype, String idstring) { double[] result = {0.0, 0.0}; try { - String urlString = Net.urlStringBuilder(url, - "function", "GLOBAL_QUOTE", - "symbol", idstring, + String urlString = Net.urlStringBuilder(url, "function", "TIME_SERIES_INTRADAY", "symbol", idstring, + "interval", "5min", "apikey", apiKey); JsonObject response = StockJson.urlToJson(urlString); - JsonObject mainJson = StockJson.jsonInJson(response, "Global Quote"); - result[0] = Double.parseDouble(StockJson.stringGetter(mainJson, "05. price")); - result[1] = StockJson.doublePercent(mainJson, "10. change percent"); + JsonObject preJson = StockJson.jsonInJson(response, "Time Series (5min)"); + JsonObject mainJson = StockJson.timeSeriesElement(preJson, 0); + System.out.print(mainJson); + result[0] = Double.parseDouble(StockJson.stringGetter(mainJson, "4. close")); + Double open = Double.parseDouble(StockJson.stringGetter(mainJson, "1. open")); + result[1] = (result[0] - open) / open; } catch (ParaMismatchException e) { e.printStackTrace(); } catch (IOException e) { System.out.println("Error getting data from: " + name); - e.printStackTrace(); + //e.printStackTrace(); } return result; } + } diff --git a/src/main/network/StockJson.java b/src/main/network/StockJson.java index 1649cc4..61254b6 100644 --- a/src/main/network/StockJson.java +++ b/src/main/network/StockJson.java @@ -4,8 +4,11 @@ import javax.json.Json; import javax.json.JsonObject; import javax.json.JsonReader; import javax.json.JsonNumber; +import javax.json.JsonArray; +import javax.json.JsonValue; import java.io.InputStream; import java.io.IOException; +import java.util.Iterator; //Json library from https://docs.oracle.com/javaee/7/api/javax/json/Json.html public class StockJson { @@ -40,4 +43,10 @@ public class StockJson { String temp = stringGetter(jobj, name); return Double.parseDouble(temp.split("%")[0]); } + + // From https://stackoverflow.com/questions/33531041/jsonobject-get-value-of-first-node-regardless-of-name + public static JsonObject timeSeriesElement(JsonObject jobj, int index) { + String name = (String) jobj.keySet().toArray()[index]; + return jsonInJson(jobj, name); + } }