Changed AlphaVantage to intraday price report

workbranch
asdfasdf 6 years ago
parent 58c5cbe870
commit 3629449c0f

@ -7,6 +7,7 @@ import data.DataSource;
import network.exceptions.*; import network.exceptions.*;
public class AlphaVantage extends DataSource { public class AlphaVantage extends DataSource {
public AlphaVantage() { public AlphaVantage() {
super("AlphaVantage", "https://www.alphavantage.co/query", "4MC2LL0HOQ2TFQL1"); super("AlphaVantage", "https://www.alphavantage.co/query", "4MC2LL0HOQ2TFQL1");
} }
@ -15,20 +16,23 @@ public class AlphaVantage extends DataSource {
public double[] update(String stype, String idstring) { public double[] update(String stype, String idstring) {
double[] result = {0.0, 0.0}; double[] result = {0.0, 0.0};
try { try {
String urlString = Net.urlStringBuilder(url, String urlString = Net.urlStringBuilder(url, "function", "TIME_SERIES_INTRADAY", "symbol", idstring,
"function", "GLOBAL_QUOTE", "interval", "5min",
"symbol", idstring,
"apikey", apiKey); "apikey", apiKey);
JsonObject response = StockJson.urlToJson(urlString); JsonObject response = StockJson.urlToJson(urlString);
JsonObject mainJson = StockJson.jsonInJson(response, "Global Quote"); JsonObject preJson = StockJson.jsonInJson(response, "Time Series (5min)");
result[0] = Double.parseDouble(StockJson.stringGetter(mainJson, "05. price")); JsonObject mainJson = StockJson.timeSeriesElement(preJson, 0);
result[1] = StockJson.doublePercent(mainJson, "10. change percent"); 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) { } catch (ParaMismatchException e) {
e.printStackTrace(); e.printStackTrace();
} catch (IOException e) { } catch (IOException e) {
System.out.println("Error getting data from: " + name); System.out.println("Error getting data from: " + name);
e.printStackTrace(); //e.printStackTrace();
} }
return result; return result;
} }
} }

@ -4,8 +4,11 @@ import javax.json.Json;
import javax.json.JsonObject; import javax.json.JsonObject;
import javax.json.JsonReader; import javax.json.JsonReader;
import javax.json.JsonNumber; import javax.json.JsonNumber;
import javax.json.JsonArray;
import javax.json.JsonValue;
import java.io.InputStream; import java.io.InputStream;
import java.io.IOException; import java.io.IOException;
import java.util.Iterator;
//Json library from https://docs.oracle.com/javaee/7/api/javax/json/Json.html //Json library from https://docs.oracle.com/javaee/7/api/javax/json/Json.html
public class StockJson { public class StockJson {
@ -40,4 +43,10 @@ public class StockJson {
String temp = stringGetter(jobj, name); String temp = stringGetter(jobj, name);
return Double.parseDouble(temp.split("%")[0]); 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);
}
} }

Loading…
Cancel
Save