Implement "top all" command

This commit is contained in:
2023-06-20 21:15:27 +09:00
parent 242e63366d
commit f66375d39c
4 changed files with 52 additions and 17 deletions

View File

@@ -18,6 +18,9 @@ let PreferredNowTPS: UInt64 = 10
/// Limit to request a short query
let PreferredShortsTPS: UInt64 = 5
/// Limit to request a top query
let PreferredTopTPS: UInt64 = 5
/// How many seconds does 1 day have?
let SecondsForOneDay: TimeInterval = 60 * 60 * 24
@@ -162,7 +165,7 @@ extension KissConsole {
print("wrote \(fileUrl.lastPathComponent) with \(candles.count)")
return true
} catch {
print("\(error)")
print(error)
return false
}
}
@@ -185,7 +188,7 @@ extension KissConsole {
let result = try await account!.getHolyday(baseDate: day)
do {
var olds = try [HolidyResult.OutputDetail].readCsv(fromFile: KissConsole.holidayUrl)
let olds = try [HolidyResult.OutputDetail].readCsv(fromFile: KissConsole.holidayUrl)
if let output = result.output {
/// Merge current holidays and new holidays
var recents = output.map { $0 }

View File

@@ -38,6 +38,7 @@ class KissConsole {
//
case top = "top"
case topAll = "top all"
//
case buy = "buy"
@@ -91,7 +92,7 @@ class KissConsole {
switch self {
case .quit, .loginMock, .loginReal:
return false
case .logout, .top, .buy, .buyCheck, .sell, .cancel, .modify:
case .logout, .top, .topAll, .buy, .buyCheck, .sell, .cancel, .modify:
return true
case .openBag:
return true
@@ -206,6 +207,7 @@ class KissConsole {
case .loginReal: await onLogin(isMock: false)
case .logout: await onLogout()
case .top: await onTop(args)
case .topAll: onTopAll()
case .buy: await onBuy(args)
case .buyCheck: await onBuyCheck(args)
@@ -323,7 +325,7 @@ extension KissConsole {
print("resume \(isMock ? "mock login": "real login") expired at \(expiredAt)")
}
} catch {
print("\(error)")
print(error)
}
}
@@ -357,7 +359,7 @@ extension KissConsole {
print("Success")
}
} catch {
print("\(error)")
print(error)
}
}
@@ -369,7 +371,7 @@ extension KissConsole {
account = nil
print("Success")
} catch {
print("\(error)")
print(error)
}
}
@@ -402,11 +404,41 @@ extension KissConsole {
try output.writeCsv(toFile: fileUrl, localized: localized)
print("wrote \(fileUrl.lastPathComponent) with \(output.count)")
} catch {
print("\(error)")
print(error)
}
}
private func onTopAll() {
let belongs: [BelongClassCode] = [.averageVolume, .volumeIncreaseRate, .averageVolumeTurnoverRate, .transactionValue, .averageTransactionValueTurnoverRate]
for belong in belongs {
let option = RankingOption(divisionClass: .all, belongClass: belong)
let semaphore = DispatchSemaphore(value: 0)
Task {
do {
let curDate = Date()
let rank = try await account!.getVolumeRanking(option: option)
guard let output = rank.output else {
print("Error \(rank.messageCode) \(rank.message)")
return
}
let fileUrl = KissConsole.topProductsUrl(belong, date: curDate)
try output.writeCsv(toFile: fileUrl, localized: localized)
print("wrote \(fileUrl.lastPathComponent) with \(output.count)")
try await Task.sleep(nanoseconds: 1_000_000_000 / PreferredTopTPS)
} catch {
print(error)
}
semaphore.signal()
}
semaphore.wait()
}
print("FINISHED")
}
private func onBuy(_ args: [String]) async {
guard args.count == 3 else {
print("Missing buy paramters: buy (PNO) (PRICE) (QUANTITY)")
@@ -440,7 +472,7 @@ extension KissConsole {
print("Failed \(result.resultCode) \(result.messageCode) \(result.message)")
}
} catch {
print("\(error)")
print(error)
}
}
@@ -469,7 +501,7 @@ extension KissConsole {
print("Failed \(result.resultCode) \(result.messageCode) \(result.message)")
}
} catch {
print("\(error)")
print(error)
}
}
@@ -507,7 +539,7 @@ extension KissConsole {
print("Failed \(result.resultCode) \(result.messageCode) \(result.message)")
}
} catch {
print("\(error)")
print(error)
}
}
@@ -544,7 +576,7 @@ extension KissConsole {
print("Failed \(result.resultCode) \(result.messageCode) \(result.message)")
}
} catch {
print("\(error)")
print(error)
}
}
@@ -576,7 +608,7 @@ extension KissConsole {
print("wrote \(fileUrl.lastPathComponent) with \(amounts.count)")
}
} catch {
print("\(error)")
print(error)
}
}
@@ -915,7 +947,7 @@ extension KissConsole {
}
}
} catch {
print("\(error)")
print(error)
}
return shopItems
}

View File

@@ -31,7 +31,7 @@ private func test_login_get_volume_ranking() async {
///
credential = try KissCredential(isMock: isMock)
} catch {
print("\(error)")
print(error)
return
}
@@ -44,7 +44,7 @@ private func test_login_get_volume_ranking() async {
print("\(result)")
}
} catch {
print("\(error)")
print(error)
return
}
}
@@ -62,7 +62,7 @@ private func test_json_result() {
print("\(result)")
}
catch {
print("\(error)")
print(error)
}
}