Implement "candle all resume" command
This commit is contained in:
@@ -199,7 +199,7 @@ class KissConsole {
|
||||
|
||||
case .now: await onNow(args)
|
||||
case .candle: await onCandle(args)
|
||||
case .candleAll: onCancleAll()
|
||||
case .candleAll: onCancleAll(args)
|
||||
case .candleDay: onCandleDay(args)
|
||||
case .candleWeek: onCandleWeek(args)
|
||||
case .candleValidate: onCandleValidate(args)
|
||||
@@ -601,7 +601,18 @@ extension KissConsole {
|
||||
}
|
||||
|
||||
|
||||
private func onCancleAll() {
|
||||
private func onCancleAll(_ args: [String]) {
|
||||
let semaphore = DispatchSemaphore(value: 0)
|
||||
Task {
|
||||
await KissContext.shared.update(candleResuming: false)
|
||||
if args.count == 1, args[0] == "resume" {
|
||||
await KissContext.shared.update(candleResuming: true)
|
||||
}
|
||||
semaphore.signal()
|
||||
}
|
||||
semaphore.wait()
|
||||
|
||||
|
||||
let all = getAllProducts()
|
||||
for item in all {
|
||||
let semaphore = DispatchSemaphore(value: 0)
|
||||
@@ -612,6 +623,16 @@ extension KissConsole {
|
||||
return
|
||||
}
|
||||
|
||||
if await KissContext.shared.isCandleResuming {
|
||||
let curDate = Date()
|
||||
let url = KissConsole.candleFileUrl(productNo: item.shortCode, period: .minute, day: curDate.yyyyMMdd)
|
||||
let r = validateCsv(filePriod: .minute, url: url)
|
||||
switch r {
|
||||
case .ok, .invalidFileName: return
|
||||
default: break
|
||||
}
|
||||
}
|
||||
|
||||
let success = await getCandle(productNo: item.shortCode)
|
||||
print("DONE \(success) \(item.shortCode)")
|
||||
semaphore.signal()
|
||||
@@ -721,13 +742,7 @@ extension KissConsole {
|
||||
var lastTime = Date.appTime
|
||||
for (index, url) in urls.enumerated() {
|
||||
|
||||
let r: CandleValidation
|
||||
switch filePriod {
|
||||
case .minute: r = KissConsole.validateCandleMinute(url)
|
||||
case .day: r = KissConsole.validateCandleDay(url)
|
||||
case .weak: r = KissConsole.validateCandleWeek(url)
|
||||
}
|
||||
|
||||
let r = validateCsv(filePriod: filePriod, url: url)
|
||||
switch r {
|
||||
case .ok, .invalidFileName:
|
||||
break
|
||||
@@ -746,6 +761,15 @@ extension KissConsole {
|
||||
}
|
||||
|
||||
|
||||
func validateCsv(filePriod: CandleFilePeriod, url: URL) -> CandleValidation {
|
||||
switch filePriod {
|
||||
case .minute: return KissConsole.validateCandleMinute(url)
|
||||
case .day: return KissConsole.validateCandleDay(url)
|
||||
case .weak: return KissConsole.validateCandleWeek(url)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private func onCandleValidate(_ args: [String]) {
|
||||
let period: CandleFilePeriod?
|
||||
if args.count == 1 {
|
||||
|
||||
@@ -13,6 +13,7 @@ actor KissContext {
|
||||
|
||||
private(set) var targetDate: Date = Date(timeIntervalSince1970: 0)
|
||||
private(set) var isHoliday: Bool = false
|
||||
private(set) var isCandleResuming: Bool = false
|
||||
|
||||
private init() { }
|
||||
|
||||
@@ -20,4 +21,8 @@ actor KissContext {
|
||||
self.isHoliday = isHolyday
|
||||
self.targetDate = targetDate
|
||||
}
|
||||
|
||||
func update(candleResuming: Bool) {
|
||||
self.isCandleResuming = candleResuming
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,8 +7,11 @@ KissMeMatrix 는 다양한 주식의 지표 집합(index set) 통해서 교집
|
||||
* Index Tool 들을 조합하여 모델을 만들고, 구동한 뒤에 INPUT / PROCESSING / OUTPUT 레이어를 설계
|
||||
* 각 레이어별로 디버깅 환경 구성
|
||||
* 각 레이어별로 시뮬레이션을 진행할 수 있도록 구성
|
||||
* INDEX SET
|
||||
* 종목 + 추가되는 정보들
|
||||
* score (+값: 매수희망, -값: 매도희망, 교집합을 작성할 때 매수/매도의 성향에 영향)
|
||||
* INPUT
|
||||
* 지표 데이터들
|
||||
* 지표 데이터들(ARRAY OF INDEX SET)
|
||||
* 지표 데이터는 각종 csv 에서 데이터를 수집.
|
||||
* PROCESSING
|
||||
* model.json 에 기술된 내용으로 지표 데이터를 수집하고 정리.
|
||||
|
||||
Reference in New Issue
Block a user