fix: ewm bug and new collector

This commit is contained in:
monoid 2022-06-06 10:55:12 +09:00
parent 91f297f308
commit e86ada382c
3 changed files with 523 additions and 154 deletions

11
gen.py
View File

@ -103,6 +103,9 @@ def collect(data: DataStore, collector: OutputCollector, corp: database.KRXCorp
d60 = stock["CLOSE"].loc[::-1].rolling(window=60 d60 = stock["CLOSE"].loc[::-1].rolling(window=60
).mean().dropna().loc[::-1] ).mean().dropna().loc[::-1]
if (d60.iloc[nday+2] > d60.iloc[nday+1] and d60.iloc[nday+1] < d60.iloc[nday]):
collector.collect("60일선반등",corp, stock.index[nday])
if (isRelativeDiffLessThan(d5, d20, 0.01, nday) and if (isRelativeDiffLessThan(d5, d20, 0.01, nday) and
isRelativeDiffLessThan(d5, d60, 0.01, nday)): isRelativeDiffLessThan(d5, d60, 0.01, nday)):
collector.collect("cross 2", corp, stock.index[nday]) collector.collect("cross 2", corp, stock.index[nday])
@ -133,10 +136,10 @@ def collect(data: DataStore, collector: OutputCollector, corp: database.KRXCorp
if (isVolumeNTimes(stock, 5, nday)): if (isVolumeNTimes(stock, 5, nday)):
collector.collect("volumeX5", corp, stock.index[nday]) collector.collect("volumeX5", corp, stock.index[nday])
ewm12 = stock["CLOSE"].loc[::-1].ewm(span=12).mean().loc[::-1] ewm5 = stock["CLOSE"].loc[::-1].ewm(span=5).mean().loc[::-1]
ewm26 = stock["CLOSE"].loc[::-1].ewm(span=26).mean().loc[::-1] ewm10 = stock["CLOSE"].loc[::-1].ewm(span=10).mean().loc[::-1]
macd = (ewm12 - ewm26) macd = (ewm5 - ewm10)
signal = macd.ewm(span=9).mean() signal = macd.loc[::-1].ewm(span=4).mean().loc[::-1]
if (isMACDCrossSignal(macd, signal, nday)): if (isMACDCrossSignal(macd, signal, nday)):
collector.collect("macd", corp, stock.index[nday]) collector.collect("macd", corp, stock.index[nday])

View File

@ -35,6 +35,11 @@ d20d5의 조건에서 더해서 거래량이 이전 날짜보다 5배 증가한
"""}, """},
{name:"macd",desc: """\ {name:"macd",desc: """\
signal과 macd가 서로 교차한 시점을 찾습니다. signal이 아래로 떨어지고 signal과 macd가 서로 교차한 시점을 찾습니다. signal이 아래로 떨어지고
macd가 위로 올라가는 시점을 찾습니다. macd가 위로 올라가는 시점을 찾습니다. macd 5일선과 10일선으로 이루어지고
시그널을 구하기 위한 이동 평균은 4일입니다.
"""}, """},
{
name:"60일선반등",desc: """\
60일선이 반등하는 시점을 찾습니다."""
}
] ]

File diff suppressed because one or more lines are too long