done sync us stock and change env
This commit is contained in:
@@ -31,6 +31,9 @@ public class StockNewTask {
|
|||||||
private static final String BASE_URL = "https://symbol-search.tradingview.com/symbol_search/v3/";
|
private static final String BASE_URL = "https://symbol-search.tradingview.com/symbol_search/v3/";
|
||||||
private static final String PARAMS = "?start={start}&hl=1&country=DE&lang=en&search_type=stocks&domain=production&sort_by_country=US&promo=true&exchange={exchange}";
|
private static final String PARAMS = "?start={start}&hl=1&country=DE&lang=en&search_type=stocks&domain=production&sort_by_country=US&promo=true&exchange={exchange}";
|
||||||
|
|
||||||
|
private static final String US_URL =
|
||||||
|
"https://financialmodelingprep.com/api/v3/stock-screener";
|
||||||
|
private static final String US_API_KEY = "57ZI1xeAsqHY7ag0FBuMkwQzt6TQ60dG";
|
||||||
@Autowired
|
@Autowired
|
||||||
StockRepository stockRepository;
|
StockRepository stockRepository;
|
||||||
|
|
||||||
@@ -113,4 +116,71 @@ public class StockNewTask {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Scheduled(cron = "0 0 8 * * *")
|
||||||
|
// @PostConstruct
|
||||||
|
public void fetchListStock() {
|
||||||
|
try {
|
||||||
|
List<Stock> nasdaqStocks = fetchStocksByExchange("NASDAQ");
|
||||||
|
List<Stock> nyseStocks = fetchStocksByExchange("NYSE");
|
||||||
|
|
||||||
|
List<Stock> allActiveStocks = new ArrayList<>();
|
||||||
|
allActiveStocks.addAll(nasdaqStocks);
|
||||||
|
allActiveStocks.addAll(nyseStocks);
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (!allActiveStocks.isEmpty()) {
|
||||||
|
stockRepository.saveAll(allActiveStocks);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Insert stock failed: {}", e.getMessage());
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Error fetchListStock every day: {}", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<Stock> fetchStocksByExchange(String exchange) throws Exception {
|
||||||
|
List<Stock> result = new ArrayList<>();
|
||||||
|
|
||||||
|
String url = US_URL + "?exchange=" + exchange + "&apikey=" + US_API_KEY;
|
||||||
|
|
||||||
|
Request request = new Request.Builder()
|
||||||
|
.url(url)
|
||||||
|
.addHeader("accept", "application/json")
|
||||||
|
.addHeader("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
Response response = client.newCall(request).execute();
|
||||||
|
|
||||||
|
if (!response.isSuccessful()) {
|
||||||
|
throw new RuntimeException("HTTP error code: " + response.code());
|
||||||
|
}
|
||||||
|
|
||||||
|
String body = response.body().string();
|
||||||
|
JSONArray array = new JSONArray(body);
|
||||||
|
|
||||||
|
for (int i = 0; i < array.length(); i++) {
|
||||||
|
JSONObject obj = array.getJSONObject(i);
|
||||||
|
if (!obj.optBoolean("isActivelyTrading", false) && obj.optBoolean("isEtf", false)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Stock stock = new Stock();
|
||||||
|
|
||||||
|
String stockCodeNew = obj.getString("symbol") + ":" + obj.getString("exchangeShortName");
|
||||||
|
|
||||||
|
stock.setStockName(obj.getString("companyName"));
|
||||||
|
stock.setStockCode(stockCodeNew);
|
||||||
|
stock.setStockSpell(obj.getString("symbol"));
|
||||||
|
stock.setStockType(obj.getString("exchangeShortName"));
|
||||||
|
stock.setStockGid(stockCodeNew);
|
||||||
|
stock.setStockSymbol(obj.getString("symbol"));
|
||||||
|
|
||||||
|
result.add(stock);
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("Fetched " + result.size() + " stocks for exchange: " + exchange);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ spring:
|
|||||||
show-sql: true
|
show-sql: true
|
||||||
# Redis配置
|
# Redis配置
|
||||||
redis:
|
redis:
|
||||||
host: 43.153.142.41
|
host: 43.160.197.177
|
||||||
password: a5v8b86P4mVzFlUqJV
|
password: redispass123
|
||||||
port: 30041
|
port: 6379
|
||||||
database: 1
|
database: 1
|
||||||
lettuce:
|
lettuce:
|
||||||
pool:
|
pool:
|
||||||
@@ -17,9 +17,9 @@ spring:
|
|||||||
datasource:
|
datasource:
|
||||||
stock-market:
|
stock-market:
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
url: jdbc:mysql://43.153.142.41:30040/germany_stock?useUnicode=true&characterEncoding=utf-8
|
url: jdbc:mysql://43.160.197.177:3306/germany_stock?useUnicode=true&characterEncoding=utf-8
|
||||||
username: root
|
username: root
|
||||||
password: uNejHIFQGJOUtYTmE
|
password: mysqlpass123
|
||||||
maxActive: 500
|
maxActive: 500
|
||||||
testWhileIdle: true
|
testWhileIdle: true
|
||||||
validationQuery: SELECT 1
|
validationQuery: SELECT 1
|
||||||
|
|||||||
Reference in New Issue
Block a user